From 0d10d42442aefc11fdb2c394cf4e5d2eb74495c2 Mon Sep 17 00:00:00 2001 From: allanice001 Date: Sun, 2 Nov 2025 13:19:30 +0000 Subject: [PATCH] feat: sdk migration in progress --- .gitignore | 136 + Makefile | 277 + cmd/encryption.go | 83 + cmd/keys_generate.go | 81 + cmd/root.go | 33 + cmd/serve.go | 94 + cmd/version.go | 20 + docker-compose.yml | 52 + docs/docs.go | 26 + docs/efs.go | 9 + docs/swagger.json | 1 + docs/swagger.yaml | 1731 ++++++ go.mod | 70 + go.sum | 236 + internal/api/httpmiddleware/auth.go | 161 + internal/api/httpmiddleware/context.go | 45 + internal/api/httpmiddleware/rbac.go | 45 + internal/api/mw_logger.go | 35 + internal/api/mw_security.go | 63 + internal/api/routes.go | 195 + internal/api/utils.go | 45 + internal/app/runtime.go | 46 + internal/auth/hash.go | 38 + internal/auth/issue.go | 42 + internal/auth/jwks_export.go | 71 + internal/auth/jwt_issue.go | 55 + internal/auth/jwt_signer.go | 138 + internal/auth/jwt_validate.go | 56 + internal/auth/refresh.go | 105 + internal/auth/validate_keys.go | 88 + internal/config/config.go | 194 + internal/db/db.go | 17 + internal/db/migrate.go | 25 + internal/handlers/auth.go | 477 ++ internal/handlers/dto/auth.go | 24 + internal/handlers/dto/jwks.go | 19 + internal/handlers/dto/servers.go | 37 + internal/handlers/dto/ssh.go | 38 + internal/handlers/dto/taints.go | 22 + internal/handlers/jwks.go | 56 + internal/handlers/me.go | 120 + internal/handlers/me_keys.go | 175 + internal/handlers/orgs.go | 647 +++ internal/handlers/servers.go | 388 ++ internal/handlers/ssh.go | 553 ++ internal/handlers/taints.go | 335 ++ internal/keys/base64util.go | 35 + internal/keys/export.go | 5 + internal/keys/keys.go | 149 + internal/models/account.go | 23 + internal/models/api_key.go | 23 + internal/models/master_key.go | 15 + internal/models/membership.go | 18 + internal/models/node_pool.go | 21 + internal/models/organization-key.go | 20 + internal/models/organization.go | 16 + internal/models/refresh_token.go | 17 + internal/models/server.go | 36 + internal/models/signing_key.go | 22 + internal/models/ssh-key.go | 21 + internal/models/taint.go | 18 + internal/models/user.go | 18 + internal/models/user_email.go | 19 + internal/utils/crypto.go | 85 + internal/utils/helpers.go | 27 + internal/utils/keys.go | 107 + internal/utils/org-crypto.go | 44 + internal/version/version.go | 36 + internal/web/devproxy.go | 16 + internal/web/dist/assets/index-BvUUUOIq.css | 2 + .../web/dist/assets/index-BvUUUOIq.css.br | Bin 0 -> 4169 bytes .../web/dist/assets/index-BvUUUOIq.css.gz | Bin 0 -> 4798 bytes internal/web/dist/assets/index-CFwByDWI.js | 10 + internal/web/dist/assets/index-CFwByDWI.js.br | Bin 0 -> 75872 bytes internal/web/dist/assets/index-CFwByDWI.js.gz | Bin 0 -> 87325 bytes .../web/dist/assets/index-CFwByDWI.js.map | 1 + internal/web/dist/assets/react-BZmgNp9X.js | 4 + internal/web/dist/assets/react-BZmgNp9X.js.br | Bin 0 -> 13967 bytes internal/web/dist/assets/react-BZmgNp9X.js.gz | Bin 0 -> 15554 bytes .../web/dist/assets/react-BZmgNp9X.js.map | 1 + internal/web/dist/index.html | 15 + internal/web/dist/index.html.br | Bin 0 -> 212 bytes internal/web/dist/index.html.gz | Bin 0 -> 326 bytes internal/web/dist/vite.svg | 1 + internal/web/static.go | 239 + main.go | 37 + openapitools.json | 7 + postgres/Dockerfile | 10 + sdk/go/.gitignore | 24 + sdk/go/.openapi-generator-ignore | 23 + sdk/go/.openapi-generator/FILES | 86 + sdk/go/.openapi-generator/VERSION | 1 + sdk/go/.travis.yml | 8 + sdk/go/README.md | 261 + sdk/go/api/openapi.yaml | 2086 ++++++++ sdk/go/api_auth.go | 537 ++ sdk/go/api_me.go | 286 + sdk/go/api_me_api_keys.go | 393 ++ sdk/go/api_orgs.go | 1476 ++++++ sdk/go/api_servers.go | 1065 ++++ sdk/go/api_ssh.go | 1055 ++++ sdk/go/api_taints.go | 1073 ++++ sdk/go/client.go | 673 +++ sdk/go/configuration.go | 221 + sdk/go/docs/AuthAPI.md | 338 ++ sdk/go/docs/DtoAuthStartResponse.md | 56 + sdk/go/docs/DtoCreateSSHRequest.md | 134 + sdk/go/docs/DtoCreateServerRequest.md | 212 + sdk/go/docs/DtoCreateTaintRequest.md | 108 + sdk/go/docs/DtoJWK.md | 212 + sdk/go/docs/DtoJWKS.md | 56 + sdk/go/docs/DtoLogoutRequest.md | 56 + sdk/go/docs/DtoRefreshRequest.md | 56 + sdk/go/docs/DtoServerResponse.md | 316 ++ sdk/go/docs/DtoSshResponse.md | 212 + sdk/go/docs/DtoSshRevealResponse.md | 238 + sdk/go/docs/DtoTaintResponse.md | 134 + sdk/go/docs/DtoTokenPair.md | 134 + sdk/go/docs/DtoUpdateServerRequest.md | 212 + sdk/go/docs/DtoUpdateTaintRequest.md | 108 + sdk/go/docs/HandlersCreateUserKeyRequest.md | 82 + sdk/go/docs/HandlersMeResponse.md | 264 + sdk/go/docs/HandlersMemberOut.md | 108 + sdk/go/docs/HandlersMemberUpsertReq.md | 82 + sdk/go/docs/HandlersOrgCreateReq.md | 82 + sdk/go/docs/HandlersOrgKeyCreateReq.md | 82 + sdk/go/docs/HandlersOrgKeyCreateResp.md | 212 + sdk/go/docs/HandlersOrgUpdateReq.md | 82 + sdk/go/docs/HandlersUpdateMeRequest.md | 56 + sdk/go/docs/HandlersUserAPIKeyOut.md | 212 + sdk/go/docs/MeAPI.md | 133 + sdk/go/docs/MeAPIKeysAPI.md | 202 + sdk/go/docs/ModelsAPIKey.md | 316 ++ sdk/go/docs/ModelsOrganization.md | 160 + sdk/go/docs/ModelsUser.md | 212 + sdk/go/docs/ModelsUserEmail.md | 238 + sdk/go/docs/OrgsAPI.md | 760 +++ sdk/go/docs/ServersAPI.md | 369 ++ sdk/go/docs/SshAPI.md | 367 ++ sdk/go/docs/TaintsAPI.md | 369 ++ sdk/go/docs/UtilsErrorResponse.md | 82 + sdk/go/git_push.sh | 57 + sdk/go/go.mod | 6 + sdk/go/go.sum | 11 + sdk/go/model_dto_auth_start_response.go | 124 + sdk/go/model_dto_create_server_request.go | 340 ++ sdk/go/model_dto_create_ssh_request.go | 234 + sdk/go/model_dto_create_taint_request.go | 196 + sdk/go/model_dto_jwk.go | 340 ++ sdk/go/model_dto_jwks.go | 124 + sdk/go/model_dto_logout_request.go | 124 + sdk/go/model_dto_refresh_request.go | 124 + sdk/go/model_dto_server_response.go | 484 ++ sdk/go/model_dto_ssh_response.go | 340 ++ sdk/go/model_dto_ssh_reveal_response.go | 376 ++ sdk/go/model_dto_taint_response.go | 232 + sdk/go/model_dto_token_pair.go | 232 + sdk/go/model_dto_update_server_request.go | 340 ++ sdk/go/model_dto_update_taint_request.go | 196 + .../model_handlers_create_user_key_request.go | 161 + sdk/go/model_handlers_me_response.go | 414 ++ sdk/go/model_handlers_member_out.go | 197 + sdk/go/model_handlers_member_upsert_req.go | 160 + sdk/go/model_handlers_org_create_req.go | 160 + sdk/go/model_handlers_org_key_create_req.go | 160 + sdk/go/model_handlers_org_key_create_resp.go | 343 ++ sdk/go/model_handlers_org_update_req.go | 160 + sdk/go/model_handlers_update_me_request.go | 124 + sdk/go/model_handlers_user_api_key_out.go | 342 ++ sdk/go/model_models_api_key.go | 485 ++ sdk/go/model_models_organization.go | 270 + sdk/go/model_models_user.go | 342 ++ sdk/go/model_models_user_email.go | 378 ++ sdk/go/model_utils_error_response.go | 162 + sdk/go/response.go | 47 + sdk/go/test/api_auth_test.go | 37 + sdk/go/test/api_me_api_keys_test.go | 62 + sdk/go/test/api_me_test.go | 37 + sdk/go/test/api_orgs_test.go | 49 + sdk/go/test/api_servers_test.go | 91 + sdk/go/test/api_ssh_test.go | 91 + sdk/go/test/api_taints_test.go | 91 + sdk/go/utils.go | 361 ++ sdk/ts/.gitignore | 4 + sdk/ts/.npmignore | 1 + sdk/ts/.openapi-generator-ignore | 23 + sdk/ts/.openapi-generator/FILES | 85 + sdk/ts/.openapi-generator/VERSION | 1 + sdk/ts/README.md | 196 + sdk/ts/docs/AuthApi.md | 314 ++ sdk/ts/docs/DtoAuthStartResponse.md | 30 + sdk/ts/docs/DtoCreateSSHRequest.md | 36 + sdk/ts/docs/DtoCreateServerRequest.md | 42 + sdk/ts/docs/DtoCreateTaintRequest.md | 34 + sdk/ts/docs/DtoJWK.md | 42 + sdk/ts/docs/DtoJWKS.md | 30 + sdk/ts/docs/DtoLogoutRequest.md | 30 + sdk/ts/docs/DtoRefreshRequest.md | 30 + sdk/ts/docs/DtoServerResponse.md | 50 + sdk/ts/docs/DtoSshResponse.md | 42 + sdk/ts/docs/DtoSshRevealResponse.md | 44 + sdk/ts/docs/DtoTaintResponse.md | 36 + sdk/ts/docs/DtoTokenPair.md | 36 + sdk/ts/docs/DtoUpdateServerRequest.md | 42 + sdk/ts/docs/DtoUpdateTaintRequest.md | 34 + sdk/ts/docs/HandlersCreateUserKeyRequest.md | 32 + sdk/ts/docs/HandlersMeResponse.md | 46 + sdk/ts/docs/HandlersMemberOut.md | 34 + sdk/ts/docs/HandlersMemberUpsertReq.md | 32 + sdk/ts/docs/HandlersOrgCreateReq.md | 32 + sdk/ts/docs/HandlersOrgKeyCreateReq.md | 32 + sdk/ts/docs/HandlersOrgKeyCreateResp.md | 42 + sdk/ts/docs/HandlersOrgUpdateReq.md | 32 + sdk/ts/docs/HandlersUpdateMeRequest.md | 30 + sdk/ts/docs/HandlersUserAPIKeyOut.md | 42 + sdk/ts/docs/MeAPIKeysApi.md | 203 + sdk/ts/docs/MeApi.md | 136 + sdk/ts/docs/ModelsAPIKey.md | 50 + sdk/ts/docs/ModelsOrganization.md | 38 + sdk/ts/docs/ModelsUser.md | 42 + sdk/ts/docs/ModelsUserEmail.md | 44 + sdk/ts/docs/OrgsApi.md | 757 +++ sdk/ts/docs/ServersApi.md | 409 ++ sdk/ts/docs/SshApi.md | 403 ++ sdk/ts/docs/TaintsApi.md | 410 ++ sdk/ts/docs/UtilsErrorResponse.md | 32 + sdk/ts/package.json | 21 + sdk/ts/src/apis/AuthApi.ts | 294 ++ sdk/ts/src/apis/MeAPIKeysApi.ts | 201 + sdk/ts/src/apis/MeApi.ts | 143 + sdk/ts/src/apis/OrgsApi.ts | 742 +++ sdk/ts/src/apis/ServersApi.ts | 435 ++ sdk/ts/src/apis/SshApi.ts | 451 ++ sdk/ts/src/apis/TaintsApi.ts | 435 ++ sdk/ts/src/apis/index.ts | 9 + sdk/ts/src/index.ts | 5 + sdk/ts/src/models/DtoAuthStartResponse.ts | 70 + sdk/ts/src/models/DtoCreateSSHRequest.ts | 94 + sdk/ts/src/models/DtoCreateServerRequest.ts | 126 + sdk/ts/src/models/DtoCreateTaintRequest.ts | 88 + sdk/ts/src/models/DtoJWK.ts | 116 + sdk/ts/src/models/DtoJWKS.ts | 82 + sdk/ts/src/models/DtoLogoutRequest.ts | 71 + sdk/ts/src/models/DtoRefreshRequest.ts | 71 + sdk/ts/src/models/DtoServerResponse.ts | 155 + sdk/ts/src/models/DtoSshResponse.ts | 119 + sdk/ts/src/models/DtoSshRevealResponse.ts | 127 + sdk/ts/src/models/DtoTaintResponse.ts | 94 + sdk/ts/src/models/DtoTokenPair.ts | 94 + sdk/ts/src/models/DtoUpdateServerRequest.ts | 126 + sdk/ts/src/models/DtoUpdateTaintRequest.ts | 88 + .../models/HandlersCreateUserKeyRequest.ts | 83 + sdk/ts/src/models/HandlersMeResponse.ts | 171 + sdk/ts/src/models/HandlersMemberOut.ts | 86 + sdk/ts/src/models/HandlersMemberUpsertReq.ts | 82 + sdk/ts/src/models/HandlersOrgCreateReq.ts | 78 + sdk/ts/src/models/HandlersOrgKeyCreateReq.ts | 83 + sdk/ts/src/models/HandlersOrgKeyCreateResp.ts | 122 + sdk/ts/src/models/HandlersOrgUpdateReq.ts | 78 + sdk/ts/src/models/HandlersUpdateMeRequest.ts | 75 + sdk/ts/src/models/HandlersUserAPIKeyOut.ts | 121 + sdk/ts/src/models/ModelsAPIKey.ts | 164 + sdk/ts/src/models/ModelsOrganization.ts | 110 + sdk/ts/src/models/ModelsUser.ts | 126 + sdk/ts/src/models/ModelsUserEmail.ts | 142 + sdk/ts/src/models/UtilsErrorResponse.ts | 80 + sdk/ts/src/models/index.ts | 32 + sdk/ts/src/runtime.ts | 530 ++ sdk/ts/tsconfig.esm.json | 7 + sdk/ts/tsconfig.json | 11 + terraform-provider-autoglue/Makefile | 23 + terraform-provider-autoglue/go.mod | 36 + terraform-provider-autoglue/go.sum | 101 + .../internal/provider/client.go | 78 + .../internal/provider/config.go | 99 + .../internal/provider/datasource_ssh.go | 121 + .../internal/provider/http_err.go | 20 + .../internal/provider/num.go | 14 + .../internal/provider/provider.go | 58 + .../internal/provider/resource_ssh.go | 230 + terraform-provider-autoglue/main.go | 25 + terraform/envs/dev/.terraform.lock.hcl | 63 + .../envs/dev/.terraform/modules/modules.json | 1 + .../autoglue/autoglue/0.0.1/darwin_arm64 | 1 + .../autoglue/autoglue/0.0.1/darwin_arm64.lock | 0 .../hashicorp/http/3.5.0/darwin_arm64.lock | 0 .../http/3.5.0/darwin_arm64/CHANGELOG.md | 178 + .../hashicorp/http/3.5.0/darwin_arm64/LICENSE | 375 ++ .../http/3.5.0/darwin_arm64/README.md | 113 + .../darwin_arm64/terraform-provider-http | Bin 0 -> 15981538 bytes .../hashicorp/local/2.5.3/darwin_arm64.lock | 0 .../local/2.5.3/darwin_arm64/CHANGELOG.md | 185 + .../local/2.5.3/darwin_arm64/LICENSE | 375 ++ .../local/2.5.3/darwin_arm64/README.md | 125 + .../darwin_arm64/terraform-provider-local | Bin 0 -> 15386306 bytes .../hashicorp/null/3.2.4/darwin_arm64.lock | 0 .../null/3.2.4/darwin_arm64/CHANGELOG.md | 92 + .../hashicorp/null/3.2.4/darwin_arm64/LICENSE | 375 ++ .../null/3.2.4/darwin_arm64/README.md | 113 + .../darwin_arm64/terraform-provider-null | Bin 0 -> 15302914 bytes terraform/envs/dev/main.tf | 29 + terraform/envs/dev/providers.tf | 5 + terraform/envs/dev/terraform.tfstate | 1 + terraform/envs/dev/terraform.tfstate.backup | 1 + terraform/envs/dev/terraform.tfvars | 23 + terraform/envs/dev/variables.tf | 30 + terraform/envs/dev/versions.tf | 18 + terraform/modules/ssh-key/main.tf | 68 + terraform/modules/ssh-key/outputs.tf | 12 + terraform/modules/ssh-key/variables.tf | 47 + terraform/modules/ssh-key/versions.tf | 18 + ui/.gitignore | 24 + ui/.prettierignore | 1 + ui/.prettierrc.json | 37 + ui/README.md | 73 + ui/components.json | 22 + ui/eslint.config.js | 23 + ui/index.html | 13 + ui/package.json | 85 + ui/public/vite.svg | 1 + ui/src/App.tsx | 34 + ui/src/api/me.ts | 40 + ui/src/api/servers.ts | 28 + ui/src/api/ssh.ts | 75 + ui/src/api/taints.ts | 23 + ui/src/api/with-refresh.ts | 62 + ui/src/auth/org.ts | 29 + ui/src/auth/store.ts | 112 + ui/src/auth/use-auth.ts | 17 + ui/src/components/protected-route.tsx | 12 + ui/src/components/ui/accordion.tsx | 62 + ui/src/components/ui/alert-dialog.tsx | 133 + ui/src/components/ui/alert.tsx | 60 + ui/src/components/ui/aspect-ratio.tsx | 9 + ui/src/components/ui/avatar.tsx | 39 + ui/src/components/ui/badge.tsx | 37 + ui/src/components/ui/breadcrumb.tsx | 102 + ui/src/components/ui/button-group.tsx | 78 + ui/src/components/ui/button.tsx | 58 + ui/src/components/ui/calendar.tsx | 180 + ui/src/components/ui/card.tsx | 75 + ui/src/components/ui/carousel.tsx | 221 + ui/src/components/ui/chart.tsx | 326 ++ ui/src/components/ui/checkbox.tsx | 29 + ui/src/components/ui/collapsible.tsx | 19 + ui/src/components/ui/command.tsx | 159 + ui/src/components/ui/context-menu.tsx | 224 + ui/src/components/ui/dialog.tsx | 127 + ui/src/components/ui/drawer.tsx | 124 + ui/src/components/ui/dropdown-menu.tsx | 226 + ui/src/components/ui/empty.tsx | 94 + ui/src/components/ui/field.tsx | 232 + ui/src/components/ui/form.tsx | 152 + ui/src/components/ui/hover-card.tsx | 38 + ui/src/components/ui/input-group.tsx | 158 + ui/src/components/ui/input-otp.tsx | 68 + ui/src/components/ui/input.tsx | 21 + ui/src/components/ui/item.tsx | 172 + ui/src/components/ui/kbd.tsx | 28 + ui/src/components/ui/label.tsx | 21 + ui/src/components/ui/menubar.tsx | 250 + ui/src/components/ui/navigation-menu.tsx | 161 + ui/src/components/ui/pagination.tsx | 106 + ui/src/components/ui/popover.tsx | 42 + ui/src/components/ui/progress.tsx | 26 + ui/src/components/ui/radio-group.tsx | 45 + ui/src/components/ui/resizable.tsx | 49 + ui/src/components/ui/scroll-area.tsx | 56 + ui/src/components/ui/select.tsx | 170 + ui/src/components/ui/separator.tsx | 28 + ui/src/components/ui/sheet.tsx | 128 + ui/src/components/ui/sidebar.tsx | 694 +++ ui/src/components/ui/skeleton.tsx | 13 + ui/src/components/ui/slider.tsx | 58 + ui/src/components/ui/sonner.tsx | 38 + ui/src/components/ui/spinner.tsx | 16 + ui/src/components/ui/switch.tsx | 28 + ui/src/components/ui/table.tsx | 90 + ui/src/components/ui/tabs.tsx | 54 + ui/src/components/ui/textarea.tsx | 18 + ui/src/components/ui/toggle-group.tsx | 80 + ui/src/components/ui/toggle.tsx | 44 + ui/src/components/ui/tooltip.tsx | 57 + ui/src/hooks/use-me.ts | 10 + ui/src/hooks/use-mobile.ts | 19 + ui/src/index.css | 120 + ui/src/layouts/app-shell.tsx | 157 + ui/src/layouts/nav-config.ts | 40 + ui/src/layouts/org-switcher.tsx | 71 + ui/src/layouts/topbar.tsx | 81 + ui/src/lib/utils.ts | 11 + ui/src/main.tsx | 18 + ui/src/pages/auth/login.tsx | 119 + ui/src/pages/me/me-page.tsx | 505 ++ ui/src/pages/org/api-keys.tsx | 216 + ui/src/pages/org/members.tsx | 262 + ui/src/pages/org/settings.tsx | 147 + ui/src/pages/servers/server-page.tsx | 821 +++ ui/src/pages/ssh/ssh-page.tsx | 475 ++ ui/src/pages/taints/taints-page.tsx | 424 ++ ui/src/providers/index.tsx | 18 + ui/src/providers/theme-provider.tsx | 26 + ui/src/sdk/.gitignore | 4 + ui/src/sdk/.npmignore | 1 + ui/src/sdk/.openapi-generator-ignore | 23 + ui/src/sdk/.openapi-generator/FILES | 85 + ui/src/sdk/.openapi-generator/VERSION | 1 + ui/src/sdk/apis/AuthApi.ts | 242 + ui/src/sdk/apis/MeAPIKeysApi.ts | 167 + ui/src/sdk/apis/MeApi.ts | 124 + ui/src/sdk/apis/OrgsApi.ts | 587 +++ ui/src/sdk/apis/ServersApi.ts | 354 ++ ui/src/sdk/apis/SshApi.ts | 371 ++ ui/src/sdk/apis/TaintsApi.ts | 357 ++ ui/src/sdk/apis/index.ts | 9 + ui/src/sdk/docs/AuthApi.md | 334 ++ ui/src/sdk/docs/DtoAuthStartResponse.md | 34 + ui/src/sdk/docs/DtoCreateSSHRequest.md | 40 + ui/src/sdk/docs/DtoCreateServerRequest.md | 46 + ui/src/sdk/docs/DtoCreateTaintRequest.md | 38 + ui/src/sdk/docs/DtoJWK.md | 46 + ui/src/sdk/docs/DtoJWKS.md | 34 + ui/src/sdk/docs/DtoLogoutRequest.md | 34 + ui/src/sdk/docs/DtoRefreshRequest.md | 34 + ui/src/sdk/docs/DtoServerResponse.md | 54 + ui/src/sdk/docs/DtoSshResponse.md | 46 + ui/src/sdk/docs/DtoSshRevealResponse.md | 48 + ui/src/sdk/docs/DtoTaintResponse.md | 40 + ui/src/sdk/docs/DtoTokenPair.md | 40 + ui/src/sdk/docs/DtoUpdateServerRequest.md | 46 + ui/src/sdk/docs/DtoUpdateTaintRequest.md | 38 + .../sdk/docs/HandlersCreateUserKeyRequest.md | 36 + ui/src/sdk/docs/HandlersMeResponse.md | 50 + ui/src/sdk/docs/HandlersMemberOut.md | 38 + ui/src/sdk/docs/HandlersMemberUpsertReq.md | 36 + ui/src/sdk/docs/HandlersOrgCreateReq.md | 36 + ui/src/sdk/docs/HandlersOrgKeyCreateReq.md | 36 + ui/src/sdk/docs/HandlersOrgKeyCreateResp.md | 46 + ui/src/sdk/docs/HandlersOrgUpdateReq.md | 36 + ui/src/sdk/docs/HandlersUpdateMeRequest.md | 34 + ui/src/sdk/docs/HandlersUserAPIKeyOut.md | 46 + ui/src/sdk/docs/MeAPIKeysApi.md | 216 + ui/src/sdk/docs/MeApi.md | 144 + ui/src/sdk/docs/ModelsAPIKey.md | 54 + ui/src/sdk/docs/ModelsOrganization.md | 42 + ui/src/sdk/docs/ModelsUser.md | 46 + ui/src/sdk/docs/ModelsUserEmail.md | 48 + ui/src/sdk/docs/OrgsApi.md | 801 +++ ui/src/sdk/docs/ServersApi.md | 430 ++ ui/src/sdk/docs/SshApi.md | 427 ++ ui/src/sdk/docs/TaintsApi.md | 431 ++ ui/src/sdk/docs/UtilsErrorResponse.md | 36 + ui/src/sdk/index.ts | 5 + ui/src/sdk/models/DtoAuthStartResponse.ts | 65 + ui/src/sdk/models/DtoCreateSSHRequest.ts | 89 + ui/src/sdk/models/DtoCreateServerRequest.ts | 113 + ui/src/sdk/models/DtoCreateTaintRequest.ts | 81 + ui/src/sdk/models/DtoJWK.ts | 113 + ui/src/sdk/models/DtoJWKS.ts | 73 + ui/src/sdk/models/DtoLogoutRequest.ts | 65 + ui/src/sdk/models/DtoRefreshRequest.ts | 65 + ui/src/sdk/models/DtoServerResponse.ts | 145 + ui/src/sdk/models/DtoSshResponse.ts | 113 + ui/src/sdk/models/DtoSshRevealResponse.ts | 121 + ui/src/sdk/models/DtoTaintResponse.ts | 89 + ui/src/sdk/models/DtoTokenPair.ts | 89 + ui/src/sdk/models/DtoUpdateServerRequest.ts | 113 + ui/src/sdk/models/DtoUpdateTaintRequest.ts | 81 + .../models/HandlersCreateUserKeyRequest.ts | 73 + ui/src/sdk/models/HandlersMeResponse.ts | 144 + ui/src/sdk/models/HandlersMemberOut.ts | 81 + ui/src/sdk/models/HandlersMemberUpsertReq.ts | 73 + ui/src/sdk/models/HandlersOrgCreateReq.ts | 73 + ui/src/sdk/models/HandlersOrgKeyCreateReq.ts | 73 + ui/src/sdk/models/HandlersOrgKeyCreateResp.ts | 113 + ui/src/sdk/models/HandlersOrgUpdateReq.ts | 73 + ui/src/sdk/models/HandlersUpdateMeRequest.ts | 65 + ui/src/sdk/models/HandlersUserAPIKeyOut.ts | 113 + ui/src/sdk/models/ModelsAPIKey.ts | 145 + ui/src/sdk/models/ModelsOrganization.ts | 97 + ui/src/sdk/models/ModelsUser.ts | 113 + ui/src/sdk/models/ModelsUserEmail.ts | 129 + ui/src/sdk/models/UtilsErrorResponse.ts | 75 + ui/src/sdk/models/index.ts | 32 + ui/src/sdk/runtime.ts | 432 ++ ui/src/sdk/tsconfig.esm.json | 7 + ui/src/sdkClient.ts | 77 + ui/tsconfig.app.json | 32 + ui/tsconfig.json | 13 + ui/tsconfig.node.json | 26 + ui/vite.config.ts | 31 + ui/yarn.lock | 4640 +++++++++++++++++ 492 files changed, 71067 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 cmd/encryption.go create mode 100644 cmd/keys_generate.go create mode 100644 cmd/root.go create mode 100644 cmd/serve.go create mode 100644 cmd/version.go create mode 100644 docker-compose.yml create mode 100644 docs/docs.go create mode 100644 docs/efs.go create mode 100644 docs/swagger.json create mode 100644 docs/swagger.yaml create mode 100644 go.mod create mode 100644 go.sum create mode 100644 internal/api/httpmiddleware/auth.go create mode 100644 internal/api/httpmiddleware/context.go create mode 100644 internal/api/httpmiddleware/rbac.go create mode 100644 internal/api/mw_logger.go create mode 100644 internal/api/mw_security.go create mode 100644 internal/api/routes.go create mode 100644 internal/api/utils.go create mode 100644 internal/app/runtime.go create mode 100644 internal/auth/hash.go create mode 100644 internal/auth/issue.go create mode 100644 internal/auth/jwks_export.go create mode 100644 internal/auth/jwt_issue.go create mode 100644 internal/auth/jwt_signer.go create mode 100644 internal/auth/jwt_validate.go create mode 100644 internal/auth/refresh.go create mode 100644 internal/auth/validate_keys.go create mode 100644 internal/config/config.go create mode 100644 internal/db/db.go create mode 100644 internal/db/migrate.go create mode 100644 internal/handlers/auth.go create mode 100644 internal/handlers/dto/auth.go create mode 100644 internal/handlers/dto/jwks.go create mode 100644 internal/handlers/dto/servers.go create mode 100644 internal/handlers/dto/ssh.go create mode 100644 internal/handlers/dto/taints.go create mode 100644 internal/handlers/jwks.go create mode 100644 internal/handlers/me.go create mode 100644 internal/handlers/me_keys.go create mode 100644 internal/handlers/orgs.go create mode 100644 internal/handlers/servers.go create mode 100644 internal/handlers/ssh.go create mode 100644 internal/handlers/taints.go create mode 100644 internal/keys/base64util.go create mode 100644 internal/keys/export.go create mode 100644 internal/keys/keys.go create mode 100644 internal/models/account.go create mode 100644 internal/models/api_key.go create mode 100644 internal/models/master_key.go create mode 100644 internal/models/membership.go create mode 100644 internal/models/node_pool.go create mode 100644 internal/models/organization-key.go create mode 100644 internal/models/organization.go create mode 100644 internal/models/refresh_token.go create mode 100644 internal/models/server.go create mode 100644 internal/models/signing_key.go create mode 100644 internal/models/ssh-key.go create mode 100644 internal/models/taint.go create mode 100644 internal/models/user.go create mode 100644 internal/models/user_email.go create mode 100644 internal/utils/crypto.go create mode 100644 internal/utils/helpers.go create mode 100644 internal/utils/keys.go create mode 100644 internal/utils/org-crypto.go create mode 100644 internal/version/version.go create mode 100644 internal/web/devproxy.go create mode 100644 internal/web/dist/assets/index-BvUUUOIq.css create mode 100644 internal/web/dist/assets/index-BvUUUOIq.css.br create mode 100644 internal/web/dist/assets/index-BvUUUOIq.css.gz create mode 100644 internal/web/dist/assets/index-CFwByDWI.js create mode 100644 internal/web/dist/assets/index-CFwByDWI.js.br create mode 100644 internal/web/dist/assets/index-CFwByDWI.js.gz create mode 100644 internal/web/dist/assets/index-CFwByDWI.js.map create mode 100644 internal/web/dist/assets/react-BZmgNp9X.js create mode 100644 internal/web/dist/assets/react-BZmgNp9X.js.br create mode 100644 internal/web/dist/assets/react-BZmgNp9X.js.gz create mode 100644 internal/web/dist/assets/react-BZmgNp9X.js.map create mode 100644 internal/web/dist/index.html create mode 100644 internal/web/dist/index.html.br create mode 100644 internal/web/dist/index.html.gz create mode 100644 internal/web/dist/vite.svg create mode 100644 internal/web/static.go create mode 100644 main.go create mode 100644 openapitools.json create mode 100644 postgres/Dockerfile create mode 100644 sdk/go/.gitignore create mode 100644 sdk/go/.openapi-generator-ignore create mode 100644 sdk/go/.openapi-generator/FILES create mode 100644 sdk/go/.openapi-generator/VERSION create mode 100644 sdk/go/.travis.yml create mode 100644 sdk/go/README.md create mode 100644 sdk/go/api/openapi.yaml create mode 100644 sdk/go/api_auth.go create mode 100644 sdk/go/api_me.go create mode 100644 sdk/go/api_me_api_keys.go create mode 100644 sdk/go/api_orgs.go create mode 100644 sdk/go/api_servers.go create mode 100644 sdk/go/api_ssh.go create mode 100644 sdk/go/api_taints.go create mode 100644 sdk/go/client.go create mode 100644 sdk/go/configuration.go create mode 100644 sdk/go/docs/AuthAPI.md create mode 100644 sdk/go/docs/DtoAuthStartResponse.md create mode 100644 sdk/go/docs/DtoCreateSSHRequest.md create mode 100644 sdk/go/docs/DtoCreateServerRequest.md create mode 100644 sdk/go/docs/DtoCreateTaintRequest.md create mode 100644 sdk/go/docs/DtoJWK.md create mode 100644 sdk/go/docs/DtoJWKS.md create mode 100644 sdk/go/docs/DtoLogoutRequest.md create mode 100644 sdk/go/docs/DtoRefreshRequest.md create mode 100644 sdk/go/docs/DtoServerResponse.md create mode 100644 sdk/go/docs/DtoSshResponse.md create mode 100644 sdk/go/docs/DtoSshRevealResponse.md create mode 100644 sdk/go/docs/DtoTaintResponse.md create mode 100644 sdk/go/docs/DtoTokenPair.md create mode 100644 sdk/go/docs/DtoUpdateServerRequest.md create mode 100644 sdk/go/docs/DtoUpdateTaintRequest.md create mode 100644 sdk/go/docs/HandlersCreateUserKeyRequest.md create mode 100644 sdk/go/docs/HandlersMeResponse.md create mode 100644 sdk/go/docs/HandlersMemberOut.md create mode 100644 sdk/go/docs/HandlersMemberUpsertReq.md create mode 100644 sdk/go/docs/HandlersOrgCreateReq.md create mode 100644 sdk/go/docs/HandlersOrgKeyCreateReq.md create mode 100644 sdk/go/docs/HandlersOrgKeyCreateResp.md create mode 100644 sdk/go/docs/HandlersOrgUpdateReq.md create mode 100644 sdk/go/docs/HandlersUpdateMeRequest.md create mode 100644 sdk/go/docs/HandlersUserAPIKeyOut.md create mode 100644 sdk/go/docs/MeAPI.md create mode 100644 sdk/go/docs/MeAPIKeysAPI.md create mode 100644 sdk/go/docs/ModelsAPIKey.md create mode 100644 sdk/go/docs/ModelsOrganization.md create mode 100644 sdk/go/docs/ModelsUser.md create mode 100644 sdk/go/docs/ModelsUserEmail.md create mode 100644 sdk/go/docs/OrgsAPI.md create mode 100644 sdk/go/docs/ServersAPI.md create mode 100644 sdk/go/docs/SshAPI.md create mode 100644 sdk/go/docs/TaintsAPI.md create mode 100644 sdk/go/docs/UtilsErrorResponse.md create mode 100644 sdk/go/git_push.sh create mode 100644 sdk/go/go.mod create mode 100644 sdk/go/go.sum create mode 100644 sdk/go/model_dto_auth_start_response.go create mode 100644 sdk/go/model_dto_create_server_request.go create mode 100644 sdk/go/model_dto_create_ssh_request.go create mode 100644 sdk/go/model_dto_create_taint_request.go create mode 100644 sdk/go/model_dto_jwk.go create mode 100644 sdk/go/model_dto_jwks.go create mode 100644 sdk/go/model_dto_logout_request.go create mode 100644 sdk/go/model_dto_refresh_request.go create mode 100644 sdk/go/model_dto_server_response.go create mode 100644 sdk/go/model_dto_ssh_response.go create mode 100644 sdk/go/model_dto_ssh_reveal_response.go create mode 100644 sdk/go/model_dto_taint_response.go create mode 100644 sdk/go/model_dto_token_pair.go create mode 100644 sdk/go/model_dto_update_server_request.go create mode 100644 sdk/go/model_dto_update_taint_request.go create mode 100644 sdk/go/model_handlers_create_user_key_request.go create mode 100644 sdk/go/model_handlers_me_response.go create mode 100644 sdk/go/model_handlers_member_out.go create mode 100644 sdk/go/model_handlers_member_upsert_req.go create mode 100644 sdk/go/model_handlers_org_create_req.go create mode 100644 sdk/go/model_handlers_org_key_create_req.go create mode 100644 sdk/go/model_handlers_org_key_create_resp.go create mode 100644 sdk/go/model_handlers_org_update_req.go create mode 100644 sdk/go/model_handlers_update_me_request.go create mode 100644 sdk/go/model_handlers_user_api_key_out.go create mode 100644 sdk/go/model_models_api_key.go create mode 100644 sdk/go/model_models_organization.go create mode 100644 sdk/go/model_models_user.go create mode 100644 sdk/go/model_models_user_email.go create mode 100644 sdk/go/model_utils_error_response.go create mode 100644 sdk/go/response.go create mode 100644 sdk/go/test/api_auth_test.go create mode 100644 sdk/go/test/api_me_api_keys_test.go create mode 100644 sdk/go/test/api_me_test.go create mode 100644 sdk/go/test/api_orgs_test.go create mode 100644 sdk/go/test/api_servers_test.go create mode 100644 sdk/go/test/api_ssh_test.go create mode 100644 sdk/go/test/api_taints_test.go create mode 100644 sdk/go/utils.go create mode 100644 sdk/ts/.gitignore create mode 100644 sdk/ts/.npmignore create mode 100644 sdk/ts/.openapi-generator-ignore create mode 100644 sdk/ts/.openapi-generator/FILES create mode 100644 sdk/ts/.openapi-generator/VERSION create mode 100644 sdk/ts/README.md create mode 100644 sdk/ts/docs/AuthApi.md create mode 100644 sdk/ts/docs/DtoAuthStartResponse.md create mode 100644 sdk/ts/docs/DtoCreateSSHRequest.md create mode 100644 sdk/ts/docs/DtoCreateServerRequest.md create mode 100644 sdk/ts/docs/DtoCreateTaintRequest.md create mode 100644 sdk/ts/docs/DtoJWK.md create mode 100644 sdk/ts/docs/DtoJWKS.md create mode 100644 sdk/ts/docs/DtoLogoutRequest.md create mode 100644 sdk/ts/docs/DtoRefreshRequest.md create mode 100644 sdk/ts/docs/DtoServerResponse.md create mode 100644 sdk/ts/docs/DtoSshResponse.md create mode 100644 sdk/ts/docs/DtoSshRevealResponse.md create mode 100644 sdk/ts/docs/DtoTaintResponse.md create mode 100644 sdk/ts/docs/DtoTokenPair.md create mode 100644 sdk/ts/docs/DtoUpdateServerRequest.md create mode 100644 sdk/ts/docs/DtoUpdateTaintRequest.md create mode 100644 sdk/ts/docs/HandlersCreateUserKeyRequest.md create mode 100644 sdk/ts/docs/HandlersMeResponse.md create mode 100644 sdk/ts/docs/HandlersMemberOut.md create mode 100644 sdk/ts/docs/HandlersMemberUpsertReq.md create mode 100644 sdk/ts/docs/HandlersOrgCreateReq.md create mode 100644 sdk/ts/docs/HandlersOrgKeyCreateReq.md create mode 100644 sdk/ts/docs/HandlersOrgKeyCreateResp.md create mode 100644 sdk/ts/docs/HandlersOrgUpdateReq.md create mode 100644 sdk/ts/docs/HandlersUpdateMeRequest.md create mode 100644 sdk/ts/docs/HandlersUserAPIKeyOut.md create mode 100644 sdk/ts/docs/MeAPIKeysApi.md create mode 100644 sdk/ts/docs/MeApi.md create mode 100644 sdk/ts/docs/ModelsAPIKey.md create mode 100644 sdk/ts/docs/ModelsOrganization.md create mode 100644 sdk/ts/docs/ModelsUser.md create mode 100644 sdk/ts/docs/ModelsUserEmail.md create mode 100644 sdk/ts/docs/OrgsApi.md create mode 100644 sdk/ts/docs/ServersApi.md create mode 100644 sdk/ts/docs/SshApi.md create mode 100644 sdk/ts/docs/TaintsApi.md create mode 100644 sdk/ts/docs/UtilsErrorResponse.md create mode 100644 sdk/ts/package.json create mode 100644 sdk/ts/src/apis/AuthApi.ts create mode 100644 sdk/ts/src/apis/MeAPIKeysApi.ts create mode 100644 sdk/ts/src/apis/MeApi.ts create mode 100644 sdk/ts/src/apis/OrgsApi.ts create mode 100644 sdk/ts/src/apis/ServersApi.ts create mode 100644 sdk/ts/src/apis/SshApi.ts create mode 100644 sdk/ts/src/apis/TaintsApi.ts create mode 100644 sdk/ts/src/apis/index.ts create mode 100644 sdk/ts/src/index.ts create mode 100644 sdk/ts/src/models/DtoAuthStartResponse.ts create mode 100644 sdk/ts/src/models/DtoCreateSSHRequest.ts create mode 100644 sdk/ts/src/models/DtoCreateServerRequest.ts create mode 100644 sdk/ts/src/models/DtoCreateTaintRequest.ts create mode 100644 sdk/ts/src/models/DtoJWK.ts create mode 100644 sdk/ts/src/models/DtoJWKS.ts create mode 100644 sdk/ts/src/models/DtoLogoutRequest.ts create mode 100644 sdk/ts/src/models/DtoRefreshRequest.ts create mode 100644 sdk/ts/src/models/DtoServerResponse.ts create mode 100644 sdk/ts/src/models/DtoSshResponse.ts create mode 100644 sdk/ts/src/models/DtoSshRevealResponse.ts create mode 100644 sdk/ts/src/models/DtoTaintResponse.ts create mode 100644 sdk/ts/src/models/DtoTokenPair.ts create mode 100644 sdk/ts/src/models/DtoUpdateServerRequest.ts create mode 100644 sdk/ts/src/models/DtoUpdateTaintRequest.ts create mode 100644 sdk/ts/src/models/HandlersCreateUserKeyRequest.ts create mode 100644 sdk/ts/src/models/HandlersMeResponse.ts create mode 100644 sdk/ts/src/models/HandlersMemberOut.ts create mode 100644 sdk/ts/src/models/HandlersMemberUpsertReq.ts create mode 100644 sdk/ts/src/models/HandlersOrgCreateReq.ts create mode 100644 sdk/ts/src/models/HandlersOrgKeyCreateReq.ts create mode 100644 sdk/ts/src/models/HandlersOrgKeyCreateResp.ts create mode 100644 sdk/ts/src/models/HandlersOrgUpdateReq.ts create mode 100644 sdk/ts/src/models/HandlersUpdateMeRequest.ts create mode 100644 sdk/ts/src/models/HandlersUserAPIKeyOut.ts create mode 100644 sdk/ts/src/models/ModelsAPIKey.ts create mode 100644 sdk/ts/src/models/ModelsOrganization.ts create mode 100644 sdk/ts/src/models/ModelsUser.ts create mode 100644 sdk/ts/src/models/ModelsUserEmail.ts create mode 100644 sdk/ts/src/models/UtilsErrorResponse.ts create mode 100644 sdk/ts/src/models/index.ts create mode 100644 sdk/ts/src/runtime.ts create mode 100644 sdk/ts/tsconfig.esm.json create mode 100644 sdk/ts/tsconfig.json create mode 100644 terraform-provider-autoglue/Makefile create mode 100644 terraform-provider-autoglue/go.mod create mode 100644 terraform-provider-autoglue/go.sum create mode 100644 terraform-provider-autoglue/internal/provider/client.go create mode 100644 terraform-provider-autoglue/internal/provider/config.go create mode 100644 terraform-provider-autoglue/internal/provider/datasource_ssh.go create mode 100644 terraform-provider-autoglue/internal/provider/http_err.go create mode 100644 terraform-provider-autoglue/internal/provider/num.go create mode 100644 terraform-provider-autoglue/internal/provider/provider.go create mode 100644 terraform-provider-autoglue/internal/provider/resource_ssh.go create mode 100644 terraform-provider-autoglue/main.go create mode 100644 terraform/envs/dev/.terraform.lock.hcl create mode 100644 terraform/envs/dev/.terraform/modules/modules.json create mode 120000 terraform/envs/dev/.terraform/providers/glueops/autoglue/autoglue/0.0.1/darwin_arm64 create mode 100644 terraform/envs/dev/.terraform/providers/glueops/autoglue/autoglue/0.0.1/darwin_arm64.lock create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64.lock create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/CHANGELOG.md create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/LICENSE create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/README.md create mode 100755 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/terraform-provider-http create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/local/2.5.3/darwin_arm64.lock create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/local/2.5.3/darwin_arm64/CHANGELOG.md create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/local/2.5.3/darwin_arm64/LICENSE create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/local/2.5.3/darwin_arm64/README.md create mode 100755 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/local/2.5.3/darwin_arm64/terraform-provider-local create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/null/3.2.4/darwin_arm64.lock create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/null/3.2.4/darwin_arm64/CHANGELOG.md create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/null/3.2.4/darwin_arm64/LICENSE create mode 100644 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/null/3.2.4/darwin_arm64/README.md create mode 100755 terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/null/3.2.4/darwin_arm64/terraform-provider-null create mode 100644 terraform/envs/dev/main.tf create mode 100644 terraform/envs/dev/providers.tf create mode 100644 terraform/envs/dev/terraform.tfstate create mode 100644 terraform/envs/dev/terraform.tfstate.backup create mode 100644 terraform/envs/dev/terraform.tfvars create mode 100644 terraform/envs/dev/variables.tf create mode 100644 terraform/envs/dev/versions.tf create mode 100644 terraform/modules/ssh-key/main.tf create mode 100644 terraform/modules/ssh-key/outputs.tf create mode 100644 terraform/modules/ssh-key/variables.tf create mode 100644 terraform/modules/ssh-key/versions.tf create mode 100644 ui/.gitignore create mode 100644 ui/.prettierignore create mode 100644 ui/.prettierrc.json create mode 100644 ui/README.md create mode 100644 ui/components.json create mode 100644 ui/eslint.config.js create mode 100644 ui/index.html create mode 100644 ui/package.json create mode 100644 ui/public/vite.svg create mode 100644 ui/src/App.tsx create mode 100644 ui/src/api/me.ts create mode 100644 ui/src/api/servers.ts create mode 100644 ui/src/api/ssh.ts create mode 100644 ui/src/api/taints.ts create mode 100644 ui/src/api/with-refresh.ts create mode 100644 ui/src/auth/org.ts create mode 100644 ui/src/auth/store.ts create mode 100644 ui/src/auth/use-auth.ts create mode 100644 ui/src/components/protected-route.tsx create mode 100644 ui/src/components/ui/accordion.tsx create mode 100644 ui/src/components/ui/alert-dialog.tsx create mode 100644 ui/src/components/ui/alert.tsx create mode 100644 ui/src/components/ui/aspect-ratio.tsx create mode 100644 ui/src/components/ui/avatar.tsx create mode 100644 ui/src/components/ui/badge.tsx create mode 100644 ui/src/components/ui/breadcrumb.tsx create mode 100644 ui/src/components/ui/button-group.tsx create mode 100644 ui/src/components/ui/button.tsx create mode 100644 ui/src/components/ui/calendar.tsx create mode 100644 ui/src/components/ui/card.tsx create mode 100644 ui/src/components/ui/carousel.tsx create mode 100644 ui/src/components/ui/chart.tsx create mode 100644 ui/src/components/ui/checkbox.tsx create mode 100644 ui/src/components/ui/collapsible.tsx create mode 100644 ui/src/components/ui/command.tsx create mode 100644 ui/src/components/ui/context-menu.tsx create mode 100644 ui/src/components/ui/dialog.tsx create mode 100644 ui/src/components/ui/drawer.tsx create mode 100644 ui/src/components/ui/dropdown-menu.tsx create mode 100644 ui/src/components/ui/empty.tsx create mode 100644 ui/src/components/ui/field.tsx create mode 100644 ui/src/components/ui/form.tsx create mode 100644 ui/src/components/ui/hover-card.tsx create mode 100644 ui/src/components/ui/input-group.tsx create mode 100644 ui/src/components/ui/input-otp.tsx create mode 100644 ui/src/components/ui/input.tsx create mode 100644 ui/src/components/ui/item.tsx create mode 100644 ui/src/components/ui/kbd.tsx create mode 100644 ui/src/components/ui/label.tsx create mode 100644 ui/src/components/ui/menubar.tsx create mode 100644 ui/src/components/ui/navigation-menu.tsx create mode 100644 ui/src/components/ui/pagination.tsx create mode 100644 ui/src/components/ui/popover.tsx create mode 100644 ui/src/components/ui/progress.tsx create mode 100644 ui/src/components/ui/radio-group.tsx create mode 100644 ui/src/components/ui/resizable.tsx create mode 100644 ui/src/components/ui/scroll-area.tsx create mode 100644 ui/src/components/ui/select.tsx create mode 100644 ui/src/components/ui/separator.tsx create mode 100644 ui/src/components/ui/sheet.tsx create mode 100644 ui/src/components/ui/sidebar.tsx create mode 100644 ui/src/components/ui/skeleton.tsx create mode 100644 ui/src/components/ui/slider.tsx create mode 100644 ui/src/components/ui/sonner.tsx create mode 100644 ui/src/components/ui/spinner.tsx create mode 100644 ui/src/components/ui/switch.tsx create mode 100644 ui/src/components/ui/table.tsx create mode 100644 ui/src/components/ui/tabs.tsx create mode 100644 ui/src/components/ui/textarea.tsx create mode 100644 ui/src/components/ui/toggle-group.tsx create mode 100644 ui/src/components/ui/toggle.tsx create mode 100644 ui/src/components/ui/tooltip.tsx create mode 100644 ui/src/hooks/use-me.ts create mode 100644 ui/src/hooks/use-mobile.ts create mode 100644 ui/src/index.css create mode 100644 ui/src/layouts/app-shell.tsx create mode 100644 ui/src/layouts/nav-config.ts create mode 100644 ui/src/layouts/org-switcher.tsx create mode 100644 ui/src/layouts/topbar.tsx create mode 100644 ui/src/lib/utils.ts create mode 100644 ui/src/main.tsx create mode 100644 ui/src/pages/auth/login.tsx create mode 100644 ui/src/pages/me/me-page.tsx create mode 100644 ui/src/pages/org/api-keys.tsx create mode 100644 ui/src/pages/org/members.tsx create mode 100644 ui/src/pages/org/settings.tsx create mode 100644 ui/src/pages/servers/server-page.tsx create mode 100644 ui/src/pages/ssh/ssh-page.tsx create mode 100644 ui/src/pages/taints/taints-page.tsx create mode 100644 ui/src/providers/index.tsx create mode 100644 ui/src/providers/theme-provider.tsx create mode 100644 ui/src/sdk/.gitignore create mode 100644 ui/src/sdk/.npmignore create mode 100644 ui/src/sdk/.openapi-generator-ignore create mode 100644 ui/src/sdk/.openapi-generator/FILES create mode 100644 ui/src/sdk/.openapi-generator/VERSION create mode 100644 ui/src/sdk/apis/AuthApi.ts create mode 100644 ui/src/sdk/apis/MeAPIKeysApi.ts create mode 100644 ui/src/sdk/apis/MeApi.ts create mode 100644 ui/src/sdk/apis/OrgsApi.ts create mode 100644 ui/src/sdk/apis/ServersApi.ts create mode 100644 ui/src/sdk/apis/SshApi.ts create mode 100644 ui/src/sdk/apis/TaintsApi.ts create mode 100644 ui/src/sdk/apis/index.ts create mode 100644 ui/src/sdk/docs/AuthApi.md create mode 100644 ui/src/sdk/docs/DtoAuthStartResponse.md create mode 100644 ui/src/sdk/docs/DtoCreateSSHRequest.md create mode 100644 ui/src/sdk/docs/DtoCreateServerRequest.md create mode 100644 ui/src/sdk/docs/DtoCreateTaintRequest.md create mode 100644 ui/src/sdk/docs/DtoJWK.md create mode 100644 ui/src/sdk/docs/DtoJWKS.md create mode 100644 ui/src/sdk/docs/DtoLogoutRequest.md create mode 100644 ui/src/sdk/docs/DtoRefreshRequest.md create mode 100644 ui/src/sdk/docs/DtoServerResponse.md create mode 100644 ui/src/sdk/docs/DtoSshResponse.md create mode 100644 ui/src/sdk/docs/DtoSshRevealResponse.md create mode 100644 ui/src/sdk/docs/DtoTaintResponse.md create mode 100644 ui/src/sdk/docs/DtoTokenPair.md create mode 100644 ui/src/sdk/docs/DtoUpdateServerRequest.md create mode 100644 ui/src/sdk/docs/DtoUpdateTaintRequest.md create mode 100644 ui/src/sdk/docs/HandlersCreateUserKeyRequest.md create mode 100644 ui/src/sdk/docs/HandlersMeResponse.md create mode 100644 ui/src/sdk/docs/HandlersMemberOut.md create mode 100644 ui/src/sdk/docs/HandlersMemberUpsertReq.md create mode 100644 ui/src/sdk/docs/HandlersOrgCreateReq.md create mode 100644 ui/src/sdk/docs/HandlersOrgKeyCreateReq.md create mode 100644 ui/src/sdk/docs/HandlersOrgKeyCreateResp.md create mode 100644 ui/src/sdk/docs/HandlersOrgUpdateReq.md create mode 100644 ui/src/sdk/docs/HandlersUpdateMeRequest.md create mode 100644 ui/src/sdk/docs/HandlersUserAPIKeyOut.md create mode 100644 ui/src/sdk/docs/MeAPIKeysApi.md create mode 100644 ui/src/sdk/docs/MeApi.md create mode 100644 ui/src/sdk/docs/ModelsAPIKey.md create mode 100644 ui/src/sdk/docs/ModelsOrganization.md create mode 100644 ui/src/sdk/docs/ModelsUser.md create mode 100644 ui/src/sdk/docs/ModelsUserEmail.md create mode 100644 ui/src/sdk/docs/OrgsApi.md create mode 100644 ui/src/sdk/docs/ServersApi.md create mode 100644 ui/src/sdk/docs/SshApi.md create mode 100644 ui/src/sdk/docs/TaintsApi.md create mode 100644 ui/src/sdk/docs/UtilsErrorResponse.md create mode 100644 ui/src/sdk/index.ts create mode 100644 ui/src/sdk/models/DtoAuthStartResponse.ts create mode 100644 ui/src/sdk/models/DtoCreateSSHRequest.ts create mode 100644 ui/src/sdk/models/DtoCreateServerRequest.ts create mode 100644 ui/src/sdk/models/DtoCreateTaintRequest.ts create mode 100644 ui/src/sdk/models/DtoJWK.ts create mode 100644 ui/src/sdk/models/DtoJWKS.ts create mode 100644 ui/src/sdk/models/DtoLogoutRequest.ts create mode 100644 ui/src/sdk/models/DtoRefreshRequest.ts create mode 100644 ui/src/sdk/models/DtoServerResponse.ts create mode 100644 ui/src/sdk/models/DtoSshResponse.ts create mode 100644 ui/src/sdk/models/DtoSshRevealResponse.ts create mode 100644 ui/src/sdk/models/DtoTaintResponse.ts create mode 100644 ui/src/sdk/models/DtoTokenPair.ts create mode 100644 ui/src/sdk/models/DtoUpdateServerRequest.ts create mode 100644 ui/src/sdk/models/DtoUpdateTaintRequest.ts create mode 100644 ui/src/sdk/models/HandlersCreateUserKeyRequest.ts create mode 100644 ui/src/sdk/models/HandlersMeResponse.ts create mode 100644 ui/src/sdk/models/HandlersMemberOut.ts create mode 100644 ui/src/sdk/models/HandlersMemberUpsertReq.ts create mode 100644 ui/src/sdk/models/HandlersOrgCreateReq.ts create mode 100644 ui/src/sdk/models/HandlersOrgKeyCreateReq.ts create mode 100644 ui/src/sdk/models/HandlersOrgKeyCreateResp.ts create mode 100644 ui/src/sdk/models/HandlersOrgUpdateReq.ts create mode 100644 ui/src/sdk/models/HandlersUpdateMeRequest.ts create mode 100644 ui/src/sdk/models/HandlersUserAPIKeyOut.ts create mode 100644 ui/src/sdk/models/ModelsAPIKey.ts create mode 100644 ui/src/sdk/models/ModelsOrganization.ts create mode 100644 ui/src/sdk/models/ModelsUser.ts create mode 100644 ui/src/sdk/models/ModelsUserEmail.ts create mode 100644 ui/src/sdk/models/UtilsErrorResponse.ts create mode 100644 ui/src/sdk/models/index.ts create mode 100644 ui/src/sdk/runtime.ts create mode 100644 ui/src/sdk/tsconfig.esm.json create mode 100644 ui/src/sdkClient.ts create mode 100644 ui/tsconfig.app.json create mode 100644 ui/tsconfig.json create mode 100644 ui/tsconfig.node.json create mode 100644 ui/vite.config.ts create mode 100644 ui/yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..de18b88 --- /dev/null +++ b/.gitignore @@ -0,0 +1,136 @@ +# Created by https://www.toptal.com/developers/gitignore/api/go,react,intellij+all +# Edit at https://www.toptal.com/developers/gitignore?templates=go,react,intellij+all + +### Go ### +# If you prefer the allow list template instead of the deny list, see community template: +# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore +# +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +# Go workspace file +go.work + +### Intellij+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +### react ### +.DS_* +*.log +logs +**/*.backup.* +**/*.back.* + +node_modules +bower_components + +*.sublime* + +psd +thumb +sketch + +# End of https://www.toptal.com/developers/gitignore/api/go,react,intellij+all + +.env +config.yaml +go_*_WhiteSpaceConflict/ +notes.txt \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5e3da28 --- /dev/null +++ b/Makefile @@ -0,0 +1,277 @@ +# --- variables --- +GOCMD ?= go +GOINSTALL := $(GOCMD) install +BIN ?= autoglue +MAIN ?= main.go +UI_DIR ?= ui +UI_DEST_DIR ?= internal/web + +# Module path (used for ldflags to internal/version) +GIT_HOST ?= github.com +GIT_USER ?= glueops +MODULE_PATH ?= $(GIT_HOST)/$(GIT_USER)/$(BIN) + +# SDK / module settings (Go) +SDK_REPO ?= $(BIN)-sdk # repo name used for module path +SDK_OUTDIR ?= sdk/go # output directory (inside repo) +SDK_PKG ?= ${BIN} # package name inside the SDK + +UI_SSG_ROUTES ?= /,/login,/docs,/pricing + +# Go versioning (go.mod uses major.minor; you’re on 1.25.3) +GO_VERSION ?= 1.25.3 + +# SDK / package settings (TypeScript) +SDK_TS_OUTDIR ?= sdk/ts +SDK_TS_GEN ?= typescript-fetch +SDK_TS_NPM_NAME ?= @glueops/$(SDK_REPO) +SDK_TS_NPM_VER ?= 0.1.0 +SDK_TS_DIR := $(abspath $(SDK_TS_OUTDIR)) +SDK_TS_PROPS ?= supportsES6=true,typescriptThreePlus=true,useSingleRequestParameter=true,withSeparateModelsAndApi=true,modelPropertyNaming=original,enumPropertyNaming=original,useUnionTypes=true +SDK_TS_PROPS_FLAGS := $(foreach p,$(subst , ,$(SDK_TS_PROPS)),-p $(p)) + +# Path for vendored UI SDK (absolute, path-safe) +SDK_TS_UI_OUTDIR ?= ui/src/sdk +SDK_TS_UI_DIR := $(abspath $(SDK_TS_UI_OUTDIR)) + +SWAG := $(shell command -v swag 2>/dev/null) +GMU := $(shell command -v go-mod-upgrade 2>/dev/null) +YARN := $(shell command -v yarn 2>/dev/null) +NPM := $(shell command -v npm 2>/dev/null) +OGC := $(shell command -v openapi-generator-cli 2>/dev/null || command -v openapi-generator 2>/dev/null) +BROTLI := $(shell command -v brotli 2>/dev/null) +GZIP := $(shell command -v gzip 2>/dev/null) +.DEFAULT_GOAL := build + +# --- version metadata (ldflags) --- +VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") +COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "none") +DATE := $(shell date -u +'%Y-%m-%dT%H:%M:%SZ') +BUILT_BY := $(shell whoami) + +LDFLAGS := -X '$(MODULE_PATH)/internal/version.Version=$(VERSION)' \ + -X '$(MODULE_PATH)/internal/version.Commit=$(COMMIT)' \ + -X '$(MODULE_PATH)/internal/version.Date=$(DATE)' \ + -X '$(MODULE_PATH)/internal/version.BuiltBy=$(BUILT_BY)' + +# --- phony targets --- +.PHONY: all prepare ui-install ui-build ui swagger build clean fmt vet tidy upgrade \ + sdk sdk-go sdk-ts sdk-ts-ui sdk-all worksync wire-sdk-replace help dev ui-compress \ + print-version + +# --- meta targets --- +all: build +prepare: fmt vet tidy upgrade + +# --- go hygiene --- +fmt: + @$(GOCMD) fmt ./... + +vet: + @$(GOCMD) vet ./... + +tidy: + @$(GOCMD) mod tidy + +upgrade: + @echo ">> Checking go-mod-upgrade..." + @if [ -z "$(GMU)" ]; then \ + echo "Installing go-mod-upgrade..."; \ + $(GOINSTALL) github.com/oligot/go-mod-upgrade@latest; \ + fi + @go-mod-upgrade -f || true + +# --- ui --- +ui-install: + @echo ">> Installing UI deps in $(UI_DIR)..." + @if [ -n "$(YARN)" ]; then \ + cd $(UI_DIR) && yarn install --frozen-lockfile; \ + elif [ -n "$(NPM)" ]; then \ + cd $(UI_DIR) && npm ci; \ + else \ + echo "Error: neither yarn nor npm is installed." >&2; exit 1; \ + fi + +ui-build: ui-install + @echo ">> Building UI in $(UI_DIR)..." + @rm -rf $(UI_DEST_DIR)/dist + @if [ -n "$(YARN)" ]; then \ + cd $(UI_DIR) && yarn build; \ + else \ + cd $(UI_DIR) && npm run build; \ + fi + +ui-compress: ui-build + @echo ">> Precompressing assets (brotli + gzip) in $(UI_DEST_DIR)/dist" + @if [ -n "$(BROTLI)" ]; then \ + find "$(UI_DEST_DIR)/dist" -type f \( -name '*.js' -o -name '*.css' -o -name '*.html' \) -print0 | \ + xargs -0 -I{} brotli -f {}; \ + else echo "brotli not found; skipping .br"; fi + @if [ -n "$(GZIP)" ]; then \ + find "$(UI_DEST_DIR)/dist" -type f \( -name '*.js' -o -name '*.css' -o -name '*.html' \) -print0 | \ + xargs -0 -I{} gzip -kf {}; \ + else echo "gzip not found; skipping .gz"; fi + +ui: ui-compress + +# --- swagger --- +swagger: + @echo ">> Generating Swagger docs..." + @if [ -z "$(SWAG)" ]; then \ + echo "Installing swag..."; \ + $(GOINSTALL) github.com/swaggo/swag/cmd/swag@latest; \ + fi + @rm -rf docs/swagger.* docs/docs.go + @swag init -g $(MAIN) -o docs + +# --- build --- +build: prepare ui swagger sdk-all + @echo ">> Building Go binary: $(BIN)" + @$(GOCMD) build -trimpath -ldflags "$(LDFLAGS)" -o $(BIN) $(MAIN) + +# Handy: print resolved version metadata +print-version: + @echo "VERSION = $(VERSION)" + @echo "COMMIT = $(COMMIT)" + @echo "DATE = $(DATE)" + @echo "BUILT_BY = $(BUILT_BY)" + @echo "LDFLAGS = $(LDFLAGS)" + +# --- development --- +dev: ui-install swagger + @echo ">> Starting Vite (frontend) and Go API (backend) with dev env..." + @cd $(UI_DIR) && \ + ( \ + if command -v yarn >/dev/null 2>&1; then \ + yarn dev & \ + elif command -v npm >/dev/null 2>&1; then \ + npm run dev & \ + else \ + echo "Error: neither yarn nor npm is installed." >&2; exit 1; \ + fi; \ + cd .. && \ + $(GOCMD) run . serve & \ + wait \ + ) + +# --- sdk generation (Go) --- +sdk-go: swagger + @echo ">> Generating Go SDK (module $(GIT_HOST)/$(GIT_USER)/$(SDK_REPO), Go $(GO_VERSION))..." + @set -e; \ + export GO_POST_PROCESS_FILE="gofmt -w"; \ + if [ -z "$(OGC)" ]; then \ + if [ -z "$(NPM)" ]; then \ + echo "Error: npm is required to install openapi-generator-cli." >&2; exit 1; \ + fi; \ + echo "Installing openapi-generator-cli..."; \ + $(NPM) i -g @openapitools/openapi-generator-cli; \ + OGC_BIN=openapi-generator-cli; \ + else \ + OGC_BIN="$(OGC)"; \ + fi; \ + rm -rf "$(SDK_OUTDIR)"; \ + mkdir -p "$(SDK_OUTDIR)"; \ + "$$OGC_BIN" generate \ + --enable-post-process-file \ + --generate-alias-as-model \ + -i docs/swagger.json \ + -g go \ + -o "$(SDK_OUTDIR)" \ + --additional-properties=packageName=$(SDK_PKG) \ + --git-host "$(GIT_HOST)" \ + --git-user-id "$(GIT_USER)" \ + --git-repo-id "$(SDK_REPO)"; \ + cd "$(SDK_OUTDIR)"; \ + $(GOCMD) mod edit -go=$(GO_VERSION); \ + $(GOCMD) mod tidy + +# --- sdk generation (TypeScript) --- +sdk-ts: swagger + @set -e; \ + if [ -z "$(OGC)" ]; then \ + if [ -z "$(NPM)" ]; then echo "Error: npm is required to install openapi-generator-cli." >&2; exit 1; fi; \ + echo "Installing openapi-generator-cli..."; \ + $(NPM) i -g @openapitools/openapi-generator-cli; \ + OGC_BIN=openapi-generator-cli; \ + else \ + OGC_BIN="$(OGC)"; \ + fi; \ + rm -rf "$(SDK_TS_DIR)"; \ + mkdir -p "$(SDK_TS_DIR)"; \ + "$$OGC_BIN" generate \ + -i docs/swagger.json \ + -g "$(SDK_TS_GEN)" \ + -o "$(SDK_TS_DIR)" \ + -p npmName=$(SDK_TS_NPM_NAME) \ + -p npmVersion=$(SDK_TS_NPM_VER) \ + $(SDK_TS_PROPS_FLAGS); \ + if [ ! -d "$(SDK_TS_DIR)" ]; then \ + echo "Generation failed: $(SDK_TS_DIR) not found." >&2; exit 1; \ + fi; \ + if command -v npx >/dev/null 2>&1; then \ + echo ">> Prettier: formatting generated TS SDK"; \ + cd "$(SDK_TS_DIR)" && npx --yes prettier -w . || true; \ + fi; \ + echo ">> Installing & building TS SDK in $(SDK_TS_DIR)"; \ + if command -v yarn >/dev/null 2>&1; then \ + cd "$(SDK_TS_DIR)" && yarn install --frozen-lockfile || true; \ + cd "$(SDK_TS_DIR)" && yarn build || true; \ + elif command -v npm >/dev/null 2>&1; then \ + cd "$(SDK_TS_DIR)" && npm ci || npm install || true; \ + cd "$(SDK_TS_DIR)" && npm run build || true; \ + else \ + echo "Warning: neither yarn nor npm is installed; skipping install/build for TS SDK."; \ + fi + +# --- sdk generation (TypeScript into UI/src) --- +sdk-ts-ui: swagger + @echo ">> Generating TypeScript SDK directly into UI source: $(SDK_TS_UI_DIR)" + @set -e; \ + if [ -z "$(OGC)" ]; then \ + if [ -z "$(NPM)" ]; then \ + echo "Error: npm is required to install openapi-generator-cli." >&2; exit 1; \ + fi; \ + echo "Installing openapi-generator-cli..."; \ + $(NPM) i -g @openapitools/openapi-generator-cli; \ + OGC_BIN=openapi-generator-cli; \ + else \ + OGC_BIN="$(OGC)"; \ + fi; \ + rm -rf "$(SDK_TS_UI_DIR)"; \ + mkdir -p "$(SDK_TS_UI_DIR)"; \ + "$$OGC_BIN" generate \ + -i docs/swagger.json \ + -g typescript-fetch \ + -o "$(SDK_TS_UI_DIR)" \ + -p npmName=$(SDK_TS_NPM_NAME) \ + -p npmVersion=$(SDK_TS_NPM_VER) \ + $(SDK_TS_PROPS_FLAGS); \ + # --- move src/* up one level --- + @if [ -d "$(SDK_TS_UI_DIR)/src" ]; then \ + mv "$(SDK_TS_UI_DIR)/src/"* "$(SDK_TS_UI_DIR)/"; \ + rm -rf "$(SDK_TS_UI_DIR)/src"; \ + fi; \ + rm -f "$(SDK_TS_UI_DIR)/package.json" "$(SDK_TS_UI_DIR)/tsconfig.json" "$(SDK_TS_UI_DIR)/README.md" + +# convenience +sdk-all: sdk-go sdk-ts sdk-ts-ui +sdk: sdk-go + +# --- clean/help --- +clean: + @echo ">> Cleaning artifacts..." + @rm -rf "$(BIN)" docs/swagger.* docs/docs.go $(UI_DEST_DIR)/dist $(UI_DIR)/dist $(UI_DIR)/node_modules "$(SDK_OUTDIR)" "$(SDK_TS_OUTDIR)" + +help: + @echo "Targets:" + @echo " build - fmt, vet, tidy, upgrade, build UI, generate Swagger, build Go binary (with ldflags)" + @echo " ui - build the Vite UI and copy to $(UI_DEST_DIR)/dist (with compression)" + @echo " swagger - (re)generate Swagger docs using swag" + @echo " sdk-go (sdk) - generate Go SDK with correct module path and Go version" + @echo " sdk-ts - generate TypeScript SDK (typescript-fetch) with package.json" + @echo " sdk-ts-ui - generate TypeScript SDK directly into ui/src for inline consumption" + @echo " sdk-all - generate both Go and TypeScript SDKs" + @echo " dev - run Vite UI dev server + Go API" + @echo " clean - remove binary, Swagger outputs, UI dist, and SDKs" + @echo " prepare - fmt, vet, tidy, upgrade deps" + @echo " print-version - show computed ldflags values" diff --git a/cmd/encryption.go b/cmd/encryption.go new file mode 100644 index 0000000..2595280 --- /dev/null +++ b/cmd/encryption.go @@ -0,0 +1,83 @@ +package cmd + +import ( + "crypto/rand" + "encoding/base64" + "fmt" + "io" + + "github.com/glueops/autoglue/internal/app" + "github.com/glueops/autoglue/internal/models" + "github.com/spf13/cobra" +) + +var rotateMasterCmd = &cobra.Command{ + Use: "rotate-master", + Short: "Generate and activate a new master encryption key", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + rt := app.NewRuntime() + db := rt.DB + + key := make([]byte, 32) + if _, err := io.ReadFull(rand.Reader, key); err != nil { + return fmt.Errorf("generating random key: %w", err) + } + + encoded := base64.StdEncoding.EncodeToString(key) + + if err := db.Model(&models.MasterKey{}). + Where("is_active = ?", true). + Update("is_active", false).Error; err != nil { + return fmt.Errorf("deactivating previous key: %w", err) + } + + if err := db.Create(&models.MasterKey{ + Key: encoded, + IsActive: true, + }).Error; err != nil { + return fmt.Errorf("creating new master key: %w", err) + } + + fmt.Println("Master key rotated successfully") + return nil + }, +} + +var createMasterCmd = &cobra.Command{ + Use: "create-master", + Short: "Generate and activate a new master encryption key", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + rt := app.NewRuntime() + db := rt.DB + key := make([]byte, 32) + if _, err := io.ReadFull(rand.Reader, key); err != nil { + return fmt.Errorf("generating random key: %w", err) + } + + encoded := base64.StdEncoding.EncodeToString(key) + + if err := db.Create(&models.MasterKey{ + Key: encoded, + IsActive: true, + }).Error; err != nil { + return fmt.Errorf("creating master key: %w", err) + } + + fmt.Println("Master key created successfully") + return nil + }, +} + +var encryptCmd = &cobra.Command{ + Use: "encrypt", + Short: "Manage autoglue encryption keys", + Long: "Manage autoglue master encryption keys used for securing data.", +} + +func init() { + encryptCmd.AddCommand(rotateMasterCmd) + encryptCmd.AddCommand(createMasterCmd) + rootCmd.AddCommand(encryptCmd) +} diff --git a/cmd/keys_generate.go b/cmd/keys_generate.go new file mode 100644 index 0000000..1efbd3c --- /dev/null +++ b/cmd/keys_generate.go @@ -0,0 +1,81 @@ +package cmd + +import ( + "fmt" + "time" + + "github.com/glueops/autoglue/internal/app" + "github.com/glueops/autoglue/internal/keys" + "github.com/spf13/cobra" +) + +var ( + alg string + rsaBits int + kidFlag string + nbfStr string + expStr string +) + +var keysCmd = &cobra.Command{ + Use: "keys", + Short: "Manage JWT signing keys", +} + +var keysGenCmd = &cobra.Command{ + Use: "generate", + Short: "Generate and store a new signing key", + RunE: func(_ *cobra.Command, _ []string) error { + rt := app.NewRuntime() + + var nbfPtr, expPtr *time.Time + if nbfStr != "" { + t, err := time.Parse(time.RFC3339, nbfStr) + if err != nil { + return err + } + nbfPtr = &t + } + if expStr != "" { + t, err := time.Parse(time.RFC3339, expStr) + if err != nil { + return err + } + expPtr = &t + } + + rec, err := keys.GenerateAndStore(rt.DB, rt.Cfg.JWTPrivateEncKey, keys.GenOpts{ + Alg: alg, + Bits: rsaBits, + KID: kidFlag, + NBF: nbfPtr, + EXP: expPtr, + }) + if err != nil { + return err + } + + fmt.Printf("created signing key\n") + fmt.Printf(" kid: %s\n", rec.Kid) + fmt.Printf(" alg: %s\n", rec.Alg) + fmt.Printf(" active: %v\n", rec.IsActive) + if rec.NotBefore != nil { + fmt.Printf(" nbf: %s\n", rec.NotBefore.Format(time.RFC3339)) + } + if rec.ExpiresAt != nil { + fmt.Printf(" exp: %s\n", rec.ExpiresAt.Format(time.RFC3339)) + } + return nil + }, +} + +func init() { + rootCmd.AddCommand(keysCmd) + keysCmd.AddCommand(keysGenCmd) + + keysGenCmd.Flags().StringVarP(&alg, "alg", "a", "EdDSA", "Signing alg: EdDSA|RS256|RS384|RS512") + keysGenCmd.Flags().IntVarP(&rsaBits, "bits", "b", 3072, "RSA key size (when alg is RS*)") + keysGenCmd.Flags().StringVarP(&kidFlag, "kid", "k", "", "Key ID (optional; auto if empty)") + keysGenCmd.Flags().StringVarP(&nbfStr, "nbf", "n", "", "Not Before (RFC3339)") + keysGenCmd.Flags().StringVarP(&expStr, "exp", "e", "", "Expires At (RFC3339)") +} diff --git a/cmd/root.go b/cmd/root.go new file mode 100644 index 0000000..ca9e7f8 --- /dev/null +++ b/cmd/root.go @@ -0,0 +1,33 @@ +package cmd + +import ( + "log" + + "github.com/spf13/cobra" +) + +var rootCmd = &cobra.Command{ + Use: "autoglue", + Short: "Autoglue Kubernetes Cluster Management", + Long: "autoglue is used to manage the lifecycle of kubernetes clusters on GlueOps supported cloud providers", + Run: func(cmd *cobra.Command, args []string) { + if len(args) == 0 { + err := serveCmd.RunE(cmd, args) + if err != nil { + log.Fatal(err) + } + } else { + _ = cmd.Help() + } + }, +} + +func Execute() { + if err := rootCmd.Execute(); err != nil { + log.Fatal(err) + } +} + +func init() { + cobra.OnInitialize() +} diff --git a/cmd/serve.go b/cmd/serve.go new file mode 100644 index 0000000..be5ff20 --- /dev/null +++ b/cmd/serve.go @@ -0,0 +1,94 @@ +package cmd + +import ( + "context" + "errors" + "fmt" + "log" + "net/http" + "os" + "os/signal" + "strings" + "syscall" + "time" + + "github.com/glueops/autoglue/internal/api" + "github.com/glueops/autoglue/internal/app" + "github.com/glueops/autoglue/internal/auth" + "github.com/glueops/autoglue/internal/config" + "github.com/spf13/cobra" +) + +var serveCmd = &cobra.Command{ + Use: "serve", + Short: "Start API server", + RunE: func(_ *cobra.Command, _ []string) error { + rt := app.NewRuntime() + + cfg, err := config.Load() + if err != nil { + return err + } + + _ = auth.Refresh(rt.DB, rt.Cfg.JWTPrivateEncKey) + go func() { + t := time.NewTicker(60 * time.Second) + defer t.Stop() + for range t.C { + _ = auth.Refresh(rt.DB, rt.Cfg.JWTPrivateEncKey) + } + }() + + r := api.NewRouter(rt.DB) + + addr := fmt.Sprintf("%s:%s", cfg.Host, cfg.Port) + + srv := &http.Server{ + Addr: addr, + Handler: TimeoutExceptUpgrades(r, 60*time.Second, "request timed out"), // global safety + ReadTimeout: 15 * time.Second, + WriteTimeout: 60 * time.Second, + IdleTimeout: 120 * time.Second, + } + + ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) + defer stop() + + go func() { + fmt.Printf("🚀 API running on http://%s (ui.dev=%v)\n", addr, cfg.UIDev) + if err := srv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { + log.Fatalf("server error: %v", err) + } + }() + + <-ctx.Done() + fmt.Println("\n⏳ Shutting down...") + shutdownCtx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + return srv.Shutdown(shutdownCtx) + }, +} + +func init() { + rootCmd.AddCommand(serveCmd) +} + +func TimeoutExceptUpgrades(next http.Handler, d time.Duration, msg string) http.Handler { + timeout := http.TimeoutHandler(next, d, msg) + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // If this is an upgrade (e.g., websocket), don't wrap. + if isUpgrade(r) { + next.ServeHTTP(w, r) + return + } + timeout.ServeHTTP(w, r) + }) +} + +func isUpgrade(r *http.Request) bool { + // Connection: Upgrade, Upgrade: websocket + if strings.Contains(strings.ToLower(r.Header.Get("Connection")), "upgrade") { + return true + } + return false +} diff --git a/cmd/version.go b/cmd/version.go new file mode 100644 index 0000000..5573ef7 --- /dev/null +++ b/cmd/version.go @@ -0,0 +1,20 @@ +package cmd + +import ( + "fmt" + + "github.com/glueops/autoglue/internal/version" + "github.com/spf13/cobra" +) + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Show version information", + Run: func(cmd *cobra.Command, args []string) { + fmt.Println(version.Info()) + }, +} + +func init() { + rootCmd.AddCommand(versionCmd) +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8821211 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,52 @@ +services: + autoglue: + # image: ghcr.io/glueops/autoglue:latest + build: . + ports: + - 8080:8080 + expose: + - 8080 + env_file: .env + environment: + AUTOGLUE_DATABASE_DSN: postgres://$DB_USER:$DB_PASSWORD@postgres:5432/$DB_NAME + AUTOGLUE_BIND_ADDRESS: 0.0.0.0 + depends_on: + - postgres + + postgres: + build: + context: postgres + env_file: .env + environment: + POSTGRES_USER: $DB_USER + POSTGRES_PASSWORD: $DB_PASSWORD + POSTGRES_DB: $DB_NAME + expose: + - 5432 + ports: + - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql/data + + pgweb: + image: sosedoff/pgweb@sha256:8f1ed22e10c9da0912169b98b62ddc54930dc39a5ae07b0f1354d2a93d44c6ed + restart: always + ports: + - "8081:8081" + links: + - postgres:postgres + env_file: .env + environment: + PGWEB_DATABASE_URL: postgres://$DB_USER:$DB_PASSWORD@postgres:5432/$DB_NAME + depends_on: + - postgres + + mailpit: + image: axllent/mailpit@sha256:6abc8e633df15eaf785cfcf38bae48e66f64beecdc03121e249d0f9ec15f0707 + restart: always + ports: + - "1025:1025" + - "8025:8025" + +volumes: + postgres_data: diff --git a/docs/docs.go b/docs/docs.go new file mode 100644 index 0000000..c172431 --- /dev/null +++ b/docs/docs.go @@ -0,0 +1,26 @@ +// Code generated by swaggo/swag. DO NOT EDIT. + +package docs + +import "github.com/swaggo/swag/v2" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }},"swagger":"2.0","info":{"description":"{{escape .Description}}","title":"{{.Title}}","contact":{"name":"GlueOps"},"version":"{{.Version}}"},"host":"{{.Host}}","basePath":"{{.BasePath}}","paths":{"/.well-known/jwks.json":{"get":{"description":"Returns the JSON Web Key Set for token verification","produces":["application/json"],"tags":["Auth"],"summary":"Get JWKS","operationId":"getJWKS","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.JWKS"}}}}},"/auth/logout":{"post":{"consumes":["application/json"],"produces":["application/json"],"tags":["Auth"],"summary":"Revoke refresh token family (logout everywhere)","operationId":"Logout","parameters":[{"description":"Refresh token","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.LogoutRequest"}}],"responses":{"204":{"description":"No Content"}}}},"/auth/refresh":{"post":{"consumes":["application/json"],"produces":["application/json"],"tags":["Auth"],"summary":"Rotate refresh token","operationId":"Refresh","parameters":[{"description":"Refresh token","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.RefreshRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.TokenPair"}}}}},"/auth/{provider}/callback":{"get":{"produces":["application/json"],"tags":["Auth"],"summary":"Handle social login callback","operationId":"AuthCallback","parameters":[{"type":"string","description":"google|github","name":"provider","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.TokenPair"}}}}},"/auth/{provider}/start":{"post":{"description":"Returns provider authorization URL for the frontend to redirect","produces":["application/json"],"tags":["Auth"],"summary":"Begin social login","operationId":"AuthStart","parameters":[{"type":"string","description":"google|github","name":"provider","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.AuthStartResponse"}}}}},"/me":{"get":{"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"produces":["application/json"],"tags":["Me"],"summary":"Get current user profile","operationId":"GetMe","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/handlers.meResponse"}}}},"patch":{"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Me"],"summary":"Update current user profile","operationId":"UpdateMe","parameters":[{"description":"Patch profile","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.updateMeRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/models.User"}}}}},"/me/api-keys":{"get":{"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"produces":["application/json"],"tags":["Me / API Keys"],"summary":"List my API keys","operationId":"ListUserAPIKeys","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/handlers.userAPIKeyOut"}}}}},"post":{"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"description":"Returns the plaintext key once. Store it securely on the client side.","consumes":["application/json"],"produces":["application/json"],"tags":["Me / API Keys"],"summary":"Create a new user API key","operationId":"CreateUserAPIKey","parameters":[{"description":"Key options","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.createUserKeyRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/handlers.userAPIKeyOut"}}}}},"/me/api-keys/{id}":{"delete":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Me / API Keys"],"summary":"Delete a user API key","operationId":"DeleteUserAPIKey","parameters":[{"type":"string","description":"Key ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/orgs":{"get":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"List organizations I belong to","operationId":"listMyOrgs","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/models.Organization"}}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"post":{"security":[{"BearerAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Orgs"],"summary":"Create organization","operationId":"createOrg","parameters":[{"description":"Org payload","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.orgCreateReq"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/models.Organization"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}":{"get":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"Get organization","operationId":"getOrg","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/models.Organization"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"delete":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"Delete organization (owner)","operationId":"deleteOrg","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"patch":{"security":[{"BearerAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Orgs"],"summary":"Update organization (owner/admin)","operationId":"updateOrg","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"description":"Update payload","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.orgUpdateReq"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/models.Organization"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}/api-keys":{"get":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"List org-scoped API keys (no secrets)","operationId":"listOrgKeys","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/models.APIKey"}}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"post":{"security":[{"BearerAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Orgs"],"summary":"Create org key/secret pair (owner/admin)","operationId":"createOrgKey","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"description":"Key name + optional expiry","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.orgKeyCreateReq"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/handlers.orgKeyCreateResp"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}/api-keys/{key_id}":{"delete":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"Delete org key (owner/admin)","operationId":"deleteOrgKey","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"type":"string","description":"Key ID (UUID)","name":"key_id","in":"path","required":true}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}/members":{"get":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"List members in org","operationId":"listMembers","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/handlers.memberOut"}}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"post":{"security":[{"BearerAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Orgs"],"summary":"Add or update a member (owner/admin)","operationId":"addOrUpdateMember","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"description":"User \u0026 role","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.memberUpsertReq"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/handlers.memberOut"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}/members/{user_id}":{"delete":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"Remove a member (owner/admin)","operationId":"removeMember","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"type":"string","description":"User ID (UUID)","name":"user_id","in":"path","required":true}],"responses":{"204":{"description":"Removed"},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/servers":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns servers for the organization in X-Org-ID. Optional filters: status, role.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"List servers (org scoped)","operationId":"ListServers","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Filter by status (pending|provisioning|ready|failed)","name":"status","in":"query"},{"type":"string","description":"Filter by role","name":"role","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/dto.ServerResponse"}}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"failed to list servers","schema":{"type":"string"}}}},"post":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id belongs to the org.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"Create server (org scoped)","operationId":"CreateServer","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"description":"Server payload","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.CreateServerRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/dto.ServerResponse"}},"400":{"description":"invalid json / missing fields / invalid status / invalid ssh_key_id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"create failed","schema":{"type":"string"}}}}},"/servers/{id}":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns one server in the given organization.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"Get server by ID (org scoped)","operationId":"GetServer","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Server ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.ServerResponse"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"fetch failed","schema":{"type":"string"}}}},"delete":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Permanently deletes the server.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"Delete server (org scoped)","operationId":"DeleteServer","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Server ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"delete failed","schema":{"type":"string"}}}},"patch":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Partially update fields; changing ssh_key_id validates ownership.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"Update server (org scoped)","operationId":"UpdateServer","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Server ID (UUID)","name":"id","in":"path","required":true},{"description":"Fields to update","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.UpdateServerRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.ServerResponse"}},"400":{"description":"invalid id / invalid json / invalid status / invalid ssh_key_id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"update failed","schema":{"type":"string"}}}}},"/ssh":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns ssh keys for the organization in X-Org-ID.","consumes":["application/json"],"produces":["application/json"],"tags":["Ssh"],"summary":"List ssh keys (org scoped)","operationId":"ListPublicSshKeys","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/dto.SshResponse"}}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"failed to list keys","schema":{"type":"string"}}}},"post":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Generates an RSA or ED25519 keypair, saves it, and returns metadata. For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores bits.","consumes":["application/json"],"produces":["application/json"],"tags":["Ssh"],"summary":"Create ssh keypair (org scoped)","operationId":"CreateSSHKey","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"description":"Key generation options","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.CreateSSHRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/dto.SshResponse"}},"400":{"description":"invalid json / invalid bits","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"generation/create failed","schema":{"type":"string"}}}}},"/ssh/{id}":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns public key fields. Append ` + "`" + `?reveal=true` + "`" + ` to include the private key PEM.","consumes":["application/json"],"produces":["application/json"],"tags":["Ssh"],"summary":"Get ssh key by ID (org scoped)","operationId":"GetSSHKey","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"SSH Key ID (UUID)","name":"id","in":"path","required":true},{"type":"boolean","description":"Reveal private key PEM","name":"reveal","in":"query"}],"responses":{"200":{"description":"When reveal=true","schema":{"$ref":"#/definitions/dto.SshRevealResponse"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"fetch failed","schema":{"type":"string"}}}},"delete":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Permanently deletes a keypair.","consumes":["application/json"],"produces":["application/json"],"tags":["Ssh"],"summary":"Delete ssh keypair (org scoped)","operationId":"DeleteSSHKey","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"SSH Key ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"delete failed","schema":{"type":"string"}}}}},"/ssh/{id}/download":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Download ` + "`" + `part=public|private|both` + "`" + ` of the keypair. ` + "`" + `both` + "`" + ` returns a zip file.","produces":["application/json"],"tags":["Ssh"],"summary":"Download ssh key files by ID (org scoped)","operationId":"DownloadSSHKey","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header","required":true},{"type":"string","description":"SSH Key ID (UUID)","name":"id","in":"path","required":true},{"enum":["public","private","both"],"type":"string","description":"Which part to download","name":"part","in":"query","required":true}],"responses":{"200":{"description":"file content","schema":{"type":"string"}},"400":{"description":"invalid id / invalid part","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"download failed","schema":{"type":"string"}}}}},"/taints":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns node taints for the organization in X-Org-ID. Filters: ` + "`" + `key` + "`" + `, ` + "`" + `value` + "`" + `, and ` + "`" + `q` + "`" + ` (key contains). Add ` + "`" + `include=node_pools` + "`" + ` to include linked node pools.","consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"List node pool taints (org scoped)","operationId":"ListTaints","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Exact key","name":"key","in":"query"},{"type":"string","description":"Exact value","name":"value","in":"query"},{"type":"string","description":"key contains (case-insensitive)","name":"q","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/dto.TaintResponse"}}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"failed to list node taints","schema":{"type":"string"}}}},"post":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Creates a taint.","consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"Create node taint (org scoped)","operationId":"CreateTaint","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"description":"Taint payload","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.CreateTaintRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/dto.TaintResponse"}},"400":{"description":"invalid json / missing fields / invalid node_pool_ids","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"create failed","schema":{"type":"string"}}}}},"/taints/{id}":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"Get node taint by ID (org scoped)","operationId":"GetTaint","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Node Taint ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.TaintResponse"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"fetch failed","schema":{"type":"string"}}}},"delete":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Permanently deletes the taint.","consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"Delete taint (org scoped)","operationId":"DeleteTaint","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Node Taint ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"delete failed","schema":{"type":"string"}}}},"patch":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Partially update taint fields.","consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"Update node taint (org scoped)","operationId":"UpdateTaint","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Node Taint ID (UUID)","name":"id","in":"path","required":true},{"description":"Fields to update","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.UpdateTaintRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.TaintResponse"}},"400":{"description":"invalid id / invalid json","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"update failed","schema":{"type":"string"}}}}}},"definitions":{"dto.AuthStartResponse":{"type":"object","properties":{"auth_url":{"type":"string","example":"https://accounts.google.com/o/oauth2/v2/auth?client_id=..."}}},"dto.CreateSSHRequest":{"type":"object","properties":{"bits":{"description":"Only for RSA","type":"integer"},"comment":{"type":"string","example":"deploy@autoglue"},"name":{"type":"string"},"type":{"description":"\"rsa\" (default) or \"ed25519\"","type":"string"}}},"dto.CreateServerRequest":{"type":"object","properties":{"hostname":{"type":"string"},"private_ip_address":{"type":"string"},"public_ip_address":{"type":"string"},"role":{"type":"string","example":"master|worker|bastion"},"ssh_key_id":{"type":"string"},"ssh_user":{"type":"string"},"status":{"type":"string","example":"pending|provisioning|ready|failed"}}},"dto.CreateTaintRequest":{"type":"object","properties":{"effect":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}}},"dto.JWK":{"type":"object","properties":{"alg":{"type":"string","example":"RS256"},"e":{"type":"string","example":"AQAB"},"kid":{"type":"string","example":"7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345"},"kty":{"type":"string","example":"RSA"},"n":{"type":"string"},"use":{"type":"string","example":"sig"},"x":{"type":"string"}}},"dto.JWKS":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/definitions/dto.JWK"}}}},"dto.LogoutRequest":{"type":"object","properties":{"refresh_token":{"type":"string","example":"m0l9o8rT3t0V8d3eFf..."}}},"dto.RefreshRequest":{"type":"object","properties":{"refresh_token":{"type":"string","example":"m0l9o8rT3t0V8d3eFf..."}}},"dto.ServerResponse":{"type":"object","properties":{"created_at":{"type":"string"},"hostname":{"type":"string"},"id":{"type":"string"},"organization_id":{"type":"string"},"private_ip_address":{"type":"string"},"public_ip_address":{"type":"string"},"role":{"type":"string"},"ssh_key_id":{"type":"string"},"ssh_user":{"type":"string"},"status":{"type":"string"},"updated_at":{"type":"string"}}},"dto.SshResponse":{"type":"object","properties":{"created_at":{"type":"string"},"fingerprint":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"organization_id":{"type":"string"},"public_key":{"type":"string"},"updated_at":{"type":"string"}}},"dto.SshRevealResponse":{"type":"object","properties":{"created_at":{"type":"string"},"fingerprint":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"organization_id":{"type":"string"},"private_key":{"type":"string"},"public_key":{"type":"string"},"updated_at":{"type":"string"}}},"dto.TaintResponse":{"type":"object","properties":{"effect":{"type":"string"},"id":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}}},"dto.TokenPair":{"type":"object","properties":{"access_token":{"type":"string","example":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ij..."},"expires_in":{"type":"integer","example":3600},"refresh_token":{"type":"string","example":"m0l9o8rT3t0V8d3eFf...."},"token_type":{"type":"string","example":"Bearer"}}},"dto.UpdateServerRequest":{"type":"object","properties":{"hostname":{"type":"string"},"private_ip_address":{"type":"string"},"public_ip_address":{"type":"string"},"role":{"type":"string","example":"master|worker|bastion"},"ssh_key_id":{"type":"string"},"ssh_user":{"type":"string"},"status":{"type":"string","example":"pending|provisioning|ready|failed"}}},"dto.UpdateTaintRequest":{"type":"object","properties":{"effect":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}}},"handlers.createUserKeyRequest":{"type":"object","properties":{"expires_in_hours":{"description":"optional TTL","type":"integer"},"name":{"type":"string"}}},"handlers.meResponse":{"type":"object","properties":{"avatar_url":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string"},"emails":{"type":"array","items":{"$ref":"#/definitions/models.UserEmail"}},"id":{"description":"example: 3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"string","format":"uuid"},"is_disabled":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/definitions/models.Organization"}},"primary_email":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}}},"handlers.memberOut":{"type":"object","properties":{"email":{"type":"string"},"role":{"description":"owner/admin/member","type":"string"},"user_id":{"type":"string","format":"uuid"}}},"handlers.memberUpsertReq":{"type":"object","properties":{"role":{"type":"string","example":"member"},"user_id":{"type":"string","format":"uuid"}}},"handlers.orgCreateReq":{"type":"object","properties":{"domain":{"type":"string","example":"acme.com"},"name":{"type":"string","example":"Acme Corp"}}},"handlers.orgKeyCreateReq":{"type":"object","properties":{"expires_in_hours":{"type":"integer","example":720},"name":{"type":"string","example":"automation-bot"}}},"handlers.orgKeyCreateResp":{"type":"object","properties":{"created_at":{"type":"string"},"expires_at":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"org_key":{"description":"shown once:","type":"string"},"org_secret":{"description":"shown once:","type":"string"},"scope":{"description":"\"org\"","type":"string"}}},"handlers.orgUpdateReq":{"type":"object","properties":{"domain":{"type":"string"},"name":{"type":"string"}}},"handlers.updateMeRequest":{"type":"object","properties":{"display_name":{"type":"string"}}},"handlers.userAPIKeyOut":{"type":"object","properties":{"created_at":{"type":"string"},"expires_at":{"type":"string"},"id":{"type":"string","format":"uuid"},"last_used_at":{"type":"string"},"name":{"type":"string"},"plain":{"description":"Shown only on create:","type":"string"},"scope":{"description":"\"user\"","type":"string"}}},"models.APIKey":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"last_used_at":{"type":"string","format":"date-time"},"name":{"type":"string"},"org_id":{"type":"string","format":"uuid"},"prefix":{"type":"string"},"revoked":{"type":"boolean"},"scope":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","format":"uuid"}}},"models.Organization":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"domain":{"type":"string"},"id":{"description":"example: 3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"string","format":"uuid"},"name":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}}},"models.User":{"type":"object","properties":{"avatar_url":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string"},"id":{"description":"example: 3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"string","format":"uuid"},"is_disabled":{"type":"boolean"},"primary_email":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}}},"models.UserEmail":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string"},"id":{"description":"example: 3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"string","format":"uuid"},"is_primary":{"type":"boolean"},"is_verified":{"type":"boolean"},"updated_at":{"type":"string","format":"date-time"},"user":{"$ref":"#/definitions/models.User"},"user_id":{"type":"string","format":"uuid"}}},"utils.ErrorResponse":{"type":"object","properties":{"code":{"description":"A machine-readable error code, e.g. \"validation_error\"\nexample: validation_error","type":"string"},"message":{"description":"Human-readable message\nexample: slug is required","type":"string"}}}},"securityDefinitions":{"ApiKeyAuth":{"description":"User API key","type":"apiKey","name":"X-API-KEY","in":"header"},"BearerAuth":{"description":"Bearer token authentication","type":"apiKey","name":"Authorization","in":"header"},"OrgKeyAuth":{"description":"Org-level key/secret authentication","type":"apiKey","name":"X-ORG-KEY","in":"header"},"OrgSecretAuth":{"description":"Org-level secret","type":"apiKey","name":"X-ORG-SECRET","in":"header"}}}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "1.0", + Host: "localhost:8080", + BasePath: "/api/v1", + Schemes: []string{"http", "https"}, + Title: "AutoGlue API", + Description: "API for managing K3s clusters across cloud providers", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, + LeftDelim: "{{", + RightDelim: "}}", +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/docs/efs.go b/docs/efs.go new file mode 100644 index 0000000..1de7ee1 --- /dev/null +++ b/docs/efs.go @@ -0,0 +1,9 @@ +package docs + +import _ "embed" + +//go:embed swagger.json +var SwaggerJSON []byte + +//go:embed swagger.yaml +var SwaggerYAML []byte diff --git a/docs/swagger.json b/docs/swagger.json new file mode 100644 index 0000000..175b5af --- /dev/null +++ b/docs/swagger.json @@ -0,0 +1 @@ +{"schemes":["http","https"],"swagger":"2.0","info":{"description":"API for managing K3s clusters across cloud providers","title":"AutoGlue API","contact":{"name":"GlueOps"},"version":"1.0"},"host":"localhost:8080","basePath":"/api/v1","paths":{"/.well-known/jwks.json":{"get":{"description":"Returns the JSON Web Key Set for token verification","produces":["application/json"],"tags":["Auth"],"summary":"Get JWKS","operationId":"getJWKS","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.JWKS"}}}}},"/auth/logout":{"post":{"consumes":["application/json"],"produces":["application/json"],"tags":["Auth"],"summary":"Revoke refresh token family (logout everywhere)","operationId":"Logout","parameters":[{"description":"Refresh token","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.LogoutRequest"}}],"responses":{"204":{"description":"No Content"}}}},"/auth/refresh":{"post":{"consumes":["application/json"],"produces":["application/json"],"tags":["Auth"],"summary":"Rotate refresh token","operationId":"Refresh","parameters":[{"description":"Refresh token","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.RefreshRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.TokenPair"}}}}},"/auth/{provider}/callback":{"get":{"produces":["application/json"],"tags":["Auth"],"summary":"Handle social login callback","operationId":"AuthCallback","parameters":[{"type":"string","description":"google|github","name":"provider","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.TokenPair"}}}}},"/auth/{provider}/start":{"post":{"description":"Returns provider authorization URL for the frontend to redirect","produces":["application/json"],"tags":["Auth"],"summary":"Begin social login","operationId":"AuthStart","parameters":[{"type":"string","description":"google|github","name":"provider","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.AuthStartResponse"}}}}},"/me":{"get":{"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"produces":["application/json"],"tags":["Me"],"summary":"Get current user profile","operationId":"GetMe","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/handlers.meResponse"}}}},"patch":{"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Me"],"summary":"Update current user profile","operationId":"UpdateMe","parameters":[{"description":"Patch profile","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.updateMeRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/models.User"}}}}},"/me/api-keys":{"get":{"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"produces":["application/json"],"tags":["Me / API Keys"],"summary":"List my API keys","operationId":"ListUserAPIKeys","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/handlers.userAPIKeyOut"}}}}},"post":{"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"description":"Returns the plaintext key once. Store it securely on the client side.","consumes":["application/json"],"produces":["application/json"],"tags":["Me / API Keys"],"summary":"Create a new user API key","operationId":"CreateUserAPIKey","parameters":[{"description":"Key options","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.createUserKeyRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/handlers.userAPIKeyOut"}}}}},"/me/api-keys/{id}":{"delete":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Me / API Keys"],"summary":"Delete a user API key","operationId":"DeleteUserAPIKey","parameters":[{"type":"string","description":"Key ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/orgs":{"get":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"List organizations I belong to","operationId":"listMyOrgs","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/models.Organization"}}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"post":{"security":[{"BearerAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Orgs"],"summary":"Create organization","operationId":"createOrg","parameters":[{"description":"Org payload","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.orgCreateReq"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/models.Organization"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}":{"get":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"Get organization","operationId":"getOrg","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/models.Organization"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"delete":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"Delete organization (owner)","operationId":"deleteOrg","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"patch":{"security":[{"BearerAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Orgs"],"summary":"Update organization (owner/admin)","operationId":"updateOrg","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"description":"Update payload","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.orgUpdateReq"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/models.Organization"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}/api-keys":{"get":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"List org-scoped API keys (no secrets)","operationId":"listOrgKeys","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/models.APIKey"}}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"post":{"security":[{"BearerAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Orgs"],"summary":"Create org key/secret pair (owner/admin)","operationId":"createOrgKey","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"description":"Key name + optional expiry","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.orgKeyCreateReq"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/handlers.orgKeyCreateResp"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}/api-keys/{key_id}":{"delete":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"Delete org key (owner/admin)","operationId":"deleteOrgKey","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"type":"string","description":"Key ID (UUID)","name":"key_id","in":"path","required":true}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}/members":{"get":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"List members in org","operationId":"listMembers","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/handlers.memberOut"}}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}},"post":{"security":[{"BearerAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Orgs"],"summary":"Add or update a member (owner/admin)","operationId":"addOrUpdateMember","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"description":"User \u0026 role","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/handlers.memberUpsertReq"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/handlers.memberOut"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/orgs/{id}/members/{user_id}":{"delete":{"security":[{"BearerAuth":[]}],"produces":["application/json"],"tags":["Orgs"],"summary":"Remove a member (owner/admin)","operationId":"removeMember","parameters":[{"type":"string","description":"Org ID (UUID)","name":"id","in":"path","required":true},{"type":"string","description":"User ID (UUID)","name":"user_id","in":"path","required":true}],"responses":{"204":{"description":"Removed"},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/utils.ErrorResponse"}}}}},"/servers":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns servers for the organization in X-Org-ID. Optional filters: status, role.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"List servers (org scoped)","operationId":"ListServers","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Filter by status (pending|provisioning|ready|failed)","name":"status","in":"query"},{"type":"string","description":"Filter by role","name":"role","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/dto.ServerResponse"}}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"failed to list servers","schema":{"type":"string"}}}},"post":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id belongs to the org.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"Create server (org scoped)","operationId":"CreateServer","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"description":"Server payload","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.CreateServerRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/dto.ServerResponse"}},"400":{"description":"invalid json / missing fields / invalid status / invalid ssh_key_id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"create failed","schema":{"type":"string"}}}}},"/servers/{id}":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns one server in the given organization.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"Get server by ID (org scoped)","operationId":"GetServer","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Server ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.ServerResponse"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"fetch failed","schema":{"type":"string"}}}},"delete":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Permanently deletes the server.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"Delete server (org scoped)","operationId":"DeleteServer","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Server ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"delete failed","schema":{"type":"string"}}}},"patch":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Partially update fields; changing ssh_key_id validates ownership.","consumes":["application/json"],"produces":["application/json"],"tags":["Servers"],"summary":"Update server (org scoped)","operationId":"UpdateServer","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Server ID (UUID)","name":"id","in":"path","required":true},{"description":"Fields to update","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.UpdateServerRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.ServerResponse"}},"400":{"description":"invalid id / invalid json / invalid status / invalid ssh_key_id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"update failed","schema":{"type":"string"}}}}},"/ssh":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns ssh keys for the organization in X-Org-ID.","consumes":["application/json"],"produces":["application/json"],"tags":["Ssh"],"summary":"List ssh keys (org scoped)","operationId":"ListPublicSshKeys","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/dto.SshResponse"}}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"failed to list keys","schema":{"type":"string"}}}},"post":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Generates an RSA or ED25519 keypair, saves it, and returns metadata. For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores bits.","consumes":["application/json"],"produces":["application/json"],"tags":["Ssh"],"summary":"Create ssh keypair (org scoped)","operationId":"CreateSSHKey","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"description":"Key generation options","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.CreateSSHRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/dto.SshResponse"}},"400":{"description":"invalid json / invalid bits","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"generation/create failed","schema":{"type":"string"}}}}},"/ssh/{id}":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns public key fields. Append `?reveal=true` to include the private key PEM.","consumes":["application/json"],"produces":["application/json"],"tags":["Ssh"],"summary":"Get ssh key by ID (org scoped)","operationId":"GetSSHKey","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"SSH Key ID (UUID)","name":"id","in":"path","required":true},{"type":"boolean","description":"Reveal private key PEM","name":"reveal","in":"query"}],"responses":{"200":{"description":"When reveal=true","schema":{"$ref":"#/definitions/dto.SshRevealResponse"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"fetch failed","schema":{"type":"string"}}}},"delete":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Permanently deletes a keypair.","consumes":["application/json"],"produces":["application/json"],"tags":["Ssh"],"summary":"Delete ssh keypair (org scoped)","operationId":"DeleteSSHKey","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"SSH Key ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"delete failed","schema":{"type":"string"}}}}},"/ssh/{id}/download":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Download `part=public|private|both` of the keypair. `both` returns a zip file.","produces":["application/json"],"tags":["Ssh"],"summary":"Download ssh key files by ID (org scoped)","operationId":"DownloadSSHKey","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header","required":true},{"type":"string","description":"SSH Key ID (UUID)","name":"id","in":"path","required":true},{"enum":["public","private","both"],"type":"string","description":"Which part to download","name":"part","in":"query","required":true}],"responses":{"200":{"description":"file content","schema":{"type":"string"}},"400":{"description":"invalid id / invalid part","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"download failed","schema":{"type":"string"}}}}},"/taints":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Returns node taints for the organization in X-Org-ID. Filters: `key`, `value`, and `q` (key contains). Add `include=node_pools` to include linked node pools.","consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"List node pool taints (org scoped)","operationId":"ListTaints","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Exact key","name":"key","in":"query"},{"type":"string","description":"Exact value","name":"value","in":"query"},{"type":"string","description":"key contains (case-insensitive)","name":"q","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/dto.TaintResponse"}}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"failed to list node taints","schema":{"type":"string"}}}},"post":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Creates a taint.","consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"Create node taint (org scoped)","operationId":"CreateTaint","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"description":"Taint payload","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.CreateTaintRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/dto.TaintResponse"}},"400":{"description":"invalid json / missing fields / invalid node_pool_ids","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"create failed","schema":{"type":"string"}}}}},"/taints/{id}":{"get":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"Get node taint by ID (org scoped)","operationId":"GetTaint","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Node Taint ID (UUID)","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.TaintResponse"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"fetch failed","schema":{"type":"string"}}}},"delete":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Permanently deletes the taint.","consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"Delete taint (org scoped)","operationId":"DeleteTaint","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Node Taint ID (UUID)","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"invalid id","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"500":{"description":"delete failed","schema":{"type":"string"}}}},"patch":{"security":[{"BearerAuth":[]},{"OrgKeyAuth":[]},{"OrgSecretAuth":[]}],"description":"Partially update taint fields.","consumes":["application/json"],"produces":["application/json"],"tags":["Taints"],"summary":"Update node taint (org scoped)","operationId":"UpdateTaint","parameters":[{"type":"string","description":"Organization UUID","name":"X-Org-ID","in":"header"},{"type":"string","description":"Node Taint ID (UUID)","name":"id","in":"path","required":true},{"description":"Fields to update","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/dto.UpdateTaintRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/dto.TaintResponse"}},"400":{"description":"invalid id / invalid json","schema":{"type":"string"}},"401":{"description":"Unauthorized","schema":{"type":"string"}},"403":{"description":"organization required","schema":{"type":"string"}},"404":{"description":"not found","schema":{"type":"string"}},"500":{"description":"update failed","schema":{"type":"string"}}}}}},"definitions":{"dto.AuthStartResponse":{"type":"object","properties":{"auth_url":{"type":"string","example":"https://accounts.google.com/o/oauth2/v2/auth?client_id=..."}}},"dto.CreateSSHRequest":{"type":"object","properties":{"bits":{"description":"Only for RSA","type":"integer"},"comment":{"type":"string","example":"deploy@autoglue"},"name":{"type":"string"},"type":{"description":"\"rsa\" (default) or \"ed25519\"","type":"string"}}},"dto.CreateServerRequest":{"type":"object","properties":{"hostname":{"type":"string"},"private_ip_address":{"type":"string"},"public_ip_address":{"type":"string"},"role":{"type":"string","example":"master|worker|bastion"},"ssh_key_id":{"type":"string"},"ssh_user":{"type":"string"},"status":{"type":"string","example":"pending|provisioning|ready|failed"}}},"dto.CreateTaintRequest":{"type":"object","properties":{"effect":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}}},"dto.JWK":{"type":"object","properties":{"alg":{"type":"string","example":"RS256"},"e":{"type":"string","example":"AQAB"},"kid":{"type":"string","example":"7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345"},"kty":{"type":"string","example":"RSA"},"n":{"type":"string"},"use":{"type":"string","example":"sig"},"x":{"type":"string"}}},"dto.JWKS":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/definitions/dto.JWK"}}}},"dto.LogoutRequest":{"type":"object","properties":{"refresh_token":{"type":"string","example":"m0l9o8rT3t0V8d3eFf..."}}},"dto.RefreshRequest":{"type":"object","properties":{"refresh_token":{"type":"string","example":"m0l9o8rT3t0V8d3eFf..."}}},"dto.ServerResponse":{"type":"object","properties":{"created_at":{"type":"string"},"hostname":{"type":"string"},"id":{"type":"string"},"organization_id":{"type":"string"},"private_ip_address":{"type":"string"},"public_ip_address":{"type":"string"},"role":{"type":"string"},"ssh_key_id":{"type":"string"},"ssh_user":{"type":"string"},"status":{"type":"string"},"updated_at":{"type":"string"}}},"dto.SshResponse":{"type":"object","properties":{"created_at":{"type":"string"},"fingerprint":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"organization_id":{"type":"string"},"public_key":{"type":"string"},"updated_at":{"type":"string"}}},"dto.SshRevealResponse":{"type":"object","properties":{"created_at":{"type":"string"},"fingerprint":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"organization_id":{"type":"string"},"private_key":{"type":"string"},"public_key":{"type":"string"},"updated_at":{"type":"string"}}},"dto.TaintResponse":{"type":"object","properties":{"effect":{"type":"string"},"id":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}}},"dto.TokenPair":{"type":"object","properties":{"access_token":{"type":"string","example":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ij..."},"expires_in":{"type":"integer","example":3600},"refresh_token":{"type":"string","example":"m0l9o8rT3t0V8d3eFf...."},"token_type":{"type":"string","example":"Bearer"}}},"dto.UpdateServerRequest":{"type":"object","properties":{"hostname":{"type":"string"},"private_ip_address":{"type":"string"},"public_ip_address":{"type":"string"},"role":{"type":"string","example":"master|worker|bastion"},"ssh_key_id":{"type":"string"},"ssh_user":{"type":"string"},"status":{"type":"string","example":"pending|provisioning|ready|failed"}}},"dto.UpdateTaintRequest":{"type":"object","properties":{"effect":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}}},"handlers.createUserKeyRequest":{"type":"object","properties":{"expires_in_hours":{"description":"optional TTL","type":"integer"},"name":{"type":"string"}}},"handlers.meResponse":{"type":"object","properties":{"avatar_url":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string"},"emails":{"type":"array","items":{"$ref":"#/definitions/models.UserEmail"}},"id":{"description":"example: 3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"string","format":"uuid"},"is_disabled":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/definitions/models.Organization"}},"primary_email":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}}},"handlers.memberOut":{"type":"object","properties":{"email":{"type":"string"},"role":{"description":"owner/admin/member","type":"string"},"user_id":{"type":"string","format":"uuid"}}},"handlers.memberUpsertReq":{"type":"object","properties":{"role":{"type":"string","example":"member"},"user_id":{"type":"string","format":"uuid"}}},"handlers.orgCreateReq":{"type":"object","properties":{"domain":{"type":"string","example":"acme.com"},"name":{"type":"string","example":"Acme Corp"}}},"handlers.orgKeyCreateReq":{"type":"object","properties":{"expires_in_hours":{"type":"integer","example":720},"name":{"type":"string","example":"automation-bot"}}},"handlers.orgKeyCreateResp":{"type":"object","properties":{"created_at":{"type":"string"},"expires_at":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"org_key":{"description":"shown once:","type":"string"},"org_secret":{"description":"shown once:","type":"string"},"scope":{"description":"\"org\"","type":"string"}}},"handlers.orgUpdateReq":{"type":"object","properties":{"domain":{"type":"string"},"name":{"type":"string"}}},"handlers.updateMeRequest":{"type":"object","properties":{"display_name":{"type":"string"}}},"handlers.userAPIKeyOut":{"type":"object","properties":{"created_at":{"type":"string"},"expires_at":{"type":"string"},"id":{"type":"string","format":"uuid"},"last_used_at":{"type":"string"},"name":{"type":"string"},"plain":{"description":"Shown only on create:","type":"string"},"scope":{"description":"\"user\"","type":"string"}}},"models.APIKey":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"last_used_at":{"type":"string","format":"date-time"},"name":{"type":"string"},"org_id":{"type":"string","format":"uuid"},"prefix":{"type":"string"},"revoked":{"type":"boolean"},"scope":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"user_id":{"type":"string","format":"uuid"}}},"models.Organization":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"domain":{"type":"string"},"id":{"description":"example: 3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"string","format":"uuid"},"name":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}}},"models.User":{"type":"object","properties":{"avatar_url":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"display_name":{"type":"string"},"id":{"description":"example: 3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"string","format":"uuid"},"is_disabled":{"type":"boolean"},"primary_email":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}}},"models.UserEmail":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"email":{"type":"string"},"id":{"description":"example: 3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"string","format":"uuid"},"is_primary":{"type":"boolean"},"is_verified":{"type":"boolean"},"updated_at":{"type":"string","format":"date-time"},"user":{"$ref":"#/definitions/models.User"},"user_id":{"type":"string","format":"uuid"}}},"utils.ErrorResponse":{"type":"object","properties":{"code":{"description":"A machine-readable error code, e.g. \"validation_error\"\nexample: validation_error","type":"string"},"message":{"description":"Human-readable message\nexample: slug is required","type":"string"}}}},"securityDefinitions":{"ApiKeyAuth":{"description":"User API key","type":"apiKey","name":"X-API-KEY","in":"header"},"BearerAuth":{"description":"Bearer token authentication","type":"apiKey","name":"Authorization","in":"header"},"OrgKeyAuth":{"description":"Org-level key/secret authentication","type":"apiKey","name":"X-ORG-KEY","in":"header"},"OrgSecretAuth":{"description":"Org-level secret","type":"apiKey","name":"X-ORG-SECRET","in":"header"}}} \ No newline at end of file diff --git a/docs/swagger.yaml b/docs/swagger.yaml new file mode 100644 index 0000000..ef51348 --- /dev/null +++ b/docs/swagger.yaml @@ -0,0 +1,1731 @@ +basePath: /api/v1 +definitions: + dto.AuthStartResponse: + properties: + auth_url: + example: https://accounts.google.com/o/oauth2/v2/auth?client_id=... + type: string + type: object + dto.CreateSSHRequest: + properties: + bits: + description: Only for RSA + type: integer + comment: + example: deploy@autoglue + type: string + name: + type: string + type: + description: '"rsa" (default) or "ed25519"' + type: string + type: object + dto.CreateServerRequest: + properties: + hostname: + type: string + private_ip_address: + type: string + public_ip_address: + type: string + role: + example: master|worker|bastion + type: string + ssh_key_id: + type: string + ssh_user: + type: string + status: + example: pending|provisioning|ready|failed + type: string + type: object + dto.CreateTaintRequest: + properties: + effect: + type: string + key: + type: string + value: + type: string + type: object + dto.JWK: + properties: + alg: + example: RS256 + type: string + e: + example: AQAB + type: string + kid: + example: 7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345 + type: string + kty: + example: RSA + type: string + "n": + type: string + use: + example: sig + type: string + x: + type: string + type: object + dto.JWKS: + properties: + keys: + items: + $ref: '#/definitions/dto.JWK' + type: array + type: object + dto.LogoutRequest: + properties: + refresh_token: + example: m0l9o8rT3t0V8d3eFf... + type: string + type: object + dto.RefreshRequest: + properties: + refresh_token: + example: m0l9o8rT3t0V8d3eFf... + type: string + type: object + dto.ServerResponse: + properties: + created_at: + type: string + hostname: + type: string + id: + type: string + organization_id: + type: string + private_ip_address: + type: string + public_ip_address: + type: string + role: + type: string + ssh_key_id: + type: string + ssh_user: + type: string + status: + type: string + updated_at: + type: string + type: object + dto.SshResponse: + properties: + created_at: + type: string + fingerprint: + type: string + id: + type: string + name: + type: string + organization_id: + type: string + public_key: + type: string + updated_at: + type: string + type: object + dto.SshRevealResponse: + properties: + created_at: + type: string + fingerprint: + type: string + id: + type: string + name: + type: string + organization_id: + type: string + private_key: + type: string + public_key: + type: string + updated_at: + type: string + type: object + dto.TaintResponse: + properties: + effect: + type: string + id: + type: string + key: + type: string + value: + type: string + type: object + dto.TokenPair: + properties: + access_token: + example: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ij... + type: string + expires_in: + example: 3600 + type: integer + refresh_token: + example: m0l9o8rT3t0V8d3eFf.... + type: string + token_type: + example: Bearer + type: string + type: object + dto.UpdateServerRequest: + properties: + hostname: + type: string + private_ip_address: + type: string + public_ip_address: + type: string + role: + example: master|worker|bastion + type: string + ssh_key_id: + type: string + ssh_user: + type: string + status: + example: pending|provisioning|ready|failed + type: string + type: object + dto.UpdateTaintRequest: + properties: + effect: + type: string + key: + type: string + value: + type: string + type: object + handlers.createUserKeyRequest: + properties: + expires_in_hours: + description: optional TTL + type: integer + name: + type: string + type: object + handlers.meResponse: + properties: + avatar_url: + type: string + created_at: + format: date-time + type: string + display_name: + type: string + emails: + items: + $ref: '#/definitions/models.UserEmail' + type: array + id: + description: 'example: 3fa85f64-5717-4562-b3fc-2c963f66afa6' + format: uuid + type: string + is_disabled: + type: boolean + organizations: + items: + $ref: '#/definitions/models.Organization' + type: array + primary_email: + type: string + updated_at: + format: date-time + type: string + type: object + handlers.memberOut: + properties: + email: + type: string + role: + description: owner/admin/member + type: string + user_id: + format: uuid + type: string + type: object + handlers.memberUpsertReq: + properties: + role: + example: member + type: string + user_id: + format: uuid + type: string + type: object + handlers.orgCreateReq: + properties: + domain: + example: acme.com + type: string + name: + example: Acme Corp + type: string + type: object + handlers.orgKeyCreateReq: + properties: + expires_in_hours: + example: 720 + type: integer + name: + example: automation-bot + type: string + type: object + handlers.orgKeyCreateResp: + properties: + created_at: + type: string + expires_at: + type: string + id: + type: string + name: + type: string + org_key: + description: 'shown once:' + type: string + org_secret: + description: 'shown once:' + type: string + scope: + description: '"org"' + type: string + type: object + handlers.orgUpdateReq: + properties: + domain: + type: string + name: + type: string + type: object + handlers.updateMeRequest: + properties: + display_name: + type: string + type: object + handlers.userAPIKeyOut: + properties: + created_at: + type: string + expires_at: + type: string + id: + format: uuid + type: string + last_used_at: + type: string + name: + type: string + plain: + description: 'Shown only on create:' + type: string + scope: + description: '"user"' + type: string + type: object + models.APIKey: + properties: + created_at: + format: date-time + type: string + expires_at: + format: date-time + type: string + id: + format: uuid + type: string + last_used_at: + format: date-time + type: string + name: + type: string + org_id: + format: uuid + type: string + prefix: + type: string + revoked: + type: boolean + scope: + type: string + updated_at: + format: date-time + type: string + user_id: + format: uuid + type: string + type: object + models.Organization: + properties: + created_at: + format: date-time + type: string + domain: + type: string + id: + description: 'example: 3fa85f64-5717-4562-b3fc-2c963f66afa6' + format: uuid + type: string + name: + type: string + updated_at: + format: date-time + type: string + type: object + models.User: + properties: + avatar_url: + type: string + created_at: + format: date-time + type: string + display_name: + type: string + id: + description: 'example: 3fa85f64-5717-4562-b3fc-2c963f66afa6' + format: uuid + type: string + is_disabled: + type: boolean + primary_email: + type: string + updated_at: + format: date-time + type: string + type: object + models.UserEmail: + properties: + created_at: + format: date-time + type: string + email: + type: string + id: + description: 'example: 3fa85f64-5717-4562-b3fc-2c963f66afa6' + format: uuid + type: string + is_primary: + type: boolean + is_verified: + type: boolean + updated_at: + format: date-time + type: string + user: + $ref: '#/definitions/models.User' + user_id: + format: uuid + type: string + type: object + utils.ErrorResponse: + properties: + code: + description: |- + A machine-readable error code, e.g. "validation_error" + example: validation_error + type: string + message: + description: |- + Human-readable message + example: slug is required + type: string + type: object +host: localhost:8080 +info: + contact: + name: GlueOps + description: API for managing K3s clusters across cloud providers + title: AutoGlue API + version: "1.0" +paths: + /.well-known/jwks.json: + get: + description: Returns the JSON Web Key Set for token verification + operationId: getJWKS + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/dto.JWKS' + summary: Get JWKS + tags: + - Auth + /auth/{provider}/callback: + get: + operationId: AuthCallback + parameters: + - description: google|github + in: path + name: provider + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/dto.TokenPair' + summary: Handle social login callback + tags: + - Auth + /auth/{provider}/start: + post: + description: Returns provider authorization URL for the frontend to redirect + operationId: AuthStart + parameters: + - description: google|github + in: path + name: provider + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/dto.AuthStartResponse' + summary: Begin social login + tags: + - Auth + /auth/logout: + post: + consumes: + - application/json + operationId: Logout + parameters: + - description: Refresh token + in: body + name: body + required: true + schema: + $ref: '#/definitions/dto.LogoutRequest' + produces: + - application/json + responses: + "204": + description: No Content + summary: Revoke refresh token family (logout everywhere) + tags: + - Auth + /auth/refresh: + post: + consumes: + - application/json + operationId: Refresh + parameters: + - description: Refresh token + in: body + name: body + required: true + schema: + $ref: '#/definitions/dto.RefreshRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/dto.TokenPair' + summary: Rotate refresh token + tags: + - Auth + /me: + get: + operationId: GetMe + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/handlers.meResponse' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + summary: Get current user profile + tags: + - Me + patch: + consumes: + - application/json + operationId: UpdateMe + parameters: + - description: Patch profile + in: body + name: body + required: true + schema: + $ref: '#/definitions/handlers.updateMeRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/models.User' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + summary: Update current user profile + tags: + - Me + /me/api-keys: + get: + operationId: ListUserAPIKeys + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/handlers.userAPIKeyOut' + type: array + security: + - BearerAuth: [] + - ApiKeyAuth: [] + summary: List my API keys + tags: + - Me / API Keys + post: + consumes: + - application/json + description: Returns the plaintext key once. Store it securely on the client + side. + operationId: CreateUserAPIKey + parameters: + - description: Key options + in: body + name: body + required: true + schema: + $ref: '#/definitions/handlers.createUserKeyRequest' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/handlers.userAPIKeyOut' + security: + - BearerAuth: [] + - ApiKeyAuth: [] + summary: Create a new user API key + tags: + - Me / API Keys + /me/api-keys/{id}: + delete: + operationId: DeleteUserAPIKey + parameters: + - description: Key ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "204": + description: No Content + security: + - BearerAuth: [] + summary: Delete a user API key + tags: + - Me / API Keys + /orgs: + get: + operationId: listMyOrgs + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/models.Organization' + type: array + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: List organizations I belong to + tags: + - Orgs + post: + consumes: + - application/json + operationId: createOrg + parameters: + - description: Org payload + in: body + name: body + required: true + schema: + $ref: '#/definitions/handlers.orgCreateReq' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/models.Organization' + "400": + description: Bad Request + schema: + $ref: '#/definitions/utils.ErrorResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + "409": + description: Conflict + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: Create organization + tags: + - Orgs + /orgs/{id}: + delete: + operationId: deleteOrg + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "204": + description: Deleted + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + "404": + description: Not Found + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: Delete organization (owner) + tags: + - Orgs + get: + operationId: getOrg + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/models.Organization' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + "404": + description: Not Found + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: Get organization + tags: + - Orgs + patch: + consumes: + - application/json + operationId: updateOrg + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + - description: Update payload + in: body + name: body + required: true + schema: + $ref: '#/definitions/handlers.orgUpdateReq' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/models.Organization' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + "404": + description: Not Found + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: Update organization (owner/admin) + tags: + - Orgs + /orgs/{id}/api-keys: + get: + operationId: listOrgKeys + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/models.APIKey' + type: array + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: List org-scoped API keys (no secrets) + tags: + - Orgs + post: + consumes: + - application/json + operationId: createOrgKey + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + - description: Key name + optional expiry + in: body + name: body + required: true + schema: + $ref: '#/definitions/handlers.orgKeyCreateReq' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/handlers.orgKeyCreateResp' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: Create org key/secret pair (owner/admin) + tags: + - Orgs + /orgs/{id}/api-keys/{key_id}: + delete: + operationId: deleteOrgKey + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + - description: Key ID (UUID) + in: path + name: key_id + required: true + type: string + produces: + - application/json + responses: + "204": + description: Deleted + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: Delete org key (owner/admin) + tags: + - Orgs + /orgs/{id}/members: + get: + operationId: listMembers + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/handlers.memberOut' + type: array + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: List members in org + tags: + - Orgs + post: + consumes: + - application/json + operationId: addOrUpdateMember + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + - description: User & role + in: body + name: body + required: true + schema: + $ref: '#/definitions/handlers.memberUpsertReq' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/handlers.memberOut' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: Add or update a member (owner/admin) + tags: + - Orgs + /orgs/{id}/members/{user_id}: + delete: + operationId: removeMember + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + type: string + - description: User ID (UUID) + in: path + name: user_id + required: true + type: string + produces: + - application/json + responses: + "204": + description: Removed + "401": + description: Unauthorized + schema: + $ref: '#/definitions/utils.ErrorResponse' + security: + - BearerAuth: [] + summary: Remove a member (owner/admin) + tags: + - Orgs + /servers: + get: + consumes: + - application/json + description: 'Returns servers for the organization in X-Org-ID. Optional filters: + status, role.' + operationId: ListServers + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Filter by status (pending|provisioning|ready|failed) + in: query + name: status + type: string + - description: Filter by role + in: query + name: role + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/dto.ServerResponse' + type: array + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: failed to list servers + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: List servers (org scoped) + tags: + - Servers + post: + consumes: + - application/json + description: Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id + belongs to the org. + operationId: CreateServer + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Server payload + in: body + name: body + required: true + schema: + $ref: '#/definitions/dto.CreateServerRequest' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/dto.ServerResponse' + "400": + description: invalid json / missing fields / invalid status / invalid ssh_key_id + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: create failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Create server (org scoped) + tags: + - Servers + /servers/{id}: + delete: + consumes: + - application/json + description: Permanently deletes the server. + operationId: DeleteServer + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Server ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "204": + description: No Content + schema: + type: string + "400": + description: invalid id + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: delete failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Delete server (org scoped) + tags: + - Servers + get: + consumes: + - application/json + description: Returns one server in the given organization. + operationId: GetServer + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Server ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/dto.ServerResponse' + "400": + description: invalid id + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: fetch failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Get server by ID (org scoped) + tags: + - Servers + patch: + consumes: + - application/json + description: Partially update fields; changing ssh_key_id validates ownership. + operationId: UpdateServer + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Server ID (UUID) + in: path + name: id + required: true + type: string + - description: Fields to update + in: body + name: body + required: true + schema: + $ref: '#/definitions/dto.UpdateServerRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/dto.ServerResponse' + "400": + description: invalid id / invalid json / invalid status / invalid ssh_key_id + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: update failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Update server (org scoped) + tags: + - Servers + /ssh: + get: + consumes: + - application/json + description: Returns ssh keys for the organization in X-Org-ID. + operationId: ListPublicSshKeys + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/dto.SshResponse' + type: array + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: failed to list keys + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: List ssh keys (org scoped) + tags: + - Ssh + post: + consumes: + - application/json + description: Generates an RSA or ED25519 keypair, saves it, and returns metadata. + For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores + bits. + operationId: CreateSSHKey + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Key generation options + in: body + name: body + required: true + schema: + $ref: '#/definitions/dto.CreateSSHRequest' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/dto.SshResponse' + "400": + description: invalid json / invalid bits + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: generation/create failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Create ssh keypair (org scoped) + tags: + - Ssh + /ssh/{id}: + delete: + consumes: + - application/json + description: Permanently deletes a keypair. + operationId: DeleteSSHKey + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: SSH Key ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "204": + description: No Content + schema: + type: string + "400": + description: invalid id + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: delete failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Delete ssh keypair (org scoped) + tags: + - Ssh + get: + consumes: + - application/json + description: Returns public key fields. Append `?reveal=true` to include the + private key PEM. + operationId: GetSSHKey + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: SSH Key ID (UUID) + in: path + name: id + required: true + type: string + - description: Reveal private key PEM + in: query + name: reveal + type: boolean + produces: + - application/json + responses: + "200": + description: When reveal=true + schema: + $ref: '#/definitions/dto.SshRevealResponse' + "400": + description: invalid id + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: fetch failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Get ssh key by ID (org scoped) + tags: + - Ssh + /ssh/{id}/download: + get: + description: Download `part=public|private|both` of the keypair. `both` returns + a zip file. + operationId: DownloadSSHKey + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + required: true + type: string + - description: SSH Key ID (UUID) + in: path + name: id + required: true + type: string + - description: Which part to download + enum: + - public + - private + - both + in: query + name: part + required: true + type: string + produces: + - application/json + responses: + "200": + description: file content + schema: + type: string + "400": + description: invalid id / invalid part + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: download failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Download ssh key files by ID (org scoped) + tags: + - Ssh + /taints: + get: + consumes: + - application/json + description: 'Returns node taints for the organization in X-Org-ID. Filters: + `key`, `value`, and `q` (key contains). Add `include=node_pools` to include + linked node pools.' + operationId: ListTaints + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Exact key + in: query + name: key + type: string + - description: Exact value + in: query + name: value + type: string + - description: key contains (case-insensitive) + in: query + name: q + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/dto.TaintResponse' + type: array + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: failed to list node taints + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: List node pool taints (org scoped) + tags: + - Taints + post: + consumes: + - application/json + description: Creates a taint. + operationId: CreateTaint + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Taint payload + in: body + name: body + required: true + schema: + $ref: '#/definitions/dto.CreateTaintRequest' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/dto.TaintResponse' + "400": + description: invalid json / missing fields / invalid node_pool_ids + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: create failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Create node taint (org scoped) + tags: + - Taints + /taints/{id}: + delete: + consumes: + - application/json + description: Permanently deletes the taint. + operationId: DeleteTaint + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Node Taint ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "204": + description: No Content + schema: + type: string + "400": + description: invalid id + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "500": + description: delete failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Delete taint (org scoped) + tags: + - Taints + get: + consumes: + - application/json + operationId: GetTaint + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Node Taint ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/dto.TaintResponse' + "400": + description: invalid id + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: fetch failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Get node taint by ID (org scoped) + tags: + - Taints + patch: + consumes: + - application/json + description: Partially update taint fields. + operationId: UpdateTaint + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + type: string + - description: Node Taint ID (UUID) + in: path + name: id + required: true + type: string + - description: Fields to update + in: body + name: body + required: true + schema: + $ref: '#/definitions/dto.UpdateTaintRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/dto.TaintResponse' + "400": + description: invalid id / invalid json + schema: + type: string + "401": + description: Unauthorized + schema: + type: string + "403": + description: organization required + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: update failed + schema: + type: string + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Update node taint (org scoped) + tags: + - Taints +schemes: +- http +- https +securityDefinitions: + ApiKeyAuth: + description: User API key + in: header + name: X-API-KEY + type: apiKey + BearerAuth: + description: Bearer token authentication + in: header + name: Authorization + type: apiKey + OrgKeyAuth: + description: Org-level key/secret authentication + in: header + name: X-ORG-KEY + type: apiKey + OrgSecretAuth: + description: Org-level secret + in: header + name: X-ORG-SECRET + type: apiKey +swagger: "2.0" diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..39b1311 --- /dev/null +++ b/go.mod @@ -0,0 +1,70 @@ +module github.com/glueops/autoglue + +go 1.25.3 + +require ( + github.com/alexedwards/argon2id v1.0.0 + github.com/coreos/go-oidc/v3 v3.16.0 + github.com/go-chi/chi/v5 v5.2.3 + github.com/go-chi/cors v1.2.2 + github.com/go-chi/httprate v0.15.0 + github.com/golang-jwt/jwt/v5 v5.3.0 + github.com/google/uuid v1.6.0 + github.com/joho/godotenv v1.5.1 + github.com/rs/zerolog v1.34.0 + github.com/spf13/cobra v1.10.1 + github.com/spf13/viper v1.21.0 + github.com/swaggo/http-swagger/v2 v2.0.2 + github.com/swaggo/swag/v2 v2.0.0-rc4 + golang.org/x/crypto v0.35.0 + golang.org/x/oauth2 v0.32.0 + gopkg.in/yaml.v3 v3.0.1 + gorm.io/datatypes v1.2.7 + gorm.io/driver/postgres v1.6.0 + gorm.io/gorm v1.31.0 +) + +require ( + filippo.io/edwards25519 v1.1.0 // indirect + github.com/KyleBanks/depth v1.2.1 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/go-jose/go-jose/v4 v4.1.3 // indirect + github.com/go-openapi/jsonpointer v0.22.1 // indirect + github.com/go-openapi/jsonreference v0.21.2 // indirect + github.com/go-openapi/spec v0.20.9 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-openapi/swag/jsonname v0.25.1 // indirect + github.com/go-sql-driver/mysql v1.8.1 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.6.0 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/sagikazarmark/locafero v0.11.0 // indirect + github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect + github.com/spf13/afero v1.15.0 // indirect + github.com/spf13/cast v1.10.0 // indirect + github.com/spf13/pflag v1.0.10 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/sv-tools/openapi v0.2.1 // indirect + github.com/swaggo/files/v2 v2.0.0 // indirect + github.com/swaggo/swag v1.8.1 // indirect + github.com/zeebo/xxh3 v1.0.2 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/tools v0.35.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gorm.io/driver/mysql v1.5.6 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..a4cec28 --- /dev/null +++ b/go.sum @@ -0,0 +1,236 @@ +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/agiledragon/gomonkey/v2 v2.3.1 h1:k+UnUY0EMNYUFUAQVETGY9uUTxjMdnUkP0ARyJS1zzs= +github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY= +github.com/alexedwards/argon2id v1.0.0 h1:wJzDx66hqWX7siL/SRUmgz3F8YMrd/nfX/xHHcQQP0w= +github.com/alexedwards/argon2id v1.0.0/go.mod h1:tYKkqIjzXvZdzPvADMWOEZ+l6+BD6CtBXMj5fnJppiw= +github.com/coreos/go-oidc/v3 v3.16.0 h1:qRQUCFstKpXwmEjDQTIbyY/5jF00+asXzSkmkoa/mow= +github.com/coreos/go-oidc/v3 v3.16.0/go.mod h1:wqPbKFrVnE90vty060SB40FCJ8fTHTxSwyXJqZH+sI8= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/go-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE= +github.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= +github.com/go-chi/cors v1.2.2 h1:Jmey33TE+b+rB7fT8MUy1u0I4L+NARQlK6LhzKPSyQE= +github.com/go-chi/cors v1.2.2/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= +github.com/go-chi/httprate v0.15.0 h1:j54xcWV9KGmPf/X4H32/aTH+wBlrvxL7P+SdnRqxh5g= +github.com/go-chi/httprate v0.15.0/go.mod h1:rzGHhVrsBn3IMLYDOZQsSU4fJNWcjui4fWKJcCId1R4= +github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= +github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.22.1 h1:sHYI1He3b9NqJ4wXLoJDKmUmHkWy/L7rtEo92JUxBNk= +github.com/go-openapi/jsonpointer v0.22.1/go.mod h1:pQT9OsLkfz1yWoMgYFy4x3U5GY5nUlsOn1qSBH5MkCM= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/jsonreference v0.21.2 h1:Wxjda4M/BBQllegefXrY/9aq1fxBA8sI5M/lFU6tSWU= +github.com/go-openapi/jsonreference v0.21.2/go.mod h1:pp3PEjIsJ9CZDGCNOyXIQxsNuroxm8FAJ/+quA0yKzQ= +github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= +github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag/jsonname v0.25.1 h1:Sgx+qbwa4ej6AomWC6pEfXrA6uP2RkaNjA9BR8a1RJU= +github.com/go-openapi/swag/jsonname v0.25.1/go.mod h1:71Tekow6UOLBD3wS7XhdT98g5J5GR13NOTQ9/6Q11Zo= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.6.0 h1:SWJzexBzPL5jb0GEsrPMLIsi/3jOo7RHlzTjcAeDrPY= +github.com/jackc/pgx/v5 v5.6.0/go.mod h1:DNZ/vlrUnhWCoFGxHAG8U2ljioxukquj7utPDgtQdTw= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA= +github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/otiai10/copy v1.7.0 h1:hVoPiN+t+7d2nzzwMiDHPSOogsWAStewq3TwU05+clE= +github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= +github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= +github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/sv-tools/openapi v0.2.1 h1:ES1tMQMJFGibWndMagvdoo34T1Vllxr1Nlm5wz6b1aA= +github.com/sv-tools/openapi v0.2.1/go.mod h1:k5VuZamTw1HuiS9p2Wl5YIDWzYnHG6/FgPOSFXLAhGg= +github.com/swaggo/files/v2 v2.0.0 h1:hmAt8Dkynw7Ssz46F6pn8ok6YmGZqHSVLZ+HQM7i0kw= +github.com/swaggo/files/v2 v2.0.0/go.mod h1:24kk2Y9NYEJ5lHuCra6iVwkMjIekMCaFq/0JQj66kyM= +github.com/swaggo/http-swagger/v2 v2.0.2 h1:FKCdLsl+sFCx60KFsyM0rDarwiUSZ8DqbfSyIKC9OBg= +github.com/swaggo/http-swagger/v2 v2.0.2/go.mod h1:r7/GBkAWIfK6E/OLnE8fXnviHiDeAHmgIyooa4xm3AQ= +github.com/swaggo/swag v1.8.1 h1:JuARzFX1Z1njbCGz+ZytBR15TFJwF2Q7fu8puJHhQYI= +github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pAaPQ= +github.com/swaggo/swag/v2 v2.0.0-rc4 h1:SZ8cK68gcV6cslwrJMIOqPkJELRwq4gmjvk77MrvHvY= +github.com/swaggo/swag/v2 v2.0.0-rc4/go.mod h1:Ow7Y8gF16BTCDn8YxZbyKn8FkMLRUHekv1kROJZpbvE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/datatypes v1.2.7 h1:ww9GAhF1aGXZY3EB3cJPJ7//JiuQo7DlQA7NNlVaTdk= +gorm.io/datatypes v1.2.7/go.mod h1:M2iO+6S3hhi4nAyYe444Pcb0dcIiOMJ7QHaUXxyiNZY= +gorm.io/driver/mysql v1.5.6 h1:Ld4mkIickM+EliaQZQx3uOJDJHtrd70MxAUqWqlx3Y8= +gorm.io/driver/mysql v1.5.6/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= +gorm.io/driver/postgres v1.6.0 h1:2dxzU8xJ+ivvqTRph34QX+WrRaJlmfyPqXmoGVjMBa4= +gorm.io/driver/postgres v1.6.0/go.mod h1:vUw0mrGgrTK+uPHEhAdV4sfFELrByKVGnaVRkXDhtWo= +gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ= +gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8= +gorm.io/driver/sqlserver v1.6.0 h1:VZOBQVsVhkHU/NzNhRJKoANt5pZGQAS1Bwc6m6dgfnc= +gorm.io/driver/sqlserver v1.6.0/go.mod h1:WQzt4IJo/WHKnckU9jXBLMJIVNMVeTu25dnOzehntWw= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.31.0 h1:0VlycGreVhK7RF/Bwt51Fk8v0xLiiiFdbGDPIZQ7mJY= +gorm.io/gorm v1.31.0/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= diff --git a/internal/api/httpmiddleware/auth.go b/internal/api/httpmiddleware/auth.go new file mode 100644 index 0000000..984c18d --- /dev/null +++ b/internal/api/httpmiddleware/auth.go @@ -0,0 +1,161 @@ +package httpmiddleware + +import ( + "net/http" + "strings" + + "github.com/glueops/autoglue/internal/auth" + "github.com/glueops/autoglue/internal/models" + "github.com/glueops/autoglue/internal/utils" + "github.com/go-chi/chi/v5" + "github.com/google/uuid" + "gorm.io/gorm" +) + +// AuthMiddleware authenticates either a user principal (JWT, user API key, app key/secret) +// or an org principal (org key/secret). If requireOrg is true, the request must have +// an organization resolved; otherwise org is optional. +// +// Org resolution order for user principals (when requireOrg == true): +// 1. X-Org-ID header (UUID) +// 2. chi URL param {id} (useful under /orgs/{id}/... routers) +// 3. single-membership fallback (exactly one membership) +// +// If none resolves, respond with org_required. +func AuthMiddleware(db *gorm.DB, requireOrg bool) func(http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var user *models.User + var org *models.Organization + var roles []string + + // --- 1) Authenticate principal --- + // Prefer org principal if explicit machine access is provided. + if orgKey := r.Header.Get("X-ORG-KEY"); orgKey != "" { + secret := r.Header.Get("X-ORG-SECRET") + org = auth.ValidateOrgKeyPair(orgKey, secret, db) + if org == nil { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "invalid org credentials") + return + } + // org principal implies machine role + roles = []string{"org:machine"} + } else { + // User principals + if ah := r.Header.Get("Authorization"); strings.HasPrefix(ah, "Bearer ") { + user = auth.ValidateJWT(ah[7:], db) + } else if apiKey := r.Header.Get("X-API-KEY"); apiKey != "" { + user = auth.ValidateAPIKey(apiKey, db) + } else if appKey := r.Header.Get("X-APP-KEY"); appKey != "" { + secret := r.Header.Get("X-APP-SECRET") + user = auth.ValidateAppKeyPair(appKey, secret, db) + } + + if user == nil { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "invalid credentials") + return + } + + // --- 2) Resolve organization (user principal) --- + // A) Try X-Org-ID if present + if s := r.Header.Get("X-Org-ID"); s != "" { + oid, err := uuid.Parse(s) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "invalid_org_id", "X-Org-ID must be a UUID") + return + } + var o models.Organization + if err := db.First(&o, "id = ?", oid).Error; err != nil { + // Header provided but org not found + utils.WriteError(w, http.StatusUnauthorized, "org_forbidden", "organization not found") + return + } + // Verify membership + if !userIsMember(db, user.ID, o.ID) { + utils.WriteError(w, http.StatusUnauthorized, "org_forbidden", "user is not a member of specified org") + return + } + org = &o + } + + // B) If still no org and requireOrg==true, try chi URL param {id} + if org == nil && requireOrg { + if sid := chi.URLParam(r, "id"); sid != "" { + if oid, err := uuid.Parse(sid); err == nil { + var o models.Organization + if err := db.First(&o, "id = ?", oid).Error; err == nil && userIsMember(db, user.ID, o.ID) { + org = &o + } else { + utils.WriteError(w, http.StatusUnauthorized, "org_forbidden", "user is not a member of specified org") + return + } + } + } + } + + // C) Single-membership fallback (only if requireOrg==true and still nil) + if org == nil && requireOrg { + var ms []models.Membership + if err := db.Where("user_id = ?", user.ID).Find(&ms).Error; err == nil && len(ms) == 1 { + var o models.Organization + if err := db.First(&o, "id = ?", ms[0].OrganizationID).Error; err == nil { + org = &o + } + } + } + + // D) Final check + if requireOrg && org == nil { + utils.WriteError(w, http.StatusUnauthorized, "org_required", "specify X-Org-ID or use an endpoint that does not require org") + return + } + + // Populate roles if an org was resolved (optional for org-optional endpoints) + if org != nil { + roles = userRolesInOrg(db, user.ID, org.ID) + if len(roles) == 0 { + utils.WriteError(w, http.StatusForbidden, "forbidden", "no roles in organization") + return + } + } + } + + // --- 3) Attach to context and proceed --- + ctx := r.Context() + if user != nil { + ctx = WithUser(ctx, user) + } + if org != nil { + ctx = WithOrg(ctx, org) + } + if roles != nil { + ctx = WithRoles(ctx, roles) + } + + next.ServeHTTP(w, r.WithContext(ctx)) + }) + } +} + +func userIsMember(db *gorm.DB, userID, orgID uuid.UUID) bool { + var count int64 + db.Model(&models.Membership{}). + Where("user_id = ? AND organization_id = ?", userID, orgID). + Count(&count) + return count > 0 +} + +func userRolesInOrg(db *gorm.DB, userID, orgID uuid.UUID) []string { + var m models.Membership + if err := db.Where("user_id = ? AND organization_id = ?", userID, orgID).First(&m).Error; err == nil { + switch m.Role { + case "owner": + return []string{"role:owner", "role:admin", "role:member"} + case "admin": + return []string{"role:admin", "role:member"} + default: + return []string{"role:member"} + } + } + return nil +} diff --git a/internal/api/httpmiddleware/context.go b/internal/api/httpmiddleware/context.go new file mode 100644 index 0000000..81c8f75 --- /dev/null +++ b/internal/api/httpmiddleware/context.go @@ -0,0 +1,45 @@ +package httpmiddleware + +import ( + "context" + + "github.com/glueops/autoglue/internal/models" + "github.com/google/uuid" +) + +type ctxKey string + +const ( + ctxUserKey ctxKey = "ctx_user" + ctxOrgKey ctxKey = "ctx_org" + ctxRolesKey ctxKey = "ctx_roles" // []string, user roles in current org +) + +func WithUser(ctx context.Context, u *models.User) context.Context { + return context.WithValue(ctx, ctxUserKey, u) +} +func WithOrg(ctx context.Context, o *models.Organization) context.Context { + return context.WithValue(ctx, ctxOrgKey, o) +} +func WithRoles(ctx context.Context, roles []string) context.Context { + return context.WithValue(ctx, ctxRolesKey, roles) +} + +func UserFrom(ctx context.Context) (*models.User, bool) { + u, ok := ctx.Value(ctxUserKey).(*models.User) + return u, ok && u != nil +} +func OrgFrom(ctx context.Context) (*models.Organization, bool) { + o, ok := ctx.Value(ctxOrgKey).(*models.Organization) + return o, ok && o != nil +} +func OrgIDFrom(ctx context.Context) (uuid.UUID, bool) { + if o, ok := OrgFrom(ctx); ok { + return o.ID, true + } + return uuid.Nil, false +} +func RolesFrom(ctx context.Context) ([]string, bool) { + r, ok := ctx.Value(ctxRolesKey).([]string) + return r, ok && r != nil +} diff --git a/internal/api/httpmiddleware/rbac.go b/internal/api/httpmiddleware/rbac.go new file mode 100644 index 0000000..e630a7e --- /dev/null +++ b/internal/api/httpmiddleware/rbac.go @@ -0,0 +1,45 @@ +package httpmiddleware + +import ( + "net/http" + + "github.com/glueops/autoglue/internal/utils" +) + +func RequireRole(minRole string) func(http.Handler) http.Handler { + // order: owner > admin > member + rank := map[string]int{ + "role:member": 1, + "role:admin": 2, + "role:owner": 3, + "org:machine": 2, + "org:machine:ro": 1, + } + need := map[string]bool{ + "member": true, "admin": true, "owner": true, + } + if !need[minRole] { + minRole = "member" + } + + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + roles, ok := RolesFrom(r.Context()) + if !ok || len(roles) == 0 { + utils.WriteError(w, http.StatusForbidden, "forbidden", "no roles in context") + return + } + max := 0 + for _, ro := range roles { + if rank[ro] > max { + max = rank[ro] + } + } + if max < rank["role:"+minRole] { + utils.WriteError(w, http.StatusForbidden, "forbidden", "insufficient role") + return + } + next.ServeHTTP(w, r) + }) + } +} diff --git a/internal/api/mw_logger.go b/internal/api/mw_logger.go new file mode 100644 index 0000000..232940d --- /dev/null +++ b/internal/api/mw_logger.go @@ -0,0 +1,35 @@ +package api + +import ( + "net/http" + "time" + + "github.com/go-chi/chi/v5/middleware" + "github.com/rs/zerolog/log" +) + +func zeroLogMiddleware() func(http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor) + start := time.Now() + + next.ServeHTTP(ww, r) + + dur := time.Since(start) + ev := log.Info() + if ww.Status() >= 500 { + ev = log.Error() + } + ev. + Str("remote_ip", r.RemoteAddr). + Str("request_id", middleware.GetReqID(r.Context())). + Str("method", r.Method). + Str("path", r.URL.Path). + Int("status", ww.Status()). + Int("bytes", ww.BytesWritten()). + Dur("duration", dur). + Msg("http_request") + }) + } +} diff --git a/internal/api/mw_security.go b/internal/api/mw_security.go new file mode 100644 index 0000000..b0a5cab --- /dev/null +++ b/internal/api/mw_security.go @@ -0,0 +1,63 @@ +package api + +import ( + "net/http" + "strings" + + "github.com/glueops/autoglue/internal/config" +) + +func SecurityHeaders(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // HSTS (enable only over TLS/behind HTTPS) + // HSTS only when not in dev and over TLS/behind a proxy that terminates TLS + if !config.IsDev() { + w.Header().Set("Strict-Transport-Security", "max-age=63072000; includeSubDomains; preload") + } + + w.Header().Set("X-Frame-Options", "DENY") + w.Header().Set("X-Content-Type-Options", "nosniff") + w.Header().Set("Referrer-Policy", "strict-origin-when-cross-origin") + w.Header().Set("Permissions-Policy", "geolocation=(), camera=(), microphone=(), interest-cohort=()") + + if config.IsDev() { + // --- Relaxed CSP for Vite dev server & Google Fonts --- + // Allows inline/eval for React Refresh preamble, HMR websocket, and fonts. + // Tighten these as you move to prod or self-host fonts. + w.Header().Set("Content-Security-Policy", strings.Join([]string{ + "default-src 'self'", + "base-uri 'self'", + "form-action 'self'", + // Vite dev & inline preamble/eval: + "script-src 'self' 'unsafe-inline' 'unsafe-eval' http://localhost:5173", + // allow dev style + Google Fonts + "style-src 'self' 'unsafe-inline' http://localhost:5173 https://fonts.googleapis.com", + "img-src 'self' data: blob:", + // Google font files + "font-src 'self' data: https://fonts.gstatic.com", + // HMR connections + "connect-src 'self' http://localhost:5173 ws://localhost:5173 ws://localhost:8080", + "frame-ancestors 'none'", + }, "; ")) + } else { + // --- Strict CSP for production --- + // If you keep using Google Fonts in prod, add: + // style-src ... https://fonts.googleapis.com + // font-src ... https://fonts.gstatic.com + // Recommended: self-host fonts in prod and keep these tight. + w.Header().Set("Content-Security-Policy", strings.Join([]string{ + "default-src 'self'", + "base-uri 'self'", + "form-action 'self'", + "script-src 'self'", + "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com", + "img-src 'self' data: blob:", + "font-src 'self' data: https://fonts.gstatic.com", + "connect-src 'self'", + "frame-ancestors 'none'", + }, "; ")) + } + + next.ServeHTTP(w, r) + }) +} diff --git a/internal/api/routes.go b/internal/api/routes.go new file mode 100644 index 0000000..af0066b --- /dev/null +++ b/internal/api/routes.go @@ -0,0 +1,195 @@ +package api + +import ( + "fmt" + "net/http" + httpPprof "net/http/pprof" + "os" + "time" + + "github.com/glueops/autoglue/docs" + "github.com/glueops/autoglue/internal/api/httpmiddleware" + "github.com/glueops/autoglue/internal/config" + "github.com/glueops/autoglue/internal/handlers" + "github.com/glueops/autoglue/internal/web" + + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" + "github.com/go-chi/cors" + "github.com/go-chi/httprate" + + "gorm.io/gorm" + + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + + httpSwagger "github.com/swaggo/http-swagger/v2" +) + +func NewRouter(db *gorm.DB) http.Handler { + zerolog.TimeFieldFormat = time.RFC3339 + + l := log.Output(zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: "15:04:05"}) + log.Logger = l + + r := chi.NewRouter() + r.Use(middleware.RequestID) + r.Use(middleware.RealIP) + r.Use(zeroLogMiddleware()) + r.Use(middleware.Recoverer) + r.Use(SecurityHeaders) + r.Use(requestBodyLimit(10 << 20)) + r.Use(httprate.LimitByIP(100, 1*time.Minute)) + + allowed := getAllowedOrigins() + r.Use(cors.Handler(cors.Options{ + AllowedOrigins: allowed, + AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"}, + AllowedHeaders: []string{ + "Content-Type", + "Authorization", + "X-Org-ID", + "X-API-KEY", + "X-ORG-KEY", + "X-ORG-SECRET", + }, + ExposedHeaders: []string{"Link"}, + AllowCredentials: true, + MaxAge: 600, + })) + + r.Use(middleware.AllowContentType("application/json")) + + r.Get("/.well-known/jwks.json", handlers.JWKSHandler) + r.Route("/api", func(api chi.Router) { + api.Route("/v1", func(v1 chi.Router) { + authUser := httpmiddleware.AuthMiddleware(db, false) + authOrg := httpmiddleware.AuthMiddleware(db, true) + + // Also serving a versioned JWKS for swagger, which uses BasePath + v1.Get("/.well-known/jwks.json", handlers.JWKSHandler) + + v1.Route("/auth", func(a chi.Router) { + a.Post("/{provider}/start", handlers.AuthStart(db)) + a.Get("/{provider}/callback", handlers.AuthCallback(db)) + a.Post("/refresh", handlers.Refresh(db)) + a.Post("/logout", handlers.Logout(db)) + }) + + v1.Route("/me", func(me chi.Router) { + me.Use(authUser) + + me.Get("/", handlers.GetMe(db)) + me.Patch("/", handlers.UpdateMe(db)) + + me.Get("/api-keys", handlers.ListUserAPIKeys(db)) + me.Post("/api-keys", handlers.CreateUserAPIKey(db)) + me.Delete("/api-keys/{id}", handlers.DeleteUserAPIKey(db)) + }) + + v1.Route("/orgs", func(o chi.Router) { + o.Use(authUser) + o.Get("/", handlers.ListMyOrgs(db)) + o.Post("/", handlers.CreateOrg(db)) + + o.Group(func(og chi.Router) { + og.Use(authOrg) + og.Get("/{id}", handlers.GetOrg(db)) + og.Patch("/{id}", handlers.UpdateOrg(db)) + og.Delete("/{id}", handlers.DeleteOrg(db)) + + // members + og.Get("/{id}/members", handlers.ListMembers(db)) + og.Post("/{id}/members", handlers.AddOrUpdateMember(db)) + og.Delete("/{id}/members/{user_id}", handlers.RemoveMember(db)) + + // org-scoped key/secret pair + og.Get("/{id}/api-keys", handlers.ListOrgKeys(db)) + og.Post("/{id}/api-keys", handlers.CreateOrgKey(db)) + og.Delete("/{id}/api-keys/{key_id}", handlers.DeleteOrgKey(db)) + }) + }) + + v1.Route("/ssh", func(s chi.Router) { + s.Use(authOrg) + s.Get("/", handlers.ListPublicSshKeys(db)) + s.Post("/", handlers.CreateSSHKey(db)) + s.Get("/{id}", handlers.GetSSHKey(db)) + s.Delete("/{id}", handlers.DeleteSSHKey(db)) + s.Get("/{id}/download", handlers.DownloadSSHKey(db)) + }) + + v1.Route("/servers", func(s chi.Router) { + s.Use(authOrg) + s.Get("/", handlers.ListServers(db)) + s.Post("/", handlers.CreateServer(db)) + s.Get("/{id}", handlers.GetServer(db)) + s.Patch("/{id}", handlers.UpdateServer(db)) + s.Delete("/{id}", handlers.DeleteServer(db)) + }) + + v1.Route("/taints", func(s chi.Router) { + s.Use(authOrg) + s.Get("/", handlers.ListTaints(db)) + s.Post("/", handlers.CreateTaint(db)) + s.Get("/{id}", handlers.GetTaint(db)) + s.Patch("/{id}", handlers.UpdateTaint(db)) + s.Delete("/{id}", handlers.DeleteTaint(db)) + }) + }) + }) + if config.IsDebug() { + r.Route("/debug/pprof", func(pr chi.Router) { + pr.Get("/", httpPprof.Index) + pr.Get("/cmdline", httpPprof.Cmdline) + pr.Get("/profile", httpPprof.Profile) + pr.Get("/symbol", httpPprof.Symbol) + pr.Get("/trace", httpPprof.Trace) + + pr.Handle("/allocs", httpPprof.Handler("allocs")) + pr.Handle("/block", httpPprof.Handler("block")) + pr.Handle("/goroutine", httpPprof.Handler("goroutine")) + pr.Handle("/heap", httpPprof.Handler("heap")) + pr.Handle("/mutex", httpPprof.Handler("mutex")) + pr.Handle("/threadcreate", httpPprof.Handler("threadcreate")) + }) + } + + if config.IsSwaggerEnabled() { + r.Get("/swagger/*", httpSwagger.Handler( + httpSwagger.URL("swagger.json"), + )) + r.Get("/swagger/swagger.json", serveSwaggerFromEmbed(docs.SwaggerJSON, "application/json")) + r.Get("/swagger/swagger.yaml", serveSwaggerFromEmbed(docs.SwaggerYAML, "application/x-yaml")) + } + + if config.IsUIDev() { + fmt.Println("Running in development mode") + // Dev: isolate proxy from chi middlewares so WS upgrade can hijack. + proxy, err := web.DevProxy("http://localhost:5173") + if err != nil { + log.Error().Err(err).Msg("dev proxy init failed") + return r // fallback + } + + mux := http.NewServeMux() + // Send API/Swagger/pprof to chi + mux.Handle("/api/", r) + mux.Handle("/api", r) + mux.Handle("/swagger/", r) + mux.Handle("/debug/pprof/", r) + // Everything else (/, /brand-preview, assets) → proxy (no middlewares) + mux.Handle("/", proxy) + + return mux + } else { + fmt.Println("Running in production mode") + if h, err := web.SPAHandler(); err == nil { + r.NotFound(h.ServeHTTP) + } else { + log.Error().Err(err).Msg("spa handler init failed") + } + } + + return r +} diff --git a/internal/api/utils.go b/internal/api/utils.go new file mode 100644 index 0000000..e9ba419 --- /dev/null +++ b/internal/api/utils.go @@ -0,0 +1,45 @@ +package api + +import ( + "net/http" + "os" + "strings" +) + +func requestBodyLimit(maxBytes int64) func(http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + r.Body = http.MaxBytesReader(w, r.Body, maxBytes) + next.ServeHTTP(w, r) + }) + } +} + +func getAllowedOrigins() []string { + if v := os.Getenv("CORS_ALLOWED_ORIGINS"); v != "" { + parts := strings.Split(v, ",") + out := make([]string, 0, len(parts)) + for _, p := range parts { + s := strings.TrimSpace(p) + if s != "" { + out = append(out, s) + } + } + if len(out) > 0 { + return out + } + } + // Defaults (dev) + return []string{ + "http://localhost:5173", + "http://localhost:8080", + } +} + +func serveSwaggerFromEmbed(data []byte, contentType string) http.HandlerFunc { + return func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", contentType) + w.WriteHeader(http.StatusOK) + _, _ = w.Write(data) + } +} diff --git a/internal/app/runtime.go b/internal/app/runtime.go new file mode 100644 index 0000000..5665184 --- /dev/null +++ b/internal/app/runtime.go @@ -0,0 +1,46 @@ +package app + +import ( + "log" + + "github.com/glueops/autoglue/internal/config" + "github.com/glueops/autoglue/internal/db" + "github.com/glueops/autoglue/internal/models" + "gorm.io/gorm" +) + +type Runtime struct { + Cfg config.Config + DB *gorm.DB +} + +func NewRuntime() *Runtime { + cfg, err := config.Load() + if err != nil { + log.Fatal(err) + } + d := db.Open(cfg.DbURL) + + err = db.Run(d, + &models.MasterKey{}, + &models.SigningKey{}, + &models.User{}, + &models.Organization{}, + &models.Account{}, + &models.Membership{}, + &models.APIKey{}, + &models.UserEmail{}, + &models.RefreshToken{}, + &models.OrganizationKey{}, + &models.SshKey{}, + &models.Server{}, + &models.Taint{}, + ) + if err != nil { + log.Fatalf("Error initializing database: %v", err) + } + return &Runtime{ + Cfg: cfg, + DB: d, + } +} diff --git a/internal/auth/hash.go b/internal/auth/hash.go new file mode 100644 index 0000000..a0eaf1e --- /dev/null +++ b/internal/auth/hash.go @@ -0,0 +1,38 @@ +package auth + +import ( + "crypto/sha256" + "encoding/hex" + "errors" + "time" + + "github.com/alexedwards/argon2id" +) + +func SHA256Hex(s string) string { + sum := sha256.Sum256([]byte(s)) + return hex.EncodeToString(sum[:]) +} + +var argonParams = &argon2id.Params{ + Memory: 64 * 1024, // 64MB + Iterations: 3, + Parallelism: 2, + SaltLength: 16, + KeyLength: 32, +} + +func HashSecretArgon2id(plain string) (string, error) { + return argon2id.CreateHash(plain, argonParams) +} + +func VerifySecretArgon2id(encodedHash, plain string) (bool, error) { + if encodedHash == "" { + return false, errors.New("empty hash") + } + return argon2id.ComparePasswordAndHash(plain, encodedHash) +} + +func NotExpired(expiresAt *time.Time) bool { + return expiresAt == nil || time.Now().Before(*expiresAt) +} diff --git a/internal/auth/issue.go b/internal/auth/issue.go new file mode 100644 index 0000000..bdbd0a5 --- /dev/null +++ b/internal/auth/issue.go @@ -0,0 +1,42 @@ +package auth + +import ( + "crypto/rand" + "encoding/base64" + "time" + + "github.com/glueops/autoglue/internal/models" + "github.com/google/uuid" + "gorm.io/gorm" +) + +func randomToken(n int) (string, error) { + b := make([]byte, n) + if _, err := rand.Read(b); err != nil { + return "", err + } + // URL-safe, no padding + return base64.RawURLEncoding.EncodeToString(b), nil +} + +// IssueUserAPIKey creates a single-token user API key (X-API-KEY) +func IssueUserAPIKey(db *gorm.DB, userID uuid.UUID, name string, ttl *time.Duration) (plaintext string, rec models.APIKey, err error) { + plaintext, err = randomToken(32) + if err != nil { + return "", models.APIKey{}, err + } + rec = models.APIKey{ + Name: name, + Scope: "user", + UserID: &userID, + KeyHash: SHA256Hex(plaintext), // deterministic lookup + } + if ttl != nil { + ex := time.Now().Add(*ttl) + rec.ExpiresAt = &ex + } + if err = db.Create(&rec).Error; err != nil { + return "", models.APIKey{}, err + } + return plaintext, rec, nil +} diff --git a/internal/auth/jwks_export.go b/internal/auth/jwks_export.go new file mode 100644 index 0000000..30bb8d9 --- /dev/null +++ b/internal/auth/jwks_export.go @@ -0,0 +1,71 @@ +package auth + +import ( + "crypto/ed25519" + "crypto/rsa" + "encoding/base64" + "fmt" + "math/big" +) + +// base64url (no padding) +func b64url(b []byte) string { + return base64.RawURLEncoding.EncodeToString(b) +} + +// convert small int (RSA exponent) to big-endian bytes +func fromInt(i int) []byte { + var x big.Int + x.SetInt64(int64(i)) + return x.Bytes() +} + +// --- public accessors for JWKS --- + +// KeyMeta is a minimal metadata view exposed for JWKS rendering. +type KeyMeta struct { + Alg string +} + +// MetaFor returns minimal metadata (currently the alg) for a given kid. +// If not found, returns zero value (Alg == ""). +func MetaFor(kid string) KeyMeta { + kc.mu.RLock() + defer kc.mu.RUnlock() + if m, ok := kc.meta[kid]; ok { + return KeyMeta{Alg: m.Alg} + } + return KeyMeta{} +} + +// KcCopy invokes fn with a shallow copy of the public key map (kid -> public key instance). +// Useful to iterate without holding the lock during JSON building. +func KcCopy(fn func(map[string]interface{})) { + kc.mu.RLock() + defer kc.mu.RUnlock() + out := make(map[string]interface{}, len(kc.pub)) + for kid, pk := range kc.pub { + out[kid] = pk + } + fmt.Println(out) + fn(out) +} + +// PubToJWK converts a parsed public key into bare JWK parameters + kty. +// - RSA: returns n/e (base64url) and kty="RSA" +// - Ed25519: returns x (base64url) and kty="OKP" +func PubToJWK(_kid, _alg string, pub any) (map[string]string, string) { + switch k := pub.(type) { + case *rsa.PublicKey: + return map[string]string{ + "n": b64url(k.N.Bytes()), + "e": b64url(fromInt(k.E)), + }, "RSA" + case ed25519.PublicKey: + return map[string]string{ + "x": b64url([]byte(k)), + }, "OKP" + default: + return nil, "" + } +} diff --git a/internal/auth/jwt_issue.go b/internal/auth/jwt_issue.go new file mode 100644 index 0000000..ed7c6d9 --- /dev/null +++ b/internal/auth/jwt_issue.go @@ -0,0 +1,55 @@ +package auth + +import ( + "errors" + "time" + + "github.com/golang-jwt/jwt/v5" +) + +type IssueOpts struct { + Subject string + Issuer string + Audience string + TTL time.Duration + Claims map[string]any // extra app claims +} + +func IssueAccessToken(opts IssueOpts) (string, error) { + kc.mu.RLock() + defer kc.mu.RUnlock() + + if kc.selPriv == nil || kc.selKid == "" || kc.selAlg == "" { + return "", errors.New("no active signing key") + } + + claims := jwt.MapClaims{ + "iss": opts.Issuer, + "aud": opts.Audience, + "sub": opts.Subject, + "iat": time.Now().Unix(), + "exp": time.Now().Add(opts.TTL).Unix(), + } + for k, v := range opts.Claims { + claims[k] = v + } + + var method jwt.SigningMethod + switch kc.selAlg { + case "RS256": + method = jwt.SigningMethodRS256 + case "RS384": + method = jwt.SigningMethodRS384 + case "RS512": + method = jwt.SigningMethodRS512 + case "EdDSA": + method = jwt.SigningMethodEdDSA + default: + return "", errors.New("unsupported alg") + } + + token := jwt.NewWithClaims(method, claims) + token.Header["kid"] = kc.selKid + + return token.SignedString(kc.selPriv) +} diff --git a/internal/auth/jwt_signer.go b/internal/auth/jwt_signer.go new file mode 100644 index 0000000..e339509 --- /dev/null +++ b/internal/auth/jwt_signer.go @@ -0,0 +1,138 @@ +package auth + +import ( + "crypto/ed25519" + "crypto/rsa" + "crypto/x509" + "encoding/pem" + "errors" + "sync" + "time" + + "github.com/glueops/autoglue/internal/keys" + "github.com/glueops/autoglue/internal/models" + "gorm.io/gorm" +) + +type keyCache struct { + mu sync.RWMutex + pub map[string]interface{} // kid -> public key object + meta map[string]models.SigningKey + selKid string + selAlg string + selPriv any +} + +var kc keyCache + +// Refresh loads active keys into memory. Call on startup and periodically (ticker/cron). +func Refresh(db *gorm.DB, encKeyB64 string) error { + var rows []models.SigningKey + if err := db.Where("is_active = true AND (expires_at IS NULL OR expires_at > ?)", time.Now()). + Order("created_at desc").Find(&rows).Error; err != nil { + return err + } + + pub := make(map[string]interface{}, len(rows)) + meta := make(map[string]models.SigningKey, len(rows)) + var selKid string + var selAlg string + var selPriv any + + for i, r := range rows { + // parse public + block, _ := pem.Decode([]byte(r.PublicPEM)) + if block == nil { + continue + } + var pubKey any + switch r.Alg { + case "RS256", "RS384", "RS512": + pubKey, _ = x509.ParsePKCS1PublicKey(block.Bytes) + if pubKey == nil { + // also allow PKIX format + if k, err := x509.ParsePKIXPublicKey(block.Bytes); err == nil { + pubKey = k + } + } + case "EdDSA": + k, err := x509.ParsePKIXPublicKey(block.Bytes) + if err == nil { + if edk, ok := k.(ed25519.PublicKey); ok { + pubKey = edk + } + } + } + if pubKey == nil { + continue + } + pub[r.Kid] = pubKey + meta[r.Kid] = r + + // pick first row as current signer (most recent because of order desc) + if i == 0 { + privPEM := r.PrivatePEM + // decrypt if necessary + if len(privPEM) > 10 && privPEM[:10] == "enc:aesgcm" { + pt, err := keysDecrypt(encKeyB64, privPEM) + if err != nil { + continue + } + privPEM = string(pt) + } + blockPriv, _ := pem.Decode([]byte(privPEM)) + if blockPriv == nil { + continue + } + switch r.Alg { + case "RS256", "RS384", "RS512": + if k, err := x509.ParsePKCS1PrivateKey(blockPriv.Bytes); err == nil { + selPriv = k + selAlg = r.Alg + selKid = r.Kid + } else if kAny, err := x509.ParsePKCS8PrivateKey(blockPriv.Bytes); err == nil { + if k, ok := kAny.(*rsa.PrivateKey); ok { + selPriv = k + selAlg = r.Alg + selKid = r.Kid + } + } + case "EdDSA": + if kAny, err := x509.ParsePKCS8PrivateKey(blockPriv.Bytes); err == nil { + if k, ok := kAny.(ed25519.PrivateKey); ok { + selPriv = k + selAlg = r.Alg + selKid = r.Kid + } + } + } + } + } + + kc.mu.Lock() + defer kc.mu.Unlock() + kc.pub = pub + kc.meta = meta + kc.selKid = selKid + kc.selAlg = selAlg + kc.selPriv = selPriv + return nil +} + +func keysDecrypt(encKey, enc string) ([]byte, error) { + return keysDecryptImpl(encKey, enc) +} + +// indirection for same package +var keysDecryptImpl = func(encKey, enc string) ([]byte, error) { + return nil, errors.New("not wired") +} + +// Wire up from keys package +func init() { + keysDecryptImpl = keysDecryptShim +} + +func keysDecryptShim(encKey, enc string) ([]byte, error) { + return keys.Decrypt(encKey, enc) +} diff --git a/internal/auth/jwt_validate.go b/internal/auth/jwt_validate.go new file mode 100644 index 0000000..e23dbf8 --- /dev/null +++ b/internal/auth/jwt_validate.go @@ -0,0 +1,56 @@ +package auth + +import ( + "github.com/glueops/autoglue/internal/config" + "github.com/glueops/autoglue/internal/models" + "github.com/golang-jwt/jwt/v5" + "github.com/google/uuid" + "gorm.io/gorm" +) + +// ValidateJWT verifies RS256/RS384/RS512/EdDSA tokens using the in-memory key cache. +// It honors kid when present, and falls back to any active key. +func ValidateJWT(tokenStr string, db *gorm.DB) *models.User { + cfg, _ := config.Load() + + parser := jwt.NewParser( + jwt.WithIssuer(cfg.JWTIssuer), + jwt.WithAudience(cfg.JWTAudience), + jwt.WithValidMethods([]string{"RS256", "RS384", "RS512", "EdDSA"}), + ) + + token, err := parser.Parse(tokenStr, func(t *jwt.Token) (any, error) { + // Resolve by kid first + kid, _ := t.Header["kid"].(string) + + kc.mu.RLock() + defer kc.mu.RUnlock() + + if kid != "" { + if k, ok := kc.pub[kid]; ok { + return k, nil + } + } + // Fallback: try first active key + for _, k := range kc.pub { + return k, nil + } + return nil, jwt.ErrTokenUnverifiable + }) + if err != nil || !token.Valid { + return nil + } + + claims, _ := token.Claims.(jwt.MapClaims) + sub, _ := claims["sub"].(string) + uid, err := uuid.Parse(sub) + if err != nil { + return nil + } + + var u models.User + if err := db.First(&u, "id = ? AND is_disabled = false", uid).Error; err != nil { + return nil + } + return &u +} diff --git a/internal/auth/refresh.go b/internal/auth/refresh.go new file mode 100644 index 0000000..86de9c2 --- /dev/null +++ b/internal/auth/refresh.go @@ -0,0 +1,105 @@ +package auth + +import ( + "crypto/rand" + "encoding/base64" + "errors" + "time" + + "github.com/glueops/autoglue/internal/models" + "github.com/google/uuid" + "gorm.io/gorm" +) + +// random opaque token (returned to client once) +func generateOpaqueToken(n int) (string, error) { + b := make([]byte, n) + if _, err := rand.Read(b); err != nil { + return "", err + } + return base64.RawURLEncoding.EncodeToString(b), nil +} + +type RefreshPair struct { + Plain string + Record models.RefreshToken +} + +// Issue a new refresh token (new family if familyID == nil) +func IssueRefreshToken(db *gorm.DB, userID uuid.UUID, ttl time.Duration, familyID *uuid.UUID) (RefreshPair, error) { + plain, err := generateOpaqueToken(32) + if err != nil { + return RefreshPair{}, err + } + hash, err := HashSecretArgon2id(plain) + if err != nil { + return RefreshPair{}, err + } + + fid := uuid.New() + if familyID != nil { + fid = *familyID + } + + rec := models.RefreshToken{ + UserID: userID, + FamilyID: fid, + TokenHash: hash, + ExpiresAt: time.Now().Add(ttl), + } + if err := db.Create(&rec).Error; err != nil { + return RefreshPair{}, err + } + return RefreshPair{Plain: plain, Record: rec}, nil +} + +// ValidateRefreshToken refresh token; returns record if valid & not revoked/expired +func ValidateRefreshToken(db *gorm.DB, plain string) (*models.RefreshToken, error) { + if plain == "" { + return nil, errors.New("empty") + } + // var rec models.RefreshToken + // We can't query by hash w/ Argon; scan candidates by expiry window. Keep small TTL (e.g. 30d). + if err := db.Where("expires_at > ? AND revoked_at IS NULL", time.Now()). + Find(&[]models.RefreshToken{}).Error; err != nil { + return nil, err + } + // Better: add a prefix column to narrow scan; omitted for brevity. + + // Pragmatic approach: single SELECT per token: + // Add a TokenHashSHA256 column for deterministic lookup if you want O(1). (Optional) + + // Minimal: iterate limited set; for simplicity we fetch by created window: + var recs []models.RefreshToken + if err := db.Where("expires_at > ? AND revoked_at IS NULL", time.Now()). + Order("created_at desc").Limit(500).Find(&recs).Error; err != nil { + return nil, err + } + for _, r := range recs { + ok, _ := VerifySecretArgon2id(r.TokenHash, plain) + if ok { + return &r, nil + } + } + return nil, errors.New("invalid") +} + +// RevokeFamily revokes all tokens in a family (logout everywhere) +func RevokeFamily(db *gorm.DB, familyID uuid.UUID) error { + now := time.Now() + return db.Model(&models.RefreshToken{}). + Where("family_id = ? AND revoked_at IS NULL", familyID). + Update("revoked_at", &now).Error +} + +// RotateRefreshToken replaces one token with a fresh one within the same family +func RotateRefreshToken(db *gorm.DB, used *models.RefreshToken, ttl time.Duration) (RefreshPair, error) { + // revoke the used token (one-time use) + now := time.Now() + if err := db.Model(&models.RefreshToken{}). + Where("id = ? AND revoked_at IS NULL", used.ID). + Update("revoked_at", &now).Error; err != nil { + return RefreshPair{}, err + } + return IssueRefreshToken(db, used.UserID, ttl, &used.FamilyID) +} diff --git a/internal/auth/validate_keys.go b/internal/auth/validate_keys.go new file mode 100644 index 0000000..1b19113 --- /dev/null +++ b/internal/auth/validate_keys.go @@ -0,0 +1,88 @@ +package auth + +import ( + "time" + + "github.com/glueops/autoglue/internal/models" + "gorm.io/gorm" +) + +// ValidateAPIKey validates a single-token user API key sent via X-API-KEY. +func ValidateAPIKey(rawKey string, db *gorm.DB) *models.User { + if rawKey == "" { + return nil + } + digest := SHA256Hex(rawKey) + + var k models.APIKey + if err := db. + Where("key_hash = ? AND scope = ? AND (expires_at IS NULL OR expires_at > ?)", digest, "user", time.Now()). + First(&k).Error; err != nil { + return nil + } + if k.UserID == nil { + return nil + } + var u models.User + if err := db.First(&u, "id = ? AND is_disabled = false", *k.UserID).Error; err != nil { + return nil + } + // Optional: touch last_used_at here if you've added it on the model. + return &u +} + +// ValidateAppKeyPair validates a user key/secret pair via X-APP-KEY / X-APP-SECRET. +func ValidateAppKeyPair(appKey, secret string, db *gorm.DB) *models.User { + if appKey == "" || secret == "" { + return nil + } + digest := SHA256Hex(appKey) + + var k models.APIKey + if err := db. + Where("key_hash = ? AND scope = ? AND (expires_at IS NULL OR expires_at > ?)", digest, "user", time.Now()). + First(&k).Error; err != nil { + return nil + } + ok, _ := VerifySecretArgon2id(zeroIfNil(k.SecretHash), secret) + if !ok || k.UserID == nil { + return nil + } + var u models.User + if err := db.First(&u, "id = ? AND is_disabled = false", *k.UserID).Error; err != nil { + return nil + } + return &u +} + +// ValidateOrgKeyPair validates an org key/secret via X-ORG-KEY / X-ORG-SECRET. +func ValidateOrgKeyPair(orgKey, secret string, db *gorm.DB) *models.Organization { + if orgKey == "" || secret == "" { + return nil + } + digest := SHA256Hex(orgKey) + + var k models.APIKey + if err := db. + Where("key_hash = ? AND scope = ? AND (expires_at IS NULL OR expires_at > ?)", digest, "org", time.Now()). + First(&k).Error; err != nil { + return nil + } + ok, _ := VerifySecretArgon2id(zeroIfNil(k.SecretHash), secret) + if !ok || k.OrgID == nil { + return nil + } + var o models.Organization + if err := db.First(&o, "id = ?", *k.OrgID).Error; err != nil { + return nil + } + return &o +} + +// local helper; avoids nil-deref when comparing secrets +func zeroIfNil(s *string) string { + if s == nil { + return "" + } + return *s +} diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..8a1a939 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,194 @@ +package config + +import ( + "errors" + "fmt" + "strings" + "sync" + + "github.com/joho/godotenv" + "github.com/spf13/viper" + "gopkg.in/yaml.v3" +) + +type Config struct { + DbURL string + Port string + Host string + JWTIssuer string + JWTAudience string + JWTPrivateEncKey string + OAuthRedirectBase string + GoogleClientID string + GoogleClientSecret string + GithubClientID string + GithubClientSecret string + + UIDev bool + Env string + Debug bool + Swagger bool +} + +var ( + once sync.Once + cached Config + loadErr error +) + +func Load() (Config, error) { + once.Do(func() { + _ = godotenv.Load() + + // Use a private viper to avoid global mutation/races + v := viper.New() + + // Defaults + v.SetDefault("bind.address", "127.0.0.1") + v.SetDefault("bind.port", "8080") + v.SetDefault("database.url", "postgres://user:pass@localhost:5432/db?sslmode=disable") + + v.SetDefault("ui.dev", false) + v.SetDefault("env", "development") + v.SetDefault("debug", false) + v.SetDefault("swagger", false) + + // Env setup and binding + v.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + v.AutomaticEnv() + + keys := []string{ + "bind.address", + "bind.port", + "database.url", + "jwt.issuer", + "jwt.audience", + "jwt.private.enc.key", + "oauth.redirect.base", + "google.client.id", + "google.client.secret", + "github.client.id", + "github.client.secret", + "ui.dev", + "env", + "debug", + "swagger", + } + for _, k := range keys { + _ = v.BindEnv(k) + } + + // Build config + cfg := Config{ + DbURL: v.GetString("database.url"), + Port: v.GetString("bind.port"), + Host: v.GetString("bind.address"), + JWTIssuer: v.GetString("jwt.issuer"), + JWTAudience: v.GetString("jwt.audience"), + JWTPrivateEncKey: v.GetString("jwt.private.enc.key"), + OAuthRedirectBase: v.GetString("oauth.redirect.base"), + GoogleClientID: v.GetString("google.client.id"), + GoogleClientSecret: v.GetString("google.client.secret"), + GithubClientID: v.GetString("github.client.id"), + GithubClientSecret: v.GetString("github.client.secret"), + + UIDev: v.GetBool("ui.dev"), + Env: v.GetString("env"), + Debug: v.GetBool("debug"), + Swagger: v.GetBool("swagger"), + } + + // Validate + if err := validateConfig(cfg); err != nil { + loadErr = err + return + } + + cached = cfg + }) + return cached, loadErr +} + +func validateConfig(cfg Config) error { + var errs []string + + // Required general settings + req := map[string]string{ + "jwt.issuer": cfg.JWTIssuer, + "jwt.audience": cfg.JWTAudience, + "jwt.private.enc.key": cfg.JWTPrivateEncKey, + "oauth.redirect.base": cfg.OAuthRedirectBase, + } + for k, v := range req { + if strings.TrimSpace(v) == "" { + errs = append(errs, fmt.Sprintf("missing required config key %q (env %s)", k, envNameFromKey(k))) + } + } + + // OAuth provider requirements: + googleOK := strings.TrimSpace(cfg.GoogleClientID) != "" && strings.TrimSpace(cfg.GoogleClientSecret) != "" + githubOK := strings.TrimSpace(cfg.GithubClientID) != "" && strings.TrimSpace(cfg.GithubClientSecret) != "" + + // If partially configured, report what's missing for each + if !googleOK && (cfg.GoogleClientID != "" || cfg.GoogleClientSecret != "") { + if cfg.GoogleClientID == "" { + errs = append(errs, fmt.Sprintf("google.client.id is missing (env %s) while google.client.secret is set", envNameFromKey("google.client.id"))) + } + if cfg.GoogleClientSecret == "" { + errs = append(errs, fmt.Sprintf("google.client.secret is missing (env %s) while google.client.id is set", envNameFromKey("google.client.secret"))) + } + } + if !githubOK && (cfg.GithubClientID != "" || cfg.GithubClientSecret != "") { + if cfg.GithubClientID == "" { + errs = append(errs, fmt.Sprintf("github.client.id is missing (env %s) while github.client.secret is set", envNameFromKey("github.client.id"))) + } + if cfg.GithubClientSecret == "" { + errs = append(errs, fmt.Sprintf("github.client.secret is missing (env %s) while github.client.id is set", envNameFromKey("github.client.secret"))) + } + } + + // Enforce minimum: at least one full provider + if !googleOK && !githubOK { + errs = append(errs, "at least one OAuth provider must be fully configured: either Google (google.client.id + google.client.secret) or GitHub (github.client.id + github.client.secret)") + } + + if len(errs) > 0 { + return errors.New(strings.Join(errs, "; ")) + } + return nil +} + +func envNameFromKey(key string) string { + return strings.ToUpper(strings.ReplaceAll(key, ".", "_")) +} + +func DebugPrintConfig() { + cfg, _ := Load() + b, err := yaml.Marshal(cfg) + if err != nil { + fmt.Println("error marshalling config:", err) + return + } + fmt.Println("Loaded configuration:") + fmt.Println(string(b)) +} + +func IsUIDev() bool { + cfg, _ := Load() + return cfg.UIDev +} + +func IsDev() bool { + cfg, _ := Load() + return strings.EqualFold(cfg.Env, "development") +} + +func IsDebug() bool { + cfg, _ := Load() + return cfg.Debug +} + +func IsSwaggerEnabled() bool { + cfg, _ := Load() + return cfg.Swagger +} diff --git a/internal/db/db.go b/internal/db/db.go new file mode 100644 index 0000000..d28deb8 --- /dev/null +++ b/internal/db/db.go @@ -0,0 +1,17 @@ +package db + +import ( + "log" + + "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/logger" +) + +func Open(dsn string) *gorm.DB { + db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{Logger: logger.Default.LogMode(logger.Warn)}) + if err != nil { + log.Fatalf("failed to connect to db: %v", err) + } + return db +} diff --git a/internal/db/migrate.go b/internal/db/migrate.go new file mode 100644 index 0000000..4a16a21 --- /dev/null +++ b/internal/db/migrate.go @@ -0,0 +1,25 @@ +package db + +import ( + "fmt" + + "gorm.io/gorm" +) + +func Run(db *gorm.DB, models ...any) error { + return db.Transaction(func(tx *gorm.DB) error { + // 0) Extensions + if err := tx.Exec(`CREATE EXTENSION IF NOT EXISTS pgcrypto`).Error; err != nil { + return fmt.Errorf("enable pgcrypto: %w", err) + } + if err := tx.Exec(`CREATE EXTENSION IF NOT EXISTS citext`).Error; err != nil { + return fmt.Errorf("enable citext: %w", err) + } + + // 1) AutoMigrate (pass parents before children in caller) + if err := tx.AutoMigrate(models...); err != nil { + return fmt.Errorf("automigrate: %w", err) + } + return nil + }) +} diff --git a/internal/handlers/auth.go b/internal/handlers/auth.go new file mode 100644 index 0000000..9c4e074 --- /dev/null +++ b/internal/handlers/auth.go @@ -0,0 +1,477 @@ +package handlers + +import ( + "context" + "encoding/json" + "net/http" + "net/url" + "strings" + "time" + + "github.com/coreos/go-oidc/v3/oidc" + "github.com/glueops/autoglue/internal/auth" + "github.com/glueops/autoglue/internal/config" + "github.com/glueops/autoglue/internal/handlers/dto" + "github.com/glueops/autoglue/internal/models" + "github.com/glueops/autoglue/internal/utils" + "github.com/go-chi/chi/v5" + "github.com/google/uuid" + "golang.org/x/oauth2" + "gorm.io/gorm" +) + +type oauthProvider struct { + Name string + Issuer string + Scopes []string + ClientID string + Secret string +} + +func providerConfig(cfg config.Config, name string) (oauthProvider, bool) { + switch strings.ToLower(name) { + case "google": + return oauthProvider{ + Name: "google", + Issuer: "https://accounts.google.com", + Scopes: []string{oidc.ScopeOpenID, "email", "profile"}, + ClientID: cfg.GoogleClientID, + Secret: cfg.GoogleClientSecret, + }, true + case "github": + // GitHub is not a pure OIDC provider; we use OAuth2 + user email API + return oauthProvider{ + Name: "github", + Issuer: "github", + Scopes: []string{"read:user", "user:email"}, + ClientID: cfg.GithubClientID, Secret: cfg.GithubClientSecret, + }, true + } + return oauthProvider{}, false +} + +// AuthStart godoc +// @ID AuthStart +// @Summary Begin social login +// @Description Returns provider authorization URL for the frontend to redirect +// @Tags Auth +// @Param provider path string true "google|github" +// @Produce json +// @Success 200 {object} dto.AuthStartResponse +// @Router /auth/{provider}/start [post] +func AuthStart(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + cfg, _ := config.Load() + provider := strings.ToLower(chi.URLParam(r, "provider")) + + p, ok := providerConfig(cfg, provider) + if !ok || p.ClientID == "" || p.Secret == "" { + utils.WriteError(w, http.StatusBadRequest, "unsupported_provider", "provider not configured") + return + } + + redirect := cfg.OAuthRedirectBase + "/api/v1/auth/" + p.Name + "/callback" + + // Optional SPA hints to be embedded into state + mode := r.URL.Query().Get("mode") // "spa" enables postMessage callback page + origin := r.URL.Query().Get("origin") // e.g. http://localhost:5173 + + state := uuid.NewString() + if mode == "spa" && origin != "" { + state = state + "|mode=spa|origin=" + url.QueryEscape(origin) + } + + var authURL string + + if p.Issuer == "github" { + o := &oauth2.Config{ + ClientID: p.ClientID, + ClientSecret: p.Secret, + RedirectURL: redirect, + Scopes: p.Scopes, + Endpoint: oauth2.Endpoint{ + AuthURL: "https://github.com/login/oauth/authorize", + TokenURL: "https://github.com/login/oauth/access_token", + }, + } + authURL = o.AuthCodeURL(state, oauth2.AccessTypeOffline) + } else { + // Google OIDC + ctx := context.Background() + prov, err := oidc.NewProvider(ctx, p.Issuer) + if err != nil { + utils.WriteError(w, http.StatusInternalServerError, "oidc_discovery_failed", err.Error()) + return + } + o := &oauth2.Config{ + ClientID: p.ClientID, + ClientSecret: p.Secret, + RedirectURL: redirect, + Endpoint: prov.Endpoint(), + Scopes: p.Scopes, + } + authURL = o.AuthCodeURL(state, oauth2.AccessTypeOffline) + } + + utils.WriteJSON(w, http.StatusOK, dto.AuthStartResponse{AuthURL: authURL}) + } +} + +// AuthCallback godoc +// @ID AuthCallback +// @Summary Handle social login callback +// @Tags Auth +// @Param provider path string true "google|github" +// @Produce json +// @Success 200 {object} dto.TokenPair +// @Router /auth/{provider}/callback [get] +func AuthCallback(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + cfg, _ := config.Load() + provider := strings.ToLower(chi.URLParam(r, "provider")) + + p, ok := providerConfig(cfg, provider) + if !ok { + utils.WriteError(w, http.StatusBadRequest, "unsupported_provider", "provider not configured") + return + } + + code := r.URL.Query().Get("code") + if code == "" { + utils.WriteError(w, http.StatusBadRequest, "invalid_request", "missing code") + return + } + redirect := cfg.OAuthRedirectBase + "/api/v1/auth/" + p.Name + "/callback" + + var email, display, subject string + + if p.Issuer == "github" { + // OAuth2 code exchange + o := &oauth2.Config{ + ClientID: p.ClientID, + ClientSecret: p.Secret, + RedirectURL: redirect, + Scopes: p.Scopes, + Endpoint: oauth2.Endpoint{ + AuthURL: "https://github.com/login/oauth/authorize", + TokenURL: "https://github.com/login/oauth/access_token", + }, + } + tok, err := o.Exchange(r.Context(), code) + if err != nil { + utils.WriteError(w, http.StatusUnauthorized, "exchange_failed", err.Error()) + return + } + // Fetch user primary email + req, _ := http.NewRequest("GET", "https://api.github.com/user/emails", nil) + req.Header.Set("Authorization", "token "+tok.AccessToken) + resp, err := http.DefaultClient.Do(req) + if err != nil || resp.StatusCode != 200 { + utils.WriteError(w, http.StatusUnauthorized, "email_fetch_failed", "github user/emails") + return + } + defer resp.Body.Close() + var emails []struct { + Email string `json:"email"` + Primary bool `json:"primary"` + Verified bool `json:"verified"` + } + if err := json.NewDecoder(resp.Body).Decode(&emails); err != nil || len(emails) == 0 { + utils.WriteError(w, http.StatusUnauthorized, "email_parse_failed", err.Error()) + return + } + email = emails[0].Email + for _, e := range emails { + if e.Primary { + email = e.Email + break + } + } + subject = "github:" + email + display = strings.Split(email, "@")[0] + } else { + // Google OIDC + oidcProv, err := oidc.NewProvider(r.Context(), p.Issuer) + if err != nil { + utils.WriteError(w, 500, "oidc_discovery_failed", err.Error()) + return + } + o := &oauth2.Config{ + ClientID: p.ClientID, + ClientSecret: p.Secret, + RedirectURL: redirect, + Endpoint: oidcProv.Endpoint(), + Scopes: p.Scopes, + } + tok, err := o.Exchange(r.Context(), code) + if err != nil { + utils.WriteError(w, 401, "exchange_failed", err.Error()) + return + } + + verifier := oidcProv.Verifier(&oidc.Config{ClientID: p.ClientID}) + rawIDToken, ok := tok.Extra("id_token").(string) + if !ok { + utils.WriteError(w, 401, "no_id_token", "") + return + } + idt, err := verifier.Verify(r.Context(), rawIDToken) + if err != nil { + utils.WriteError(w, 401, "id_token_invalid", err.Error()) + return + } + + var claims struct { + Email string `json:"email"` + EmailVerified bool `json:"email_verified"` + Name string `json:"name"` + Sub string `json:"sub"` + } + if err := idt.Claims(&claims); err != nil { + utils.WriteError(w, 401, "claims_parse_error", err.Error()) + return + } + email = strings.ToLower(claims.Email) + display = claims.Name + subject = "google:" + claims.Sub + } + + // Upsert Account + User; domain auto-join (member) + user, err := upsertAccountAndUser(db, p.Name, subject, email, display) + if err != nil { + utils.WriteError(w, 500, "account_upsert_failed", err.Error()) + return + } + + // Org auto-join: Organization.Domain == email domain + _ = ensureAutoMembership(db, user.ID, email) + + // Issue tokens + accessTTL := 1 * time.Hour + refreshTTL := 30 * 24 * time.Hour + + access, err := auth.IssueAccessToken(auth.IssueOpts{ + Subject: user.ID.String(), + Issuer: cfg.JWTIssuer, + Audience: cfg.JWTAudience, + TTL: accessTTL, + Claims: map[string]any{ + "email": email, + "name": display, + }, + }) + if err != nil { + utils.WriteError(w, 500, "issue_access_failed", err.Error()) + return + } + + rp, err := auth.IssueRefreshToken(db, user.ID, refreshTTL, nil) + if err != nil { + utils.WriteError(w, 500, "issue_refresh_failed", err.Error()) + return + } + + // If the state indicates SPA popup mode, postMessage tokens to the opener and close + state := r.URL.Query().Get("state") + if strings.Contains(state, "mode=spa") { + origin := "" + for _, part := range strings.Split(state, "|") { + if strings.HasPrefix(part, "origin=") { + origin, _ = url.QueryUnescape(strings.TrimPrefix(part, "origin=")) + break + } + } + // fallback: restrict to backend origin if none supplied + if origin == "" { + origin = cfg.OAuthRedirectBase + } + payload := dto.TokenPair{ + AccessToken: access, + RefreshToken: rp.Plain, + TokenType: "Bearer", + ExpiresIn: int64(accessTTL.Seconds()), + } + writePostMessageHTML(w, origin, payload) + return + } + + // Default JSON response + utils.WriteJSON(w, http.StatusOK, dto.TokenPair{ + AccessToken: access, + RefreshToken: rp.Plain, + TokenType: "Bearer", + ExpiresIn: int64(accessTTL.Seconds()), + }) + } +} + +// Refresh godoc +// @ID Refresh +// @Summary Rotate refresh token +// @Tags Auth +// @Accept json +// @Produce json +// @Param body body dto.RefreshRequest true "Refresh token" +// @Success 200 {object} dto.TokenPair +// @Router /auth/refresh [post] +func Refresh(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + cfg, _ := config.Load() + var req dto.RefreshRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, 400, "invalid_json", err.Error()) + return + } + rec, err := auth.ValidateRefreshToken(db, req.RefreshToken) + if err != nil { + utils.WriteError(w, 401, "invalid_refresh", "") + return + } + + var u models.User + if err := db.First(&u, "id = ? AND is_disabled = false", rec.UserID).Error; err != nil { + utils.WriteError(w, 401, "user_disabled", "") + return + } + + // rotate + newPair, err := auth.RotateRefreshToken(db, rec, 30*24*time.Hour) + if err != nil { + utils.WriteError(w, 500, "rotate_failed", err.Error()) + return + } + + // new access + access, err := auth.IssueAccessToken(auth.IssueOpts{ + Subject: u.ID.String(), + Issuer: cfg.JWTIssuer, + Audience: cfg.JWTAudience, + TTL: 1 * time.Hour, + }) + if err != nil { + utils.WriteError(w, 500, "issue_access_failed", err.Error()) + return + } + + utils.WriteJSON(w, 200, dto.TokenPair{ + AccessToken: access, + RefreshToken: newPair.Plain, + TokenType: "Bearer", + ExpiresIn: 3600, + }) + } +} + +// Logout godoc +// @ID Logout +// @Summary Revoke refresh token family (logout everywhere) +// @Tags Auth +// @Accept json +// @Produce json +// @Param body body dto.LogoutRequest true "Refresh token" +// @Success 204 "No Content" +// @Router /auth/logout [post] +func Logout(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req dto.LogoutRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, 400, "invalid_json", err.Error()) + return + } + rec, err := auth.ValidateRefreshToken(db, req.RefreshToken) + if err != nil { + w.WriteHeader(204) // already invalid/revoked + return + } + if err := auth.RevokeFamily(db, rec.FamilyID); err != nil { + utils.WriteError(w, 500, "revoke_failed", err.Error()) + return + } + w.WriteHeader(204) + } +} + +// Helpers + +func upsertAccountAndUser(db *gorm.DB, provider, subject, email, display string) (*models.User, error) { + email = strings.ToLower(email) + var acc models.Account + if err := db.Where("provider = ? AND subject = ?", provider, subject).First(&acc).Error; err == nil { + var u models.User + if err := db.First(&u, "id = ?", acc.UserID).Error; err != nil { + return nil, err + } + return &u, nil + } + // Link by email if exists + var ue models.UserEmail + if err := db.Where("LOWER(email) = ?", email).First(&ue).Error; err == nil { + acc = models.Account{ + UserID: ue.UserID, + Provider: provider, + Subject: subject, + Email: &email, + EmailVerified: true, + } + if err := db.Create(&acc).Error; err != nil { + return nil, err + } + var u models.User + if err := db.First(&u, "id = ?", ue.UserID).Error; err != nil { + return nil, err + } + return &u, nil + } + // Create user + u := models.User{DisplayName: &display, PrimaryEmail: &email} + if err := db.Create(&u).Error; err != nil { + return nil, err + } + ue = models.UserEmail{UserID: u.ID, Email: email, IsVerified: true, IsPrimary: true} + _ = db.Create(&ue).Error + acc = models.Account{UserID: u.ID, Provider: provider, Subject: subject, Email: &email, EmailVerified: true} + _ = db.Create(&acc).Error + return &u, nil +} + +func ensureAutoMembership(db *gorm.DB, userID uuid.UUID, email string) error { + parts := strings.SplitN(strings.ToLower(email), "@", 2) + if len(parts) != 2 { + return nil + } + domain := parts[1] + var org models.Organization + if err := db.Where("LOWER(domain) = ?", domain).First(&org).Error; err != nil { + return nil + } + // if already member, done + var c int64 + db.Model(&models.Membership{}). + Where("user_id = ? AND organization_id = ?", userID, org.ID). + Count(&c) + if c > 0 { + return nil + } + return db.Create(&models.Membership{ + UserID: userID, OrganizationID: org.ID, Role: "member", + }).Error +} + +// writePostMessageHTML sends a tiny HTML page that posts tokens to the SPA and closes the window. +func writePostMessageHTML(w http.ResponseWriter, origin string, payload dto.TokenPair) { + b, _ := json.Marshal(payload) + w.Header().Set("Content-Type", "text/html; charset=utf-8") + w.Header().Set("Cache-Control", "no-store") + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(``)) +} diff --git a/internal/handlers/dto/auth.go b/internal/handlers/dto/auth.go new file mode 100644 index 0000000..7edc0c9 --- /dev/null +++ b/internal/handlers/dto/auth.go @@ -0,0 +1,24 @@ +package dto + +// swagger:model AuthStartResponse +type AuthStartResponse struct { + AuthURL string `json:"auth_url" example:"https://accounts.google.com/o/oauth2/v2/auth?client_id=..."` +} + +// swagger:model TokenPair +type TokenPair struct { + AccessToken string `json:"access_token" example:"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ij..."` + RefreshToken string `json:"refresh_token" example:"m0l9o8rT3t0V8d3eFf...."` + TokenType string `json:"token_type" example:"Bearer"` + ExpiresIn int64 `json:"expires_in" example:"3600"` +} + +// swagger:model RefreshRequest +type RefreshRequest struct { + RefreshToken string `json:"refresh_token" example:"m0l9o8rT3t0V8d3eFf..."` +} + +// swagger:model LogoutRequest +type LogoutRequest struct { + RefreshToken string `json:"refresh_token" example:"m0l9o8rT3t0V8d3eFf..."` +} diff --git a/internal/handlers/dto/jwks.go b/internal/handlers/dto/jwks.go new file mode 100644 index 0000000..d4ddb7e --- /dev/null +++ b/internal/handlers/dto/jwks.go @@ -0,0 +1,19 @@ +package dto + +// JWK represents a single JSON Web Key (public only). +// swagger:model JWK +type JWK struct { + Kty string `json:"kty" example:"RSA" gorm:"-"` + Use string `json:"use,omitempty" example:"sig" gorm:"-"` + Kid string `json:"kid,omitempty" example:"7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345" gorm:"-"` + Alg string `json:"alg,omitempty" example:"RS256" gorm:"-"` + N string `json:"n,omitempty" gorm:"-"` + E string `json:"e,omitempty" example:"AQAB" gorm:"-"` + X string `json:"x,omitempty" gorm:"-"` +} + +// JWKS is a JSON Web Key Set container. +// swagger:model JWKS +type JWKS struct { + Keys []JWK `json:"keys" gorm:"-"` +} diff --git a/internal/handlers/dto/servers.go b/internal/handlers/dto/servers.go new file mode 100644 index 0000000..fabe44f --- /dev/null +++ b/internal/handlers/dto/servers.go @@ -0,0 +1,37 @@ +package dto + +import "github.com/google/uuid" + +type CreateServerRequest struct { + Hostname string `json:"hostname,omitempty"` + PublicIPAddress string `json:"public_ip_address,omitempty"` + PrivateIPAddress string `json:"private_ip_address"` + SSHUser string `json:"ssh_user"` + SshKeyID string `json:"ssh_key_id"` + Role string `json:"role" example:"master|worker|bastion"` + Status string `json:"status,omitempty" example:"pending|provisioning|ready|failed"` +} + +type UpdateServerRequest struct { + Hostname *string `json:"hostname,omitempty"` + PublicIPAddress *string `json:"public_ip_address,omitempty"` + PrivateIPAddress *string `json:"private_ip_address,omitempty"` + SSHUser *string `json:"ssh_user,omitempty"` + SshKeyID *string `json:"ssh_key_id,omitempty"` + Role *string `json:"role,omitempty" example:"master|worker|bastion"` + Status *string `json:"status,omitempty" example:"pending|provisioning|ready|failed"` +} + +type ServerResponse struct { + ID uuid.UUID `json:"id"` + OrganizationID uuid.UUID `json:"organization_id"` + Hostname string `json:"hostname"` + PublicIPAddress *string `json:"public_ip_address,omitempty"` + PrivateIPAddress string `json:"private_ip_address"` + SSHUser string `json:"ssh_user"` + SshKeyID uuid.UUID `json:"ssh_key_id"` + Role string `json:"role"` + Status string `json:"status"` + CreatedAt string `json:"created_at,omitempty"` + UpdatedAt string `json:"updated_at,omitempty"` +} diff --git a/internal/handlers/dto/ssh.go b/internal/handlers/dto/ssh.go new file mode 100644 index 0000000..e4cb097 --- /dev/null +++ b/internal/handlers/dto/ssh.go @@ -0,0 +1,38 @@ +package dto + +import "github.com/google/uuid" + +type CreateSSHRequest struct { + Name string `json:"name"` + Comment string `json:"comment,omitempty" example:"deploy@autoglue"` + Bits *int `json:"bits,omitempty"` // Only for RSA + Type *string `json:"type,omitempty"` // "rsa" (default) or "ed25519" +} + +type SshResponse struct { + ID uuid.UUID `json:"id"` + OrganizationID uuid.UUID `json:"organization_id"` + Name string `json:"name"` + PublicKey string `json:"public_key"` + Fingerprint string `json:"fingerprint"` + CreatedAt string `json:"created_at,omitempty"` + UpdatedAt string `json:"updated_at,omitempty"` +} + +type SshRevealResponse struct { + SshResponse + PrivateKey string `json:"private_key"` +} + +type SshMaterialJSON struct { + ID string `json:"id"` + Name string `json:"name"` + Fingerprint string `json:"fingerprint"` + // Exactly one of the following will be populated for part=public/private. + PublicKey *string `json:"public_key,omitempty"` // OpenSSH authorized_key (string) + PrivatePEM *string `json:"private_pem,omitempty"` // PKCS#1/PEM (string) + // For part=both with mode=json we'll return a base64 zip + ZipBase64 *string `json:"zip_base64,omitempty"` // base64-encoded zip + // Suggested filenames (SDKs can save to disk without inferring names) + Filenames []string `json:"filenames"` +} diff --git a/internal/handlers/dto/taints.go b/internal/handlers/dto/taints.go new file mode 100644 index 0000000..f01690e --- /dev/null +++ b/internal/handlers/dto/taints.go @@ -0,0 +1,22 @@ +package dto + +import "github.com/google/uuid" + +type TaintResponse struct { + ID uuid.UUID `json:"id"` + Key string `json:"key"` + Value string `json:"value"` + Effect string `json:"effect"` +} + +type CreateTaintRequest struct { + Key string `json:"key"` + Value string `json:"value"` + Effect string `json:"effect"` +} + +type UpdateTaintRequest struct { + Key *string `json:"key,omitempty"` + Value *string `json:"value,omitempty"` + Effect *string `json:"effect,omitempty"` +} diff --git a/internal/handlers/jwks.go b/internal/handlers/jwks.go new file mode 100644 index 0000000..308b574 --- /dev/null +++ b/internal/handlers/jwks.go @@ -0,0 +1,56 @@ +package handlers + +import ( + "net/http" + + "github.com/glueops/autoglue/internal/auth" + "github.com/glueops/autoglue/internal/handlers/dto" + "github.com/glueops/autoglue/internal/utils" +) + +type jwk struct { + Kty string `json:"kty"` + Use string `json:"use,omitempty"` + Kid string `json:"kid,omitempty"` + Alg string `json:"alg,omitempty"` + N string `json:"n,omitempty"` // RSA modulus (base64url) + E string `json:"e,omitempty"` // RSA exponent (base64url) + X string `json:"x,omitempty"` // Ed25519 public key (base64url) +} + +type jwks struct { + Keys []jwk `json:"keys"` +} + +// JWKSHandler godoc +// @ID getJWKS +// @Summary Get JWKS +// @Description Returns the JSON Web Key Set for token verification +// @Tags Auth +// @Produce json +// @Success 200 {object} dto.JWKS +// @Router /.well-known/jwks.json [get] +func JWKSHandler(w http.ResponseWriter, _ *http.Request) { + out := dto.JWKS{Keys: make([]dto.JWK, 0)} + + auth.KcCopy(func(pub map[string]interface{}) { + for kid, pk := range pub { + meta := auth.MetaFor(kid) + params, kty := auth.PubToJWK(kid, meta.Alg, pk) + if kty == "" { + continue + } + j := dto.JWK{ + Kty: kty, + Use: "sig", + Kid: kid, + Alg: meta.Alg, + N: params["n"], + E: params["e"], + X: params["x"], + } + out.Keys = append(out.Keys, j) + } + }) + utils.WriteJSON(w, http.StatusOK, out) +} diff --git a/internal/handlers/me.go b/internal/handlers/me.go new file mode 100644 index 0000000..e6a9f2e --- /dev/null +++ b/internal/handlers/me.go @@ -0,0 +1,120 @@ +package handlers + +import ( + "encoding/json" + "net/http" + + "github.com/glueops/autoglue/internal/api/httpmiddleware" + "github.com/glueops/autoglue/internal/models" + "github.com/glueops/autoglue/internal/utils" + "gorm.io/gorm" +) + +type meResponse struct { + models.User `json:",inline"` + Emails []models.UserEmail `json:"emails"` + Organizations []models.Organization `json:"organizations"` +} + +// GetMe godoc +// @ID GetMe +// @Summary Get current user profile +// @Tags Me +// @Produce json +// @Success 200 {object} meResponse +// @Router /me [get] +// @Security BearerAuth +// @Security ApiKeyAuth +func GetMe(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := httpmiddleware.UserFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "not signed in") + return + } + + var user models.User + if err := db.First(&user, "id = ? AND is_disabled = false", u.ID).Error; err != nil { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "user not found/disabled") + return + } + + var emails []models.UserEmail + _ = db.Where("user_id = ?", user.ID).Order("is_primary desc, created_at asc").Find(&emails).Error + + var orgs []models.Organization + { + var rows []models.Membership + _ = db.Where("user_id = ?", user.ID).Find(&rows).Error + if len(rows) > 0 { + var ids []interface{} + for _, m := range rows { + ids = append(ids, m.OrganizationID) + } + _ = db.Find(&orgs, "id IN ?", ids).Error + } + } + + utils.WriteJSON(w, http.StatusOK, meResponse{ + User: user, + Emails: emails, + Organizations: orgs, + }) + } +} + +type updateMeRequest struct { + DisplayName *string `json:"display_name,omitempty"` + // You can add more editable fields here (timezone, avatar, etc) +} + +// UpdateMe godoc +// @ID UpdateMe +// @Summary Update current user profile +// @Tags Me +// @Accept json +// @Produce json +// @Param body body updateMeRequest true "Patch profile" +// @Success 200 {object} models.User +// @Router /me [patch] +// @Security BearerAuth +// @Security ApiKeyAuth +func UpdateMe(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := httpmiddleware.UserFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "not signed in") + return + } + + var req updateMeRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, http.StatusBadRequest, "invalid_json", err.Error()) + } + + updates := map[string]interface{}{} + + if req.DisplayName != nil { + updates["display_name"] = req.DisplayName + } + + if len(updates) == 0 { + var user models.User + if err := db.First(&user, "id = ?", u.ID).Error; err != nil { + utils.WriteError(w, 404, "not_found", "user") + return + } + utils.WriteJSON(w, 200, user) + return + } + + if err := db.Model(&models.User{}).Where("id = ?", u.ID).Updates(updates).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + + var out models.User + _ = db.First(&out, "id = ?", u.ID).Error + utils.WriteJSON(w, 200, out) + } +} diff --git a/internal/handlers/me_keys.go b/internal/handlers/me_keys.go new file mode 100644 index 0000000..4dce04f --- /dev/null +++ b/internal/handlers/me_keys.go @@ -0,0 +1,175 @@ +package handlers + +import ( + "crypto/rand" + "encoding/base64" + "encoding/json" + "net/http" + "time" + + "github.com/glueops/autoglue/internal/api/httpmiddleware" + "github.com/glueops/autoglue/internal/auth" + "github.com/glueops/autoglue/internal/models" + "github.com/glueops/autoglue/internal/utils" + "github.com/go-chi/chi/v5" + "github.com/google/uuid" + "gorm.io/gorm" +) + +type userAPIKeyOut struct { + ID uuid.UUID `json:"id" format:"uuid"` + Name *string `json:"name,omitempty"` + Scope string `json:"scope"` // "user" + CreatedAt time.Time `json:"created_at"` + ExpiresAt *time.Time `json:"expires_at,omitempty"` + LastUsedAt *time.Time `json:"last_used_at,omitempty"` + Plain *string `json:"plain,omitempty"` // Shown only on create: +} + +// ListUserAPIKeys godoc +// @ID ListUserAPIKeys +// @Summary List my API keys +// @Tags Me / API Keys +// @Produce json +// @Success 200 {array} userAPIKeyOut +// @Router /me/api-keys [get] +// @Security BearerAuth +// @Security ApiKeyAuth +func ListUserAPIKeys(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := httpmiddleware.UserFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "not signed in") + return + } + var rows []models.APIKey + if err := db. + Where("scope = ? AND user_id = ?", "user", u.ID). + Order("created_at desc"). + Find(&rows).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + out := make([]userAPIKeyOut, 0, len(rows)) + for _, k := range rows { + out = append(out, toUserKeyOut(k, nil)) + } + utils.WriteJSON(w, 200, out) + } +} + +type createUserKeyRequest struct { + Name string `json:"name,omitempty"` + ExpiresInHours *int `json:"expires_in_hours,omitempty"` // optional TTL +} + +// CreateUserAPIKey godoc +// @ID CreateUserAPIKey +// @Summary Create a new user API key +// @Description Returns the plaintext key once. Store it securely on the client side. +// @Tags Me / API Keys +// @Accept json +// @Produce json +// @Param body body createUserKeyRequest true "Key options" +// @Success 201 {object} userAPIKeyOut +// @Router /me/api-keys [post] +// @Security BearerAuth +// @Security ApiKeyAuth +func CreateUserAPIKey(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := httpmiddleware.UserFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "not signed in") + return + } + var req createUserKeyRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, 400, "invalid_json", err.Error()) + return + } + + plain, err := generateUserAPIKey() + if err != nil { + utils.WriteError(w, 500, "gen_failed", err.Error()) + return + } + hash := auth.SHA256Hex(plain) + + var exp *time.Time + if req.ExpiresInHours != nil && *req.ExpiresInHours > 0 { + t := time.Now().Add(time.Duration(*req.ExpiresInHours) * time.Hour) + exp = &t + } + + rec := models.APIKey{ + Scope: "user", + UserID: &u.ID, + KeyHash: hash, + Name: req.Name, // if field exists + ExpiresAt: exp, + // SecretHash: nil (not used for user keys) + } + if err := db.Create(&rec).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + utils.WriteJSON(w, http.StatusCreated, toUserKeyOut(rec, &plain)) + } +} + +// DeleteUserAPIKey godoc +// @ID DeleteUserAPIKey +// @Summary Delete a user API key +// @Tags Me / API Keys +// @Produce json +// @Param id path string true "Key ID (UUID)" +// @Success 204 "No Content" +// @Router /me/api-keys/{id} [delete] +// @Security BearerAuth +func DeleteUserAPIKey(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := httpmiddleware.UserFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "not signed in") + return + } + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, 400, "invalid_id", "must be uuid") + return + } + tx := db.Where("id = ? AND scope = ? AND user_id = ?", id, "user", u.ID). + Delete(&models.APIKey{}) + if tx.Error != nil { + utils.WriteError(w, 500, "db_error", tx.Error.Error()) + return + } + if tx.RowsAffected == 0 { + utils.WriteError(w, 404, "not_found", "key not found") + return + } + w.WriteHeader(http.StatusNoContent) + } +} + +func toUserKeyOut(k models.APIKey, plain *string) userAPIKeyOut { + return userAPIKeyOut{ + ID: k.ID, + Name: &k.Name, // if your model has it; else remove + Scope: k.Scope, + CreatedAt: k.CreatedAt, + ExpiresAt: k.ExpiresAt, + LastUsedAt: k.LastUsedAt, // if present; else remove + Plain: plain, + } +} + +func generateUserAPIKey() (string, error) { + // 24 random bytes → base64url (no padding), with "u_" prefix + b := make([]byte, 24) + if _, err := rand.Read(b); err != nil { + return "", err + } + s := base64.RawURLEncoding.EncodeToString(b) + return "u_" + s, nil +} diff --git a/internal/handlers/orgs.go b/internal/handlers/orgs.go new file mode 100644 index 0000000..d8f0ace --- /dev/null +++ b/internal/handlers/orgs.go @@ -0,0 +1,647 @@ +package handlers + +import ( + "crypto/rand" + "encoding/base64" + "encoding/json" + "errors" + "net/http" + "strings" + "time" + + "github.com/glueops/autoglue/internal/api/httpmiddleware" + "github.com/glueops/autoglue/internal/auth" + "github.com/glueops/autoglue/internal/models" + "github.com/glueops/autoglue/internal/utils" + "github.com/go-chi/chi/v5" + "github.com/google/uuid" + "gorm.io/gorm" +) + +// ---------- Helpers ---------- + +func mustUser(r *http.Request) (*models.User, bool) { + return httpmiddleware.UserFrom(r.Context()) +} + +func isOrgRole(db *gorm.DB, userID, orgID uuid.UUID, want ...string) (bool, string) { + var m models.Membership + if err := db.Where("user_id = ? AND organization_id = ?", userID, orgID).First(&m).Error; err != nil { + return false, "" + } + got := strings.ToLower(m.Role) + for _, w := range want { + if got == strings.ToLower(w) { + return true, got + } + } + return false, got +} + +func mustMember(db *gorm.DB, userID, orgID uuid.UUID) bool { + ok, _ := isOrgRole(db, userID, orgID, "owner", "admin", "member") + return ok +} + +func randomB64URL(n int) (string, error) { + b := make([]byte, n) + if _, err := rand.Read(b); err != nil { + return "", err + } + return base64.RawURLEncoding.EncodeToString(b), nil +} + +// ---------- Orgs: list/create/get/update/delete ---------- + +type orgCreateReq struct { + Name string `json:"name" example:"Acme Corp"` + Domain *string `json:"domain,omitempty" example:"acme.com"` +} + +// CreateOrg godoc +// @ID CreateOrg +// @Summary Create organization +// @Tags Orgs +// @Accept json +// @Produce json +// @Param body body orgCreateReq true "Org payload" +// @Success 201 {object} models.Organization +// @Failure 400 {object} utils.ErrorResponse +// @Failure 401 {object} utils.ErrorResponse +// @Failure 409 {object} utils.ErrorResponse +// @Router /orgs [post] +// @ID createOrg +// @Security BearerAuth +func CreateOrg(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "") + return + } + + var req orgCreateReq + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, 400, "invalid_json", err.Error()) + return + } + + if strings.TrimSpace(req.Name) == "" { + utils.WriteError(w, 400, "validation_error", "name is required") + return + } + + org := models.Organization{Name: req.Name} + if req.Domain != nil && strings.TrimSpace(*req.Domain) != "" { + org.Domain = req.Domain + } + + if err := db.Create(&org).Error; err != nil { + utils.WriteError(w, 409, "conflict", err.Error()) + return + } + + // creator is owner + _ = db.Create(&models.Membership{ + UserID: u.ID, OrganizationID: org.ID, Role: "owner", + }).Error + + utils.WriteJSON(w, 201, org) + } +} + +// ListMyOrgs godoc +// @ID ListMyOrgs +// @Summary List organizations I belong to +// @Tags Orgs +// @Produce json +// @Success 200 {array} models.Organization +// @Failure 401 {object} utils.ErrorResponse +// @Router /orgs [get] +// @ID listMyOrgs +// @Security BearerAuth +func ListMyOrgs(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, http.StatusUnauthorized, "unauthorized", "") + return + } + + var orgs []models.Organization + if err := db. + Joins("join memberships m on m.organization_id = organizations.id"). + Where("m.user_id = ?", u.ID). + Order("organizations.created_at desc"). + Find(&orgs).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + utils.WriteJSON(w, 200, orgs) + } +} + +// GetOrg godoc +// @ID GetOrg +// @Summary Get organization +// @Tags Orgs +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Success 200 {object} models.Organization +// @Failure 401 {object} utils.ErrorResponse +// @Failure 404 {object} utils.ErrorResponse +// @Router /orgs/{id} [get] +// @ID getOrg +// @Security BearerAuth +func GetOrg(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + if !mustMember(db, u.ID, oid) { + utils.WriteError(w, 401, "forbidden", "not a member") + return + } + var org models.Organization + if err := db.First(&org, "id = ?", oid).Error; err != nil { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + utils.WriteJSON(w, 200, org) + } +} + +type orgUpdateReq struct { + Name *string `json:"name,omitempty"` + Domain *string `json:"domain,omitempty"` +} + +// UpdateOrg godoc +// @ID UpdateOrg +// @Summary Update organization (owner/admin) +// @Tags Orgs +// @Accept json +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Param body body orgUpdateReq true "Update payload" +// @Success 200 {object} models.Organization +// @Failure 401 {object} utils.ErrorResponse +// @Failure 404 {object} utils.ErrorResponse +// @Router /orgs/{id} [patch] +// @ID updateOrg +// @Security BearerAuth +func UpdateOrg(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + if ok, _ := isOrgRole(db, u.ID, oid, "owner", "admin"); !ok { + utils.WriteError(w, 401, "forbidden", "admin or owner required") + return + } + var req orgUpdateReq + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, 400, "invalid_json", err.Error()) + return + } + changes := map[string]any{} + if req.Name != nil { + changes["name"] = strings.TrimSpace(*req.Name) + } + if req.Domain != nil { + if d := strings.TrimSpace(*req.Domain); d == "" { + changes["domain"] = nil + } else { + changes["domain"] = d + } + } + if len(changes) > 0 { + if err := db.Model(&models.Organization{}).Where("id = ?", oid).Updates(changes).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + } + var out models.Organization + _ = db.First(&out, "id = ?", oid).Error + utils.WriteJSON(w, 200, out) + } +} + +// DeleteOrg godoc +// @ID DeleteOrg +// @Summary Delete organization (owner) +// @Tags Orgs +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Success 204 "Deleted" +// @Failure 401 {object} utils.ErrorResponse +// @Failure 404 {object} utils.ErrorResponse +// @Router /orgs/{id} [delete] +// @ID deleteOrg +// @Security BearerAuth +func DeleteOrg(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + if ok, _ := isOrgRole(db, u.ID, oid, "owner"); !ok { + utils.WriteError(w, 401, "forbidden", "owner required") + return + } + // Optional safety: deny if members >1 or resources exist; here we just delete. + res := db.Delete(&models.Organization{}, "id = ?", oid) + if res.Error != nil { + utils.WriteError(w, 500, "db_error", res.Error.Error()) + return + } + if res.RowsAffected == 0 { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + w.WriteHeader(204) + } +} + +// ---------- Members: list/add/update/delete ---------- + +type memberOut struct { + UserID uuid.UUID `json:"user_id" format:"uuid"` + Email string `json:"email"` + Role string `json:"role"` // owner/admin/member +} + +type memberUpsertReq struct { + UserID uuid.UUID `json:"user_id" format:"uuid"` + Role string `json:"role" example:"member"` +} + +// ListMembers godoc +// @ID ListMembers +// @Summary List members in org +// @Tags Orgs +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Success 200 {array} memberOut +// @Failure 401 {object} utils.ErrorResponse +// @Router /orgs/{id}/members [get] +// @ID listMembers +// @Security BearerAuth +func ListMembers(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil || !mustMember(db, u.ID, oid) { + utils.WriteError(w, 401, "forbidden", "") + return + } + var ms []models.Membership + if err := db.Where("organization_id = ?", oid).Find(&ms).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + + // load emails + userIDs := make([]uuid.UUID, 0, len(ms)) + for _, m := range ms { + userIDs = append(userIDs, m.UserID) + } + var emails []models.UserEmail + if len(userIDs) > 0 { + _ = db.Where("user_id in ?", userIDs).Where("is_primary = true").Find(&emails).Error + } + emailByUser := map[uuid.UUID]string{} + for _, e := range emails { + emailByUser[e.UserID] = e.Email + } + + out := make([]memberOut, 0, len(ms)) + for _, m := range ms { + out = append(out, memberOut{ + UserID: m.UserID, + Email: emailByUser[m.UserID], + Role: m.Role, + }) + } + utils.WriteJSON(w, 200, out) + } +} + +// AddOrUpdateMember godoc +// @ID AddOrUpdateMember +// @Summary Add or update a member (owner/admin) +// @Tags Orgs +// @Accept json +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Param body body memberUpsertReq true "User & role" +// @Success 200 {object} memberOut +// @Failure 401 {object} utils.ErrorResponse +// @Router /orgs/{id}/members [post] +// @ID addOrUpdateMember +// @Security BearerAuth +func AddOrUpdateMember(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + if ok, _ := isOrgRole(db, u.ID, oid, "owner", "admin"); !ok { + utils.WriteError(w, 401, "forbidden", "admin or owner required") + return + } + var req memberUpsertReq + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, 400, "invalid_json", err.Error()) + return + } + role := strings.ToLower(strings.TrimSpace(req.Role)) + if role != "owner" && role != "admin" && role != "member" { + utils.WriteError(w, 400, "validation_error", "role must be owner|admin|member") + return + } + var m models.Membership + tx := db.Where("user_id = ? AND organization_id = ?", req.UserID, oid).First(&m) + if tx.Error == nil { + // update + if err := db.Model(&m).Update("role", role).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + } else if errors.Is(tx.Error, gorm.ErrRecordNotFound) { + m = models.Membership{UserID: req.UserID, OrganizationID: oid, Role: role} + if err := db.Create(&m).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + } else { + utils.WriteError(w, 500, "db_error", tx.Error.Error()) + return + } + + // make response + var ue models.UserEmail + _ = db.Where("user_id = ? AND is_primary = true", req.UserID).First(&ue).Error + utils.WriteJSON(w, 200, memberOut{ + UserID: req.UserID, Email: ue.Email, Role: m.Role, + }) + } +} + +// RemoveMember godoc +// @ID RemoveMember +// @Summary Remove a member (owner/admin) +// @Tags Orgs +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Param user_id path string true "User ID (UUID)" +// @Success 204 "Removed" +// @Failure 401 {object} utils.ErrorResponse +// @Router /orgs/{id}/members/{user_id} [delete] +// @ID removeMember +// @Security BearerAuth +func RemoveMember(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + if ok, _ := isOrgRole(db, u.ID, oid, "owner", "admin"); !ok { + utils.WriteError(w, 401, "forbidden", "admin or owner required") + return + } + uid, err := uuid.Parse(chi.URLParam(r, "user_id")) + if err != nil { + utils.WriteError(w, 400, "invalid_user_id", "") + return + } + res := db.Where("user_id = ? AND organization_id = ?", uid, oid).Delete(&models.Membership{}) + if res.Error != nil { + utils.WriteError(w, 500, "db_error", res.Error.Error()) + return + } + w.WriteHeader(204) + } +} + +// ---------- Org API Keys (key/secret pair) ---------- + +type orgKeyCreateReq struct { + Name string `json:"name,omitempty" example:"automation-bot"` + ExpiresInHours *int `json:"expires_in_hours,omitempty" example:"720"` +} + +type orgKeyCreateResp struct { + ID uuid.UUID `json:"id"` + Name string `json:"name,omitempty"` + Scope string `json:"scope"` // "org" + CreatedAt time.Time `json:"created_at"` + ExpiresAt *time.Time `json:"expires_at,omitempty"` + OrgKey string `json:"org_key"` // shown once: + OrgSecret string `json:"org_secret"` // shown once: +} + +// ListOrgKeys godoc +// @ID ListOrgKeys +// @Summary List org-scoped API keys (no secrets) +// @Tags Orgs +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Success 200 {array} models.APIKey +// @Failure 401 {object} utils.ErrorResponse +// @Router /orgs/{id}/api-keys [get] +// @ID listOrgKeys +// @Security BearerAuth +func ListOrgKeys(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil || !mustMember(db, u.ID, oid) { + utils.WriteError(w, 401, "forbidden", "") + return + } + var keys []models.APIKey + if err := db.Where("org_id = ? AND scope = ?", oid, "org"). + Order("created_at desc"). + Find(&keys).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + // SecretHash must not be exposed; your json tags likely hide it already. + utils.WriteJSON(w, 200, keys) + } +} + +// CreateOrgKey godoc +// @ID CreateOrgKey +// @Summary Create org key/secret pair (owner/admin) +// @Tags Orgs +// @Accept json +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Param body body orgKeyCreateReq true "Key name + optional expiry" +// @Success 201 {object} orgKeyCreateResp +// @Failure 401 {object} utils.ErrorResponse +// @Router /orgs/{id}/api-keys [post] +// @ID createOrgKey +// @Security BearerAuth +func CreateOrgKey(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + if ok, _ := isOrgRole(db, u.ID, oid, "owner", "admin"); !ok { + utils.WriteError(w, 401, "forbidden", "admin or owner required") + return + } + + var req orgKeyCreateReq + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, 400, "invalid_json", err.Error()) + return + } + + // generate + keySuffix, err := randomB64URL(16) + if err != nil { + utils.WriteError(w, 500, "entropy_error", err.Error()) + return + } + sec, err := randomB64URL(32) + if err != nil { + utils.WriteError(w, 500, "entropy_error", err.Error()) + return + } + orgKey := "org_" + keySuffix + secretPlain := sec + + keyHash := auth.SHA256Hex(orgKey) + secretHash, err := auth.HashSecretArgon2id(secretPlain) + if err != nil { + utils.WriteError(w, 500, "hash_error", err.Error()) + return + } + + var exp *time.Time + if req.ExpiresInHours != nil && *req.ExpiresInHours > 0 { + e := time.Now().Add(time.Duration(*req.ExpiresInHours) * time.Hour) + exp = &e + } + + rec := models.APIKey{ + OrgID: &oid, + Scope: "org", + Name: req.Name, + KeyHash: keyHash, + SecretHash: &secretHash, + ExpiresAt: exp, + } + if err := db.Create(&rec).Error; err != nil { + utils.WriteError(w, 500, "db_error", err.Error()) + return + } + + utils.WriteJSON(w, 201, orgKeyCreateResp{ + ID: rec.ID, + Name: rec.Name, + Scope: rec.Scope, + CreatedAt: rec.CreatedAt, + ExpiresAt: rec.ExpiresAt, + OrgKey: orgKey, + OrgSecret: secretPlain, + }) + } +} + +// DeleteOrgKey godoc +// @ID DeleteOrgKey +// @Summary Delete org key (owner/admin) +// @Tags Orgs +// @Produce json +// @Param id path string true "Org ID (UUID)" +// @Param key_id path string true "Key ID (UUID)" +// @Success 204 "Deleted" +// @Failure 401 {object} utils.ErrorResponse +// @Router /orgs/{id}/api-keys/{key_id} [delete] +// @ID deleteOrgKey +// @Security BearerAuth +func DeleteOrgKey(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + u, ok := mustUser(r) + if !ok { + utils.WriteError(w, 401, "unauthorized", "") + return + } + oid, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, 404, "not_found", "org not found") + return + } + if ok, _ := isOrgRole(db, u.ID, oid, "owner", "admin"); !ok { + utils.WriteError(w, 401, "forbidden", "admin or owner required") + return + } + kid, err := uuid.Parse(chi.URLParam(r, "key_id")) + if err != nil { + utils.WriteError(w, 400, "invalid_key_id", "") + return + } + res := db.Where("id = ? AND org_id = ? AND scope = ?", kid, oid, "org").Delete(&models.APIKey{}) + if res.Error != nil { + utils.WriteError(w, 500, "db_error", res.Error.Error()) + return + } + if res.RowsAffected == 0 { + utils.WriteError(w, 404, "not_found", "key not found") + return + } + w.WriteHeader(204) + } +} diff --git a/internal/handlers/servers.go b/internal/handlers/servers.go new file mode 100644 index 0000000..97e5fc9 --- /dev/null +++ b/internal/handlers/servers.go @@ -0,0 +1,388 @@ +package handlers + +import ( + "encoding/json" + "errors" + "net/http" + "strings" + "time" + + "github.com/glueops/autoglue/internal/api/httpmiddleware" + "github.com/glueops/autoglue/internal/handlers/dto" + "github.com/glueops/autoglue/internal/models" + "github.com/glueops/autoglue/internal/utils" + "github.com/go-chi/chi/v5" + "github.com/google/uuid" + "gorm.io/gorm" +) + +// ListServers godoc +// @ID ListServers +// @Summary List servers (org scoped) +// @Description Returns servers for the organization in X-Org-ID. Optional filters: status, role. +// @Tags Servers +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param status query string false "Filter by status (pending|provisioning|ready|failed)" +// @Param role query string false "Filter by role" +// @Success 200 {array} dto.ServerResponse +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "failed to list servers" +// @Router /servers [get] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func ListServers(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + q := db.Where("organization_id = ?", orgID) + + if s := strings.TrimSpace(r.URL.Query().Get("status")); s != "" { + if !validStatus(s) { + utils.WriteError(w, http.StatusBadRequest, "status_invalid", "invalid status") + return + } + q = q.Where("status = ?", strings.ToLower(s)) + } + + if role := strings.TrimSpace(r.URL.Query().Get("role")); role != "" { + q = q.Where("role = ?", role) + } + + var rows []models.Server + if err := q.Order("created_at DESC").Find(&rows).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to list servers") + return + } + + out := make([]dto.ServerResponse, 0, len(rows)) + for _, row := range rows { + out = append(out, dto.ServerResponse{ + ID: row.ID, + OrganizationID: row.OrganizationID, + Hostname: row.Hostname, + PublicIPAddress: row.PublicIPAddress, + PrivateIPAddress: row.PrivateIPAddress, + SSHUser: row.SSHUser, + SshKeyID: row.SshKeyID, + Role: row.Role, + Status: row.Status, + CreatedAt: row.CreatedAt.UTC().Format(time.RFC3339), + UpdatedAt: row.UpdatedAt.UTC().Format(time.RFC3339), + }) + } + utils.WriteJSON(w, http.StatusOK, out) + } +} + +// GetServer godoc +// @ID GetServer +// @Summary Get server by ID (org scoped) +// @Description Returns one server in the given organization. +// @Tags Servers +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param id path string true "Server ID (UUID)" +// @Success 200 {object} dto.ServerResponse +// @Failure 400 {string} string "invalid id" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 404 {string} string "not found" +// @Failure 500 {string} string "fetch failed" +// @Router /servers/{id} [get] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func GetServer(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "id_invalid", "invalid id") + return + } + + var row models.Server + if err := db.Where("id = ? AND organization_id = ?", id, orgID).First(&row).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + utils.WriteError(w, http.StatusNotFound, "server_not_found", "server not found") + return + } + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to get server") + return + } + + utils.WriteJSON(w, http.StatusOK, row) + } +} + +// CreateServer godoc +// @ID CreateServer +// @Summary Create server (org scoped) +// @Description Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id belongs to the org. +// @Tags Servers +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param body body dto.CreateServerRequest true "Server payload" +// @Success 201 {object} dto.ServerResponse +// @Failure 400 {string} string "invalid json / missing fields / invalid status / invalid ssh_key_id" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "create failed" +// @Router /servers [post] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func CreateServer(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + var req dto.CreateServerRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "bad request") + return + } + + req.Role = strings.ToLower(strings.TrimSpace(req.Role)) + req.Status = strings.ToLower(strings.TrimSpace(req.Status)) + pub := strings.TrimSpace(req.PublicIPAddress) + + if req.PrivateIPAddress == "" || req.SSHUser == "" || req.SshKeyID == "" || req.Role == "" { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "private_ip_address, ssh_user, ssh_key_id and role are required") + return + } + + if req.Status != "" && !validStatus(req.Status) { + utils.WriteError(w, http.StatusBadRequest, "status_invalid", "invalid status") + return + } + + if req.Role == "bastion" && pub == "" { + utils.WriteError(w, http.StatusBadRequest, "public_ip_required", "public_ip_address is required for role=bastion") + return + } + + keyID, err := uuid.Parse(req.SshKeyID) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "invalid ssh_key_id") + return + } + if err := ensureKeyBelongsToOrg(orgID, keyID, db); err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "invalid or unauthorized ssh_key_id") + return + } + + var publicPtr *string + if pub != "" { + publicPtr = &pub + } + + s := models.Server{ + OrganizationID: orgID, + Hostname: req.Hostname, + PublicIPAddress: publicPtr, + PrivateIPAddress: req.PrivateIPAddress, + SSHUser: req.SSHUser, + SshKeyID: keyID, + Role: req.Role, + Status: "pending", + } + if req.Status != "" { + s.Status = strings.ToLower(req.Status) + } + + if err := db.Create(&s).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to create server") + return + } + utils.WriteJSON(w, http.StatusCreated, s) + } +} + +// UpdateServer godoc +// @ID UpdateServer +// @Summary Update server (org scoped) +// @Description Partially update fields; changing ssh_key_id validates ownership. +// @Tags Servers +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param id path string true "Server ID (UUID)" +// @Param body body dto.UpdateServerRequest true "Fields to update" +// @Success 200 {object} dto.ServerResponse +// @Failure 400 {string} string "invalid id / invalid json / invalid status / invalid ssh_key_id" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 404 {string} string "not found" +// @Failure 500 {string} string "update failed" +// @Router /servers/{id} [patch] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func UpdateServer(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "id_invalid", "invalid id") + return + } + + var server models.Server + if err := db.Where("id = ? AND organization_id = ?", id, orgID).First(&server).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + utils.WriteError(w, http.StatusNotFound, "server_not_found", "server not found") + return + } + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to get server") + return + } + + var req dto.UpdateServerRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "bad request") + return + } + + next := server + + if req.Hostname != nil { + next.Hostname = *req.Hostname + } + if req.PrivateIPAddress != nil { + next.PrivateIPAddress = *req.PrivateIPAddress + } + if req.PublicIPAddress != nil { + next.PublicIPAddress = req.PublicIPAddress + } + if req.SSHUser != nil { + next.SSHUser = *req.SSHUser + } + if req.Role != nil { + next.Role = *req.Role + } + if req.Status != nil { + st := strings.ToLower(strings.TrimSpace(*req.Status)) + if !validStatus(st) { + utils.WriteError(w, http.StatusBadRequest, "status_invalid", "invalid status") + return + } + next.Status = st + } + if req.SshKeyID != nil { + keyID, err := uuid.Parse(*req.SshKeyID) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "invalid ssh_key_id") + return + } + if err := ensureKeyBelongsToOrg(orgID, keyID, db); err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "invalid or unauthorized ssh_key_id") + return + } + next.SshKeyID = keyID + } + + if strings.EqualFold(next.Role, "bastion") && + (next.PublicIPAddress == nil || strings.TrimSpace(*next.PublicIPAddress) == "") { + utils.WriteError(w, http.StatusBadRequest, "public_ip_required", "public_ip_address is required for role=bastion") + return + } + + if err := db.Save(&next).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to update server") + return + } + utils.WriteJSON(w, http.StatusOK, server) + } +} + +// DeleteServer godoc +// @ID DeleteServer +// @Summary Delete server (org scoped) +// @Description Permanently deletes the server. +// @Tags Servers +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param id path string true "Server ID (UUID)" +// @Success 204 {string} string "No Content" +// @Failure 400 {string} string "invalid id" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "delete failed" +// @Router /servers/{id} [delete] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func DeleteServer(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "id_invalid", "invalid id") + return + } + + if err := db.Where("id = ? AND organization_id = ?", id, orgID).First(&models.Server{}).Error; err != nil { + utils.WriteError(w, http.StatusNotFound, "server_not_found", "server not found") + return + } + + if err := db.Where("id = ? AND organization_id = ?", id, orgID).Delete(&models.Server{}).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to delete server") + return + } + + w.WriteHeader(http.StatusNoContent) + } +} + +// --- Helpers --- + +func validStatus(status string) bool { + switch strings.ToLower(status) { + case "pending", "provisioning", "ready", "failed", "": + return true + default: + return false + } +} + +func ensureKeyBelongsToOrg(orgID, keyID uuid.UUID, db *gorm.DB) error { + var k models.SshKey + if err := db.Where("id = ? AND organization_id = ?", keyID, orgID).First(&k).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("ssh key not found for this organization") + } + return err + } + return nil +} diff --git a/internal/handlers/ssh.go b/internal/handlers/ssh.go new file mode 100644 index 0000000..2d590ca --- /dev/null +++ b/internal/handlers/ssh.go @@ -0,0 +1,553 @@ +package handlers + +import ( + "archive/zip" + "bytes" + "crypto/ed25519" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/json" + "encoding/pem" + "errors" + "fmt" + "net/http" + "strings" + "time" + + "github.com/glueops/autoglue/internal/api/httpmiddleware" + "github.com/glueops/autoglue/internal/handlers/dto" + "github.com/glueops/autoglue/internal/models" + "github.com/glueops/autoglue/internal/utils" + "github.com/go-chi/chi/v5" + "github.com/google/uuid" + "golang.org/x/crypto/ssh" + "gorm.io/gorm" +) + +// ListPublicSshKeys godoc +// @ID ListPublicSshKeys +// @Summary List ssh keys (org scoped) +// @Description Returns ssh keys for the organization in X-Org-ID. +// @Tags Ssh +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Success 200 {array} dto.SshResponse +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "failed to list keys" +// @Router /ssh [get] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func ListPublicSshKeys(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + var rows []models.SshKey + if err := db.Where("organization_id = ?", orgID).Order("created_at DESC").Find(&rows).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to list ssh keys") + return + } + + out := make([]dto.SshResponse, 0, len(rows)) + for _, row := range rows { + out = append(out, dto.SshResponse{ + ID: row.ID, + OrganizationID: row.OrganizationID, + Name: row.Name, + PublicKey: row.PublicKey, + Fingerprint: row.Fingerprint, + CreatedAt: row.CreatedAt.UTC().Format(time.RFC3339), + UpdatedAt: row.UpdatedAt.UTC().Format(time.RFC3339), + }) + } + + utils.WriteJSON(w, http.StatusOK, out) + } +} + +// CreateSSHKey +// @ID CreateSSHKey +// @Summary Create ssh keypair (org scoped) +// @Description Generates an RSA or ED25519 keypair, saves it, and returns metadata. For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores bits. +// @Tags Ssh +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param body body dto.CreateSSHRequest true "Key generation options" +// @Success 201 {object} dto.SshResponse +// @Failure 400 {string} string "invalid json / invalid bits" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "generation/create failed" +// @Router /ssh [post] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func CreateSSHKey(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + var req dto.CreateSSHRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, http.StatusBadRequest, "invalid_payload", "invalid JSON payload") + return + } + + keyType := "rsa" + if req.Type != nil && strings.TrimSpace(*req.Type) != "" { + keyType = strings.ToLower(strings.TrimSpace(*req.Type)) + } + + if keyType != "rsa" && keyType != "ed25519" { + utils.WriteError(w, http.StatusBadRequest, "invalid_type", "invalid type (rsa|ed25519)") + return + } + + var ( + privPEM string + pubAuth string + err error + ) + + switch keyType { + case "rsa": + bits := 4096 + if req.Bits != nil { + if !allowedBits(*req.Bits) { + utils.WriteError(w, http.StatusBadRequest, "invalid_bits", "invalid bits (allowed: 2048, 3072, 4096)") + return + } + bits = *req.Bits + } + privPEM, pubAuth, err = GenerateRSAPEMAndAuthorized(bits, strings.TrimSpace(req.Comment)) + + case "ed25519": + if req.Bits != nil { + utils.WriteError(w, http.StatusBadRequest, "invalid_bits_for_type", "bits is only valid for RSA") + return + } + privPEM, pubAuth, err = GenerateEd25519PEMAndAuthorized(strings.TrimSpace(req.Comment)) + } + + if err != nil { + utils.WriteError(w, http.StatusInternalServerError, "keygen_failure", "key generation failed") + return + } + + cipher, iv, tag, err := utils.EncryptForOrg(orgID, []byte(privPEM), db) + if err != nil { + http.Error(w, "encryption failed", http.StatusInternalServerError) + return + } + + parsed, _, _, _, err := ssh.ParseAuthorizedKey([]byte(pubAuth)) + if err != nil { + utils.WriteError(w, http.StatusInternalServerError, "ssh_failure", "ssh public key parsing failed") + return + } + + fp := ssh.FingerprintSHA256(parsed) + + key := models.SshKey{ + OrganizationID: orgID, + Name: req.Name, + PublicKey: pubAuth, + EncryptedPrivateKey: cipher, + PrivateIV: iv, + PrivateTag: tag, + Fingerprint: fp, + } + + if err := db.Create(&key).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to create ssh key") + return + } + + utils.WriteJSON(w, http.StatusCreated, dto.SshResponse{ + ID: key.ID, + OrganizationID: key.OrganizationID, + Name: key.Name, + PublicKey: key.PublicKey, + Fingerprint: key.Fingerprint, + CreatedAt: key.CreatedAt.UTC().Format(time.RFC3339), + UpdatedAt: key.UpdatedAt.UTC().Format(time.RFC3339), + }) + } +} + +// GetSSHKey godoc +// @ID GetSSHKey +// @Summary Get ssh key by ID (org scoped) +// @Description Returns public key fields. Append `?reveal=true` to include the private key PEM. +// @Tags Ssh +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param id path string true "SSH Key ID (UUID)" +// @Param reveal query bool false "Reveal private key PEM" +// @Success 200 {object} dto.SshResponse +// @Success 200 {object} dto.SshRevealResponse "When reveal=true" +// @Failure 400 {string} string "invalid id" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 404 {string} string "not found" +// @Failure 500 {string} string "fetch failed" +// @Router /ssh/{id} [get] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func GetSSHKey(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "invalid_ssh_key_id", "invalid SSH Key ID") + return + } + + var key models.SshKey + if err := db.Where("id = ? AND organization_id = ?", id, orgID).First(&key).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + utils.WriteError(w, http.StatusNotFound, "ssh_key_not_found", "ssh key not found") + return + } + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to get ssh key") + return + } + + if r.URL.Query().Get("reveal") != "true" { + utils.WriteJSON(w, http.StatusOK, dto.SshResponse{ + ID: key.ID, + OrganizationID: key.OrganizationID, + Name: key.Name, + PublicKey: key.PublicKey, + Fingerprint: key.Fingerprint, + CreatedAt: key.CreatedAt.UTC().Format(time.RFC3339), + UpdatedAt: key.UpdatedAt.UTC().Format(time.RFC3339), + }) + return + } + + plain, err := utils.DecryptForOrg(orgID, key.EncryptedPrivateKey, key.PrivateIV, key.PrivateTag, db) + if err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to decrypt ssh key") + return + } + + utils.WriteJSON(w, http.StatusOK, dto.SshRevealResponse{ + SshResponse: dto.SshResponse{ + ID: key.ID, + OrganizationID: key.OrganizationID, + Name: key.Name, + PublicKey: key.PublicKey, + Fingerprint: key.Fingerprint, + CreatedAt: key.CreatedAt.UTC().Format(time.RFC3339), + UpdatedAt: key.UpdatedAt.UTC().Format(time.RFC3339), + }, + PrivateKey: plain, + }) + } +} + +// DeleteSSHKey godoc +// @ID DeleteSSHKey +// @Summary Delete ssh keypair (org scoped) +// @Description Permanently deletes a keypair. +// @Tags Ssh +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param id path string true "SSH Key ID (UUID)" +// @Success 204 {string} string "No Content" +// @Failure 400 {string} string "invalid id" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "delete failed" +// @Router /ssh/{id} [delete] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func DeleteSSHKey(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "invalid_ssh_key_id", "invalid SSH Key ID") + return + } + + if err := db.Where("id = ? AND organization_id = ?", id, orgID). + Delete(&models.SshKey{}).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to delete ssh key") + return + } + w.WriteHeader(http.StatusNoContent) + } +} + +// DownloadSSHKey godoc +// @ID DownloadSSHKey +// @Summary Download ssh key files by ID (org scoped) +// @Description Download `part=public|private|both` of the keypair. `both` returns a zip file. +// @Tags Ssh +// @Produce json +// @Param X-Org-ID header string true "Organization UUID" +// @Param id path string true "SSH Key ID (UUID)" +// @Param part query string true "Which part to download" Enums(public,private,both) +// @Success 200 {string} string "file content" +// @Failure 400 {string} string "invalid id / invalid part" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 404 {string} string "not found" +// @Failure 500 {string} string "download failed" +// @Router /ssh/{id}/download [get] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func DownloadSSHKey(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "invalid_ssh_key_id", "invalid SSH Key ID") + return + } + + var key models.SshKey + if err := db.Where("id = ? AND organization_id = ?", id, orgID). + First(&key).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + utils.WriteError(w, http.StatusNotFound, "ssh_key_not_found", "ssh key not found") + return + } + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to get ssh key") + return + } + + part := strings.ToLower(r.URL.Query().Get("part")) + if part == "" { + utils.WriteError(w, http.StatusBadRequest, "invalid_ssh_part", "invalid part (public|private|both)") + return + } + + mode := strings.ToLower(r.URL.Query().Get("mode")) + if mode != "" && mode != "json" { + utils.WriteError(w, http.StatusBadRequest, "invalid_mode", "invalid mode (json|attachment[default])") + return + } + + if mode == "json" { + resp := dto.SshMaterialJSON{ + ID: key.ID.String(), + Name: key.Name, + Fingerprint: key.Fingerprint, + } + switch part { + case "public": + pub := key.PublicKey + resp.PublicKey = &pub + resp.Filenames = []string{fmt.Sprintf("id_rsa_%s.pub", key.ID.String())} + utils.WriteJSON(w, http.StatusOK, resp) + return + + case "private": + plain, err := utils.DecryptForOrg(orgID, key.EncryptedPrivateKey, key.PrivateIV, key.PrivateTag, db) + if err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to decrypt ssh key") + return + } + resp.PrivatePEM = &plain + resp.Filenames = []string{fmt.Sprintf("id_rsa_%s.pem", key.ID.String())} + utils.WriteJSON(w, http.StatusOK, resp) + return + + case "both": + plain, err := utils.DecryptForOrg(orgID, key.EncryptedPrivateKey, key.PrivateIV, key.PrivateTag, db) + if err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to decrypt ssh key") + return + } + + var buf bytes.Buffer + zw := zip.NewWriter(&buf) + _ = toZipFile(fmt.Sprintf("id_rsa_%s.pem", key.ID.String()), []byte(plain), zw) + _ = toZipFile(fmt.Sprintf("id_rsa_%s.pub", key.ID.String()), []byte(key.PublicKey), zw) + _ = zw.Close() + + b64 := utils.EncodeB64(buf.Bytes()) + resp.ZipBase64 = &b64 + resp.Filenames = []string{ + fmt.Sprintf("id_rsa_%s.zip", key.ID.String()), + fmt.Sprintf("id_rsa_%s.pem", key.ID.String()), + fmt.Sprintf("id_rsa_%s.pub", key.ID.String()), + } + utils.WriteJSON(w, http.StatusOK, resp) + return + + default: + utils.WriteError(w, http.StatusBadRequest, "invalid_ssh_part", "invalid part (public|private|both)") + return + } + } + + prefix := keyFilenamePrefix(key.PublicKey) + + switch part { + case "public": + filename := fmt.Sprintf("%s_%s.pub", prefix, key.ID.String()) + w.Header().Set("Content-Type", "text/plain") + w.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, filename)) + _, _ = w.Write([]byte(key.PublicKey)) + return + + case "private": + plain, err := utils.DecryptForOrg(orgID, key.EncryptedPrivateKey, key.PrivateIV, key.PrivateTag, db) + if err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to decrypt ssh key") + return + } + filename := fmt.Sprintf("%s_%s.pem", prefix, key.ID.String()) + w.Header().Set("Content-Type", "application/x-pem-file") + w.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, filename)) + _, _ = w.Write([]byte(plain)) + return + + case "both": + plain, err := utils.DecryptForOrg(orgID, key.EncryptedPrivateKey, key.PrivateIV, key.PrivateTag, db) + if err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "failed to decrypt ssh key") + return + } + + var buf bytes.Buffer + zw := zip.NewWriter(&buf) + _ = toZipFile(fmt.Sprintf("%s_%s.pem", prefix, key.ID.String()), []byte(plain), zw) + _ = toZipFile(fmt.Sprintf("%s_%s.pub", prefix, key.ID.String()), []byte(key.PublicKey), zw) + _ = zw.Close() + + filename := fmt.Sprintf("ssh_key_%s.zip", key.ID.String()) + w.Header().Set("Content-Type", "application/zip") + w.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, filename)) + _, _ = w.Write(buf.Bytes()) + return + + default: + utils.WriteError(w, http.StatusBadRequest, "invalid_ssh_part", "invalid part (public|private|both)") + return + } + } +} + +// --- Helpers --- + +func allowedBits(b int) bool { + return b == 2048 || b == 3072 || b == 4096 +} + +func GenerateRSA(bits int) (*rsa.PrivateKey, error) { + return rsa.GenerateKey(rand.Reader, bits) +} + +func RSAPrivateToPEMAndAuthorized(priv *rsa.PrivateKey, comment string) (privPEM string, authorized string, err error) { + der := x509.MarshalPKCS1PrivateKey(priv) + block := &pem.Block{Type: "RSA PRIVATE KEY", Bytes: der} + var buf bytes.Buffer + if err = pem.Encode(&buf, block); err != nil { + return "", "", err + } + + pub, err := ssh.NewPublicKey(&priv.PublicKey) + if err != nil { + return "", "", err + } + auth := strings.TrimSpace(string(ssh.MarshalAuthorizedKey(pub))) + comment = strings.TrimSpace(comment) + if comment != "" { + auth += " " + comment + } + return buf.String(), auth, nil +} + +func GenerateRSAPEMAndAuthorized(bits int, comment string) (string, string, error) { + priv, err := GenerateRSA(bits) + if err != nil { + return "", "", err + } + return RSAPrivateToPEMAndAuthorized(priv, comment) +} + +func toZipFile(filename string, content []byte, zw *zip.Writer) error { + f, err := zw.Create(filename) + if err != nil { + return err + } + _, err = f.Write(content) + return err +} + +func keyFilenamePrefix(pubAuth string) string { + // OpenSSH authorized keys start with the algorithm name + if strings.HasPrefix(pubAuth, "ssh-ed25519 ") { + return "id_ed25519" + } + // default to RSA + return "id_rsa" +} + +func GenerateEd25519PEMAndAuthorized(comment string) (privPEM string, authorized string, err error) { + // Generate ed25519 keypair + pub, priv, err := ed25519.GenerateKey(rand.Reader) + if err != nil { + return "", "", err + } + + // Private: PKCS#8 PEM + der, err := x509.MarshalPKCS8PrivateKey(priv) + if err != nil { + return "", "", err + } + block := &pem.Block{Type: "PRIVATE KEY", Bytes: der} + var buf bytes.Buffer + if err := pem.Encode(&buf, block); err != nil { + return "", "", err + } + + // Public: OpenSSH authorized_key + sshPub, err := ssh.NewPublicKey(ed25519.PublicKey(pub)) + if err != nil { + return "", "", err + } + auth := strings.TrimSpace(string(ssh.MarshalAuthorizedKey(sshPub))) + comment = strings.TrimSpace(comment) + if comment != "" { + auth += " " + comment + } + + return buf.String(), auth, nil +} diff --git a/internal/handlers/taints.go b/internal/handlers/taints.go new file mode 100644 index 0000000..b2c5afa --- /dev/null +++ b/internal/handlers/taints.go @@ -0,0 +1,335 @@ +package handlers + +import ( + "encoding/json" + "errors" + "net/http" + "strings" + + "github.com/glueops/autoglue/internal/api/httpmiddleware" + "github.com/glueops/autoglue/internal/handlers/dto" + "github.com/glueops/autoglue/internal/models" + "github.com/glueops/autoglue/internal/utils" + "github.com/go-chi/chi/v5" + "github.com/google/uuid" + "gorm.io/gorm" +) + +// ListTaints godoc +// @ID ListTaints +// @Summary List node pool taints (org scoped) +// @Description Returns node taints for the organization in X-Org-ID. Filters: `key`, `value`, and `q` (key contains). Add `include=node_pools` to include linked node pools. +// @Tags Taints +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param key query string false "Exact key" +// @Param value query string false "Exact value" +// @Param q query string false "key contains (case-insensitive)" +// @Success 200 {array} dto.TaintResponse +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "failed to list node taints" +// @Router /taints [get] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func ListTaints(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + q := db.Where("organization_id = ?", orgID) + + if key := strings.TrimSpace(r.URL.Query().Get("key")); key != "" { + q = q.Where(`key = ?`, key) + } + if val := strings.TrimSpace(r.URL.Query().Get("value")); val != "" { + q = q.Where(`value = ?`, val) + } + if needle := strings.TrimSpace(r.URL.Query().Get("q")); needle != "" { + q = q.Where(`key ILIKE ?`, "%"+needle+"%") + } + + var rows []models.Taint + if err := q.Order("created_at DESC").Find(&rows).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error") + return + } + + out := make([]dto.TaintResponse, 0, len(rows)) + for _, row := range rows { + out = append(out, dto.TaintResponse{ + ID: row.ID, + Key: row.Key, + Value: row.Value, + Effect: row.Effect, + }) + } + utils.WriteJSON(w, http.StatusOK, out) + } +} + +// GetTaint godoc +// @ID GetTaint +// @Summary Get node taint by ID (org scoped) +// @Tags Taints +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param id path string true "Node Taint ID (UUID)" +// @Success 200 {object} dto.TaintResponse +// @Failure 400 {string} string "invalid id" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 404 {string} string "not found" +// @Failure 500 {string} string "fetch failed" +// @Router /taints/{id} [get] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func GetTaint(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "bad request") + return + } + + var row models.Taint + if err := db.Where("id = ? AND organization_id = ?", id, orgID).First(&row).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + utils.WriteError(w, http.StatusNotFound, "not_found", "not_found") + return + } + utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error") + return + } + out := dto.TaintResponse{ + ID: row.ID, + Key: row.Key, + Value: row.Value, + Effect: row.Effect, + } + utils.WriteJSON(w, http.StatusOK, out) + } +} + +// CreateTaint godoc +// @ID CreateTaint +// @Summary Create node taint (org scoped) +// @Description Creates a taint. +// @Tags Taints +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param body body dto.CreateTaintRequest true "Taint payload" +// @Success 201 {object} dto.TaintResponse +// @Failure 400 {string} string "invalid json / missing fields / invalid node_pool_ids" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "create failed" +// @Router /taints [post] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func CreateTaint(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + var req dto.CreateTaintRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "bad request") + return + } + + req.Key = strings.TrimSpace(req.Key) + req.Value = strings.TrimSpace(req.Value) + req.Effect = strings.TrimSpace(req.Effect) + + if req.Key == "" || req.Value == "" || req.Effect == "" { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "missing key/value/effect") + return + } + + if _, ok := allowedEffects[req.Effect]; !ok { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "invalid effect") + return + } + + t := models.Taint{ + OrganizationID: orgID, + Key: req.Key, + Value: req.Value, + Effect: req.Effect, + } + if err := db.Create(&t).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error") + return + } + + out := dto.TaintResponse{ + ID: t.ID, + Key: t.Key, + Value: t.Value, + Effect: t.Effect, + } + utils.WriteJSON(w, http.StatusCreated, out) + } +} + +// UpdateTaint godoc +// @ID UpdateTaint +// @Summary Update node taint (org scoped) +// @Description Partially update taint fields. +// @Tags Taints +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param id path string true "Node Taint ID (UUID)" +// @Param body body dto.UpdateTaintRequest true "Fields to update" +// @Success 200 {object} dto.TaintResponse +// @Failure 400 {string} string "invalid id / invalid json" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 404 {string} string "not found" +// @Failure 500 {string} string "update failed" +// @Router /taints/{id} [patch] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func UpdateTaint(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "bad request") + return + } + + var t models.Taint + if err := db.Where("id = ? AND organization_id = ?", id, orgID).First(&t).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + utils.WriteError(w, http.StatusNotFound, "not_found", "not_found") + return + } + utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error") + return + } + + var req dto.UpdateTaintRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "bad request") + return + } + + next := t + + if req.Key != nil { + next.Key = strings.TrimSpace(*req.Key) + } + if req.Value != nil { + next.Value = strings.TrimSpace(*req.Value) + } + if req.Effect != nil { + e := strings.TrimSpace(*req.Effect) + if e == "" { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "missing effect") + return + } + if _, ok := allowedEffects[e]; !ok { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "invalid effect") + return + } + next.Effect = e + } + + if err := db.Save(&next).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error") + return + } + + out := dto.TaintResponse{ + ID: next.ID, + Key: next.Key, + Value: next.Value, + Effect: next.Effect, + } + utils.WriteJSON(w, http.StatusOK, out) + } +} + +// DeleteTaint godoc +// @ID DeleteTaint +// @Summary Delete taint (org scoped) +// @Description Permanently deletes the taint. +// @Tags Taints +// @Accept json +// @Produce json +// @Param X-Org-ID header string false "Organization UUID" +// @Param id path string true "Node Taint ID (UUID)" +// @Success 204 {string} string "No Content" +// @Failure 400 {string} string "invalid id" +// @Failure 401 {string} string "Unauthorized" +// @Failure 403 {string} string "organization required" +// @Failure 500 {string} string "delete failed" +// @Router /taints/{id} [delete] +// @Security BearerAuth +// @Security OrgKeyAuth +// @Security OrgSecretAuth +func DeleteTaint(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + orgID, ok := httpmiddleware.OrgIDFrom(r.Context()) + if !ok { + utils.WriteError(w, http.StatusForbidden, "org_required", "specify X-Org-ID") + return + } + + id, err := uuid.Parse(chi.URLParam(r, "id")) + if err != nil { + utils.WriteError(w, http.StatusBadRequest, "bad_request", "bad request") + return + } + + var row models.Taint + if err := db.Where("id = ? AND organization_id = ?", id, orgID).First(&row).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + utils.WriteError(w, http.StatusNotFound, "not_found", "not_found") + return + } + utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error") + return + } + + if err := db.Delete(&row).Error; err != nil { + utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error") + return + } + w.WriteHeader(http.StatusNoContent) + } +} + +// --- Helpers --- +var allowedEffects = map[string]struct{}{ + "NoSchedule": {}, + "PreferNoSchedule": {}, + "NoExecute": {}, +} diff --git a/internal/keys/base64util.go b/internal/keys/base64util.go new file mode 100644 index 0000000..6dcfb1c --- /dev/null +++ b/internal/keys/base64util.go @@ -0,0 +1,35 @@ +package keys + +import ( + "encoding/base64" + "errors" + "strings" +) + +func decode32ByteKey(s string) ([]byte, error) { + try := func(enc *base64.Encoding, v string) ([]byte, bool) { + if b, err := enc.DecodeString(v); err == nil && len(b) == 32 { + return b, true + } + return nil, false + } + + // Try raw (no padding) variants first + if b, ok := try(base64.RawURLEncoding, s); ok { + return b, nil + } + if b, ok := try(base64.RawStdEncoding, s); ok { + return b, nil + } + + // Try padded variants (add padding if missing) + pad := func(v string) string { return v + strings.Repeat("=", (4-len(v)%4)%4) } + if b, ok := try(base64.URLEncoding, pad(s)); ok { + return b, nil + } + if b, ok := try(base64.StdEncoding, pad(s)); ok { + return b, nil + } + + return nil, errors.New("key must be 32 bytes in base64/base64url") +} diff --git a/internal/keys/export.go b/internal/keys/export.go new file mode 100644 index 0000000..216ae65 --- /dev/null +++ b/internal/keys/export.go @@ -0,0 +1,5 @@ +package keys + +func Decrypt(encKeyB64, enc string) ([]byte, error) { + return decryptAESGCM(encKeyB64, enc) +} diff --git a/internal/keys/keys.go b/internal/keys/keys.go new file mode 100644 index 0000000..0ae7502 --- /dev/null +++ b/internal/keys/keys.go @@ -0,0 +1,149 @@ +package keys + +import ( + "bytes" + "crypto/aes" + "crypto/cipher" + "crypto/ed25519" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/base64" + "encoding/pem" + "errors" + "fmt" + "time" + + "github.com/glueops/autoglue/internal/models" + "github.com/google/uuid" + "gorm.io/gorm" +) + +type GenOpts struct { + Alg string // "RS256"|"RS384"|"RS512"|"EdDSA" + Bits int // RSA bits (2048/3072/4096). ignored for EdDSA + KID string // optional; if empty we generate one + NBF *time.Time + EXP *time.Time +} + +func GenerateAndStore(db *gorm.DB, encKeyB64 string, opts GenOpts) (*models.SigningKey, error) { + if opts.KID == "" { + opts.KID = uuid.NewString() + } + + var pubPEM, privPEM []byte + var alg = opts.Alg + + switch alg { + case "RS256", "RS384", "RS512": + if opts.Bits == 0 { + opts.Bits = 3072 + } + priv, err := rsa.GenerateKey(rand.Reader, opts.Bits) + if err != nil { + return nil, err + } + privDER := x509.MarshalPKCS1PrivateKey(priv) + privPEM = pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: privDER}) + + pubDER := x509.MarshalPKCS1PublicKey(&priv.PublicKey) + pubPEM = pem.EncodeToMemory(&pem.Block{Type: "RSA PUBLIC KEY", Bytes: pubDER}) + + case "EdDSA": + pub, priv, err := ed25519.GenerateKey(rand.Reader) + if err != nil { + return nil, err + } + privDER, err := x509.MarshalPKCS8PrivateKey(priv) + if err != nil { + return nil, err + } + privPEM = pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: privDER}) + + pubDER, err := x509.MarshalPKIXPublicKey(pub) + if err != nil { + return nil, err + } + pubPEM = pem.EncodeToMemory(&pem.Block{Type: "PUBLIC KEY", Bytes: pubDER}) + + default: + return nil, fmt.Errorf("unsupported alg: %s", alg) + } + + privateOut := string(privPEM) + if encKeyB64 != "" { + enc, err := encryptAESGCM(encKeyB64, privPEM) + if err != nil { + return nil, err + } + privateOut = enc + } + + rec := models.SigningKey{ + Kid: opts.KID, + Alg: alg, + Use: "sig", + IsActive: true, + PublicPEM: string(pubPEM), + PrivatePEM: privateOut, + NotBefore: opts.NBF, + ExpiresAt: opts.EXP, + } + if err := db.Create(&rec).Error; err != nil { + return nil, err + } + return &rec, nil +} + +func encryptAESGCM(b64 string, plaintext []byte) (string, error) { + key, err := decode32ByteKey(b64) + if err != nil { + return "", err + } + if len(key) != 32 { + return "", errors.New("JWT_PRIVATE_ENC_KEY must be 32 bytes (base64url)") + } + block, err := aes.NewCipher(key) + if err != nil { + return "", err + } + aead, err := cipher.NewGCM(block) + if err != nil { + return "", err + } + nonce := make([]byte, aead.NonceSize()) + if _, err = rand.Read(nonce); err != nil { + return "", err + } + out := aead.Seal(nonce, nonce, plaintext, nil) + return "enc:aesgcm:" + base64.RawStdEncoding.EncodeToString(out), nil +} + +func decryptAESGCM(b64 string, enc string) ([]byte, error) { + if !bytes.HasPrefix([]byte(enc), []byte("enc:aesgcm:")) { + return nil, errors.New("not encrypted") + } + key, err := decode32ByteKey(b64) + if err != nil { + return nil, err + } + blob, err := base64.RawStdEncoding.DecodeString(enc[len("enc:aesgcm:"):]) + if err != nil { + return nil, err + } + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + aead, err := cipher.NewGCM(block) + if err != nil { + return nil, err + } + nonceSize := aead.NonceSize() + if len(blob) < nonceSize { + return nil, errors.New("ciphertext too short") + } + nonce, ct := blob[:nonceSize], blob[nonceSize:] + return aead.Open(nil, nonce, ct, nil) +} diff --git a/internal/models/account.go b/internal/models/account.go new file mode 100644 index 0000000..88ad2b5 --- /dev/null +++ b/internal/models/account.go @@ -0,0 +1,23 @@ +package models + +import ( + "time" + + "github.com/google/uuid" + "gorm.io/datatypes" +) + +type Account struct { + // example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id" format:"uuid"` + UserID uuid.UUID `gorm:"index;not null" json:"user_id" format:"uuid"` + User User `gorm:"foreignKey:UserID" json:"-"` + Provider string `gorm:"not null" json:"provider"` + Subject string `gorm:"not null" json:"subject"` + Email *string `json:"email,omitempty"` + EmailVerified bool `gorm:"not null;default:false" json:"email_verified"` + Profile datatypes.JSON `gorm:"type:jsonb;not null;default:'{}'" json:"profile"` + SecretHash *string `json:"-"` + CreatedAt time.Time `gorm:"type:timestamptz;column:created_at;not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"type:timestamptz;autoUpdateTime;column:updated_at;not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/api_key.go b/internal/models/api_key.go new file mode 100644 index 0000000..a260b1d --- /dev/null +++ b/internal/models/api_key.go @@ -0,0 +1,23 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type APIKey struct { + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id" format:"uuid"` + Name string `gorm:"not null;default:''" json:"name"` + KeyHash string `gorm:"uniqueIndex;not null" json:"-"` + Scope string `gorm:"not null;default:''" json:"scope"` + UserID *uuid.UUID `json:"user_id,omitempty" format:"uuid"` + OrgID *uuid.UUID `json:"org_id,omitempty" format:"uuid"` + SecretHash *string `json:"-"` + ExpiresAt *time.Time `json:"expires_at,omitempty" format:"date-time"` + Revoked bool `gorm:"not null;default:false" json:"revoked"` + Prefix *string `json:"prefix,omitempty"` + LastUsedAt *time.Time `json:"last_used_at,omitempty" format:"date-time"` + CreatedAt time.Time `gorm:"not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/master_key.go b/internal/models/master_key.go new file mode 100644 index 0000000..224bdec --- /dev/null +++ b/internal/models/master_key.go @@ -0,0 +1,15 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type MasterKey struct { + ID uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey" json:"id"` + Key string `gorm:"not null"` + IsActive bool `gorm:"default:true"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:now()" json:"created_at"` + UpdatedAt time.Time `gorm:"autoUpdateTime;column:updated_at;not null;default:now()" json:"updated_at"` +} diff --git a/internal/models/membership.go b/internal/models/membership.go new file mode 100644 index 0000000..3f19059 --- /dev/null +++ b/internal/models/membership.go @@ -0,0 +1,18 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type Membership struct { + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id" format:"uuid"` + UserID uuid.UUID `gorm:"index;not null" json:"user_id" format:"uuid"` + User User `gorm:"foreignKey:UserID" json:"-"` + OrganizationID uuid.UUID `gorm:"index;not null" json:"org_id" format:"uuid"` + Organization Organization `gorm:"foreignKey:OrganizationID;constraint:OnDelete:CASCADE" json:"-"` + Role string `gorm:"not null;default:'member'" json:"role"` + CreatedAt time.Time `gorm:"not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/node_pool.go b/internal/models/node_pool.go new file mode 100644 index 0000000..bd5a29d --- /dev/null +++ b/internal/models/node_pool.go @@ -0,0 +1,21 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type NodePool struct { + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id"` + OrganizationID uuid.UUID `gorm:"type:uuid;not null" json:"organization_id"` + Organization Organization `gorm:"foreignKey:OrganizationID;constraint:OnDelete:CASCADE" json:"organization"` + Name string `gorm:"not null" json:"name"` + Servers []Server `gorm:"many2many:node_servers;constraint:OnDelete:CASCADE" json:"servers,omitempty"` + //Annotations []Annotation `gorm:"many2many:node_annotations;constraint:OnDelete:CASCADE" json:"annotations,omitempty"` + //Labels []Label `gorm:"many2many:node_labels;constraint:OnDelete:CASCADE" json:"labels,omitempty"` + Taints []Taint `gorm:"many2many:node_taints;constraint:OnDelete:CASCADE" json:"taints,omitempty"` + //Clusters []Cluster `gorm:"many2many:cluster_node_pools;constraint:OnDelete:CASCADE" json:"clusters,omitempty"` + CreatedAt time.Time `gorm:"not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/organization-key.go b/internal/models/organization-key.go new file mode 100644 index 0000000..fc0eef5 --- /dev/null +++ b/internal/models/organization-key.go @@ -0,0 +1,20 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type OrganizationKey struct { + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()"` + OrganizationID uuid.UUID `gorm:"type:uuid;not null" json:"organization_id"` + Organization Organization `gorm:"foreignKey:OrganizationID;constraint:OnDelete:CASCADE" json:"organization"` + MasterKeyID uuid.UUID `gorm:"type:uuid;not null"` + MasterKey MasterKey `gorm:"foreignKey:MasterKeyID;constraint:OnDelete:CASCADE" json:"master_key"` + EncryptedKey string `gorm:"not null"` + IV string `gorm:"not null"` + Tag string `gorm:"not null"` + CreatedAt time.Time `gorm:"not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/organization.go b/internal/models/organization.go new file mode 100644 index 0000000..d3f5ab9 --- /dev/null +++ b/internal/models/organization.go @@ -0,0 +1,16 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type Organization struct { + // example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id" format:"uuid"` + Name string `gorm:"not null" json:"name"` + Domain *string `gorm:"index" json:"domain"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"autoUpdateTime;column:updated_at;not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/refresh_token.go b/internal/models/refresh_token.go new file mode 100644 index 0000000..ff0b8a3 --- /dev/null +++ b/internal/models/refresh_token.go @@ -0,0 +1,17 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type RefreshToken struct { + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id"` + UserID uuid.UUID `gorm:"index;not null" json:"user_id"` + FamilyID uuid.UUID `gorm:"type:uuid;index;not null" json:"family_id"` + TokenHash string `gorm:"uniqueIndex;not null" json:"-"` + ExpiresAt time.Time `gorm:"not null" json:"expires_at"` + RevokedAt *time.Time `json:"revoked_at"` + CreatedAt time.Time `gorm:"not null;default:now()" json:"created_at"` +} diff --git a/internal/models/server.go b/internal/models/server.go new file mode 100644 index 0000000..ce5c3fd --- /dev/null +++ b/internal/models/server.go @@ -0,0 +1,36 @@ +package models + +import ( + "errors" + "strings" + "time" + + "github.com/google/uuid" + "gorm.io/gorm" +) + +type Server struct { + ID uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey" json:"id"` + OrganizationID uuid.UUID `gorm:"type:uuid;not null" json:"organization_id"` + Organization Organization `gorm:"foreignKey:OrganizationID;constraint:OnDelete:CASCADE" json:"organization"` + Hostname string `json:"hostname"` + PublicIPAddress *string `json:"public_ip_address,omitempty"` + PrivateIPAddress string `gorm:"not null" json:"private_ip_address"` + SSHUser string `gorm:"not null" json:"ssh_user"` + SshKeyID uuid.UUID `gorm:"type:uuid;not null" json:"ssh_key_id"` + SshKey SshKey `gorm:"foreignKey:SshKeyID" json:"ssh_key"` + Role string `gorm:"not null" json:"role"` // e.g., "master", "worker", "bastion" + Status string `gorm:"default:'pending'" json:"status"` // pending, provisioning, ready, failed + CreatedAt time.Time `gorm:"not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"not null;default:now()" json:"updated_at" format:"date-time"` +} + +func (s *Server) BeforeSave(tx *gorm.DB) error { + role := strings.ToLower(strings.TrimSpace(s.Role)) + if role == "bastion" { + if s.PublicIPAddress == nil || strings.TrimSpace(*s.PublicIPAddress) == "" { + return errors.New("public_ip_address is required for role=bastion") + } + } + return nil +} diff --git a/internal/models/signing_key.go b/internal/models/signing_key.go new file mode 100644 index 0000000..51258f3 --- /dev/null +++ b/internal/models/signing_key.go @@ -0,0 +1,22 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type SigningKey struct { + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id"` + Kid string `gorm:"uniqueIndex;not null" json:"kid"` // key id (header 'kid') + Alg string `gorm:"not null" json:"alg"` // RS256|RS384|RS512|EdDSA + Use string `gorm:"not null;default:'sig'" json:"use"` // "sig" + IsActive bool `gorm:"not null;default:true" json:"is_active"` + PublicPEM string `gorm:"type:text;not null" json:"-"` + PrivatePEM string `gorm:"type:text;not null" json:"-"` + NotBefore *time.Time `json:"-"` + ExpiresAt *time.Time `json:"-"` + CreatedAt time.Time `gorm:"not null;default:now()" json:"created_at"` + UpdatedAt time.Time `gorm:"not null;default:now()" json:"updated_at"` + RotatedFrom *uuid.UUID `json:"-"` // previous key id, if any +} diff --git a/internal/models/ssh-key.go b/internal/models/ssh-key.go new file mode 100644 index 0000000..1119b0c --- /dev/null +++ b/internal/models/ssh-key.go @@ -0,0 +1,21 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type SshKey struct { + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()"` + OrganizationID uuid.UUID `gorm:"type:uuid;not null" json:"organization_id"` + Organization Organization `gorm:"foreignKey:OrganizationID;constraint:OnDelete:CASCADE" json:"organization"` + Name string `gorm:"not null" json:"name"` + PublicKey string `gorm:"not null"` + EncryptedPrivateKey string `gorm:"not null"` + PrivateIV string `gorm:"not null"` + PrivateTag string `gorm:"not null"` + Fingerprint string `gorm:"not null;index" json:"fingerprint"` + CreatedAt time.Time `gorm:"not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/taint.go b/internal/models/taint.go new file mode 100644 index 0000000..38a0869 --- /dev/null +++ b/internal/models/taint.go @@ -0,0 +1,18 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type Taint struct { + ID uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey" json:"id"` + OrganizationID uuid.UUID `gorm:"type:uuid;not null" json:"organization_id"` + Organization Organization `gorm:"foreignKey:OrganizationID;constraint:OnDelete:CASCADE" json:"organization"` + Key string `gorm:"not null" json:"key"` + Value string `gorm:"not null" json:"value"` + Effect string `gorm:"not null" json:"effect"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"autoUpdateTime;column:updated_at;not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/user.go b/internal/models/user.go new file mode 100644 index 0000000..8273cc5 --- /dev/null +++ b/internal/models/user.go @@ -0,0 +1,18 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type User struct { + // example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id" format:"uuid"` + DisplayName *string `json:"display_name,omitempty"` + PrimaryEmail *string `json:"primary_email,omitempty"` + AvatarURL *string `json:"avatar_url,omitempty"` + IsDisabled bool `json:"is_disabled"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"autoUpdateTime;column:updated_at;not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/models/user_email.go b/internal/models/user_email.go new file mode 100644 index 0000000..9daf316 --- /dev/null +++ b/internal/models/user_email.go @@ -0,0 +1,19 @@ +package models + +import ( + "time" + + "github.com/google/uuid" +) + +type UserEmail struct { + // example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + ID uuid.UUID `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id" format:"uuid"` + UserID uuid.UUID `gorm:"index;not null" json:"user_id" format:"uuid"` + User User `gorm:"foreignKey:UserID" json:"user"` + Email string `gorm:"not null" json:"email"` + IsVerified bool `gorm:"not null;default:false" json:"is_verified"` + IsPrimary bool `gorm:"not null;default:false" json:"is_primary"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:now()" json:"created_at" format:"date-time"` + UpdatedAt time.Time `gorm:"autoUpdateTime;column:updated_at;not null;default:now()" json:"updated_at" format:"date-time"` +} diff --git a/internal/utils/crypto.go b/internal/utils/crypto.go new file mode 100644 index 0000000..3207b36 --- /dev/null +++ b/internal/utils/crypto.go @@ -0,0 +1,85 @@ +package utils + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/rand" + "encoding/base64" + "errors" + "fmt" + "io" +) + +var ( + ErrNoActiveMasterKey = errors.New("no active master key found") + ErrInvalidOrgID = errors.New("invalid organization ID") + ErrCredentialNotFound = errors.New("credential not found") + ErrInvalidMasterKeyLen = errors.New("invalid master key length") +) + +func randomBytes(n int) ([]byte, error) { + b := make([]byte, n) + if _, err := io.ReadFull(rand.Reader, b); err != nil { + return nil, fmt.Errorf("rand: %w", err) + } + return b, nil +} + +func encryptAESGCM(plaintext, key []byte) (cipherNoTag, iv, tag []byte, _ error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, nil, nil, fmt.Errorf("cipher: %w", err) + } + + gcm, err := cipher.NewGCM(block) + if err != nil { + return nil, nil, nil, fmt.Errorf("gcm: %w", err) + } + if gcm.NonceSize() != 12 { + return nil, nil, nil, fmt.Errorf("unexpected nonce size: %d", gcm.NonceSize()) + } + + iv, err = randomBytes(gcm.NonceSize()) + if err != nil { + return nil, nil, nil, err + } + + // Go’s GCM returns ciphertext||tag, with 16-byte tag. + cipherWithTag := gcm.Seal(nil, iv, plaintext, nil) + if len(cipherWithTag) < 16 { + return nil, nil, nil, errors.New("ciphertext too short") + } + tagLen := 16 + cipherNoTag = cipherWithTag[:len(cipherWithTag)-tagLen] + tag = cipherWithTag[len(cipherWithTag)-tagLen:] + return cipherNoTag, iv, tag, nil +} + +func decryptAESGCM(cipherNoTag, key, iv, tag []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, fmt.Errorf("cipher: %w", err) + } + gcm, err := cipher.NewGCM(block) + if err != nil { + return nil, fmt.Errorf("gcm: %w", err) + } + if gcm.NonceSize() != len(iv) { + return nil, fmt.Errorf("bad nonce size: %d", len(iv)) + } + // Reattach tag + cipherWithTag := append(append([]byte{}, cipherNoTag...), tag...) + plain, err := gcm.Open(nil, iv, cipherWithTag, nil) + if err != nil { + return nil, fmt.Errorf("gcm open: %w", err) + } + return plain, nil +} + +func EncodeB64(b []byte) string { + return base64.StdEncoding.EncodeToString(b) +} + +func DecodeB64(s string) ([]byte, error) { + return base64.StdEncoding.DecodeString(s) +} diff --git a/internal/utils/helpers.go b/internal/utils/helpers.go new file mode 100644 index 0000000..cc3121c --- /dev/null +++ b/internal/utils/helpers.go @@ -0,0 +1,27 @@ +package utils + +import ( + "encoding/json" + "net/http" +) + +// ErrorResponse is a simple, reusable error payload. +// swagger:model ErrorResponse +type ErrorResponse struct { + // A machine-readable error code, e.g. "validation_error" + // example: validation_error + Code string `json:"code"` + // Human-readable message + // example: slug is required + Message string `json:"message"` +} + +func WriteJSON(w http.ResponseWriter, status int, v any) { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(status) + _ = json.NewEncoder(w).Encode(v) +} + +func WriteError(w http.ResponseWriter, status int, code, msg string) { + WriteJSON(w, status, ErrorResponse{Code: code, Message: msg}) +} diff --git a/internal/utils/keys.go b/internal/utils/keys.go new file mode 100644 index 0000000..b8a7202 --- /dev/null +++ b/internal/utils/keys.go @@ -0,0 +1,107 @@ +package utils + +import ( + "encoding/base64" + "errors" + "fmt" + + "github.com/glueops/autoglue/internal/models" + "github.com/google/uuid" + "gorm.io/gorm" +) + +func getMasterKey(db *gorm.DB) ([]byte, error) { + var mk models.MasterKey + if err := db.Where("is_active = ?", true).Order("created_at DESC").First(&mk).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, ErrNoActiveMasterKey + } + return nil, fmt.Errorf("querying master key: %w", err) + } + + keyBytes, err := base64.StdEncoding.DecodeString(mk.Key) + if err != nil { + return nil, fmt.Errorf("decoding master key: %w", err) + } + if len(keyBytes) != 32 { + return nil, fmt.Errorf("%w: got %d, want 32", ErrInvalidMasterKeyLen, len(keyBytes)) + } + return keyBytes, nil +} + +func getOrCreateTenantKey(orgID string, db *gorm.DB) ([]byte, error) { + var orgKey models.OrganizationKey + err := db.Where("organization_id = ?", orgID).First(&orgKey).Error + if err == nil { + encKeyB64 := orgKey.EncryptedKey + ivB64 := orgKey.IV + tagB64 := orgKey.Tag + + encryptedKey, err := DecodeB64(encKeyB64) + if err != nil { + return nil, fmt.Errorf("decode enc key: %w", err) + } + + iv, err := DecodeB64(ivB64) + if err != nil { + return nil, fmt.Errorf("decode iv: %w", err) + } + + tag, err := DecodeB64(tagB64) + if err != nil { + return nil, fmt.Errorf("decode tag: %w", err) + } + + masterKey, err := getMasterKey(db) + if err != nil { + return nil, err + } + + return decryptAESGCM(encryptedKey, masterKey, iv, tag) + } + + if !errors.Is(err, gorm.ErrRecordNotFound) { + return nil, err + } + + // Create new tenant key and wrap with the current master key + orgUUID, err := uuid.Parse(orgID) + if err != nil { + return nil, fmt.Errorf("%w: %v", ErrInvalidOrgID, err) + } + + tenantKey, err := randomBytes(32) + if err != nil { + return nil, fmt.Errorf("tenant key gen: %w", err) + } + + masterKey, err := getMasterKey(db) + if err != nil { + return nil, err + } + + encrypted, iv, tag, err := encryptAESGCM(tenantKey, masterKey) + if err != nil { + return nil, fmt.Errorf("wrap tenant key: %w", err) + } + + var mk models.MasterKey + if err := db.Where("is_active = ?", true).Order("created_at DESC").First(&mk).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, ErrNoActiveMasterKey + } + return nil, fmt.Errorf("querying master key: %w", err) + } + + orgKey = models.OrganizationKey{ + OrganizationID: orgUUID, + MasterKeyID: mk.ID, + EncryptedKey: EncodeB64(encrypted), + IV: EncodeB64(iv), + Tag: EncodeB64(tag), + } + if err := db.Create(&orgKey).Error; err != nil { + return nil, fmt.Errorf("persist org key: %w", err) + } + return tenantKey, nil +} diff --git a/internal/utils/org-crypto.go b/internal/utils/org-crypto.go new file mode 100644 index 0000000..de8d2ab --- /dev/null +++ b/internal/utils/org-crypto.go @@ -0,0 +1,44 @@ +package utils + +import ( + "fmt" + + "github.com/google/uuid" + "gorm.io/gorm" +) + +func EncryptForOrg(orgID uuid.UUID, plaintext []byte, db *gorm.DB) (cipherB64, ivB64, tagB64 string, err error) { + tenantKey, err := getOrCreateTenantKey(orgID.String(), db) + if err != nil { + return "", "", "", err + } + ct, iv, tag, err := encryptAESGCM(plaintext, tenantKey) + if err != nil { + return "", "", "", err + } + return EncodeB64(ct), EncodeB64(iv), EncodeB64(tag), nil +} + +func DecryptForOrg(orgID uuid.UUID, cipherB64, ivB64, tagB64 string, db *gorm.DB) (string, error) { + tenantKey, err := getOrCreateTenantKey(orgID.String(), db) + if err != nil { + return "", err + } + ct, err := DecodeB64(cipherB64) + if err != nil { + return "", fmt.Errorf("decode cipher: %w", err) + } + iv, err := DecodeB64(ivB64) + if err != nil { + return "", fmt.Errorf("decode iv: %w", err) + } + tag, err := DecodeB64(tagB64) + if err != nil { + return "", fmt.Errorf("decode tag: %w", err) + } + plain, err := decryptAESGCM(ct, tenantKey, iv, tag) + if err != nil { + return "", err + } + return string(plain), nil +} diff --git a/internal/version/version.go b/internal/version/version.go new file mode 100644 index 0000000..dad3901 --- /dev/null +++ b/internal/version/version.go @@ -0,0 +1,36 @@ +package version + +import ( + "fmt" + "runtime" + "runtime/debug" +) + +var ( + Version = "dev" + Commit = "none" + Date = "unknown" + BuiltBy = "local" +) + +func Info() string { + v := fmt.Sprintf("Version: %s\nCommit: %s\nBuilt: %s\nBuiltBy: %s\nGo: %s %s/%s", + Version, Commit, Date, BuiltBy, runtime.Version(), runtime.GOOS, runtime.GOARCH) + + // Include VCS info from embedded build metadata (if available) + if bi, ok := debug.ReadBuildInfo(); ok { + for _, s := range bi.Settings { + switch s.Key { + case "vcs": + v += fmt.Sprintf("\nVCS: %s", s.Value) + case "vcs.revision": + v += fmt.Sprintf("\nRevision: %s", s.Value) + case "vcs.time": + v += fmt.Sprintf("\nCommitTime: %s", s.Value) + case "vcs.modified": + v += fmt.Sprintf("\nModified: %s", s.Value) + } + } + } + return v +} diff --git a/internal/web/devproxy.go b/internal/web/devproxy.go new file mode 100644 index 0000000..4ed87bd --- /dev/null +++ b/internal/web/devproxy.go @@ -0,0 +1,16 @@ +package web + +import ( + "net/http" + "net/http/httputil" + "net/url" +) + +func DevProxy(target string) (http.Handler, error) { + u, err := url.Parse(target) + if err != nil { + return nil, err + } + p := httputil.NewSingleHostReverseProxy(u) + return p, nil +} diff --git a/internal/web/dist/assets/index-BvUUUOIq.css b/internal/web/dist/assets/index-BvUUUOIq.css new file mode 100644 index 0000000..c1ca743 --- /dev/null +++ b/internal/web/dist/assets/index-BvUUUOIq.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.absolute{position:absolute}.relative{position:relative}.static{position:static}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.mx-auto{margin-inline:auto}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.w-full{width:100%}.max-w-md{max-width:var(--container-md)}.shrink-0{flex-shrink:0}.animate-spin{animation:var(--animate-spin)}.auto-rows-min{grid-auto-rows:min-content}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-background{background-color:var(--background)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.p-4{padding:calc(var(--spacing)*4)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-2{padding-block:calc(var(--spacing)*2)}.py-6{padding-block:calc(var(--spacing)*6)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-card-foreground{color:var(--card-foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.underline-offset-4{text-underline-offset:4px}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}@media (min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:#fff;--foreground:#09090b;--card:#fff;--card-foreground:#09090b;--popover:#fff;--popover-foreground:#09090b;--primary:#18181b;--primary-foreground:#fafafa;--secondary:#f4f4f5;--secondary-foreground:#18181b;--muted:#f4f4f5;--muted-foreground:#71717b;--accent:#f4f4f5;--accent-foreground:#18181b;--destructive:#e40014;--border:#e4e4e7;--input:#e4e4e7;--ring:#9f9fa9;--chart-1:#f05100;--chart-2:#009588;--chart-3:#104e64;--chart-4:#fcbb00;--chart-5:#f99c00;--sidebar:#fafafa;--sidebar-foreground:#09090b;--sidebar-primary:#18181b;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#f4f4f5;--sidebar-accent-foreground:#18181b;--sidebar-border:#e4e4e7;--sidebar-ring:#9f9fa9}@supports (color:lab(0% 0 0)){:root{--background:lab(100% 0 0);--foreground:lab(2.51107% .242703 -.886115);--card:lab(100% 0 0);--card-foreground:lab(2.51107% .242703 -.886115);--popover:lab(100% 0 0);--popover-foreground:lab(2.51107% .242703 -.886115);--primary:lab(8.30603% .618205 -2.16572);--primary-foreground:lab(98.26% 0 0);--secondary:lab(96.1634% .0993311 -.364041);--secondary-foreground:lab(8.30603% .618205 -2.16572);--muted:lab(96.1634% .0993311 -.364041);--muted-foreground:lab(47.8878% 1.65477 -5.77283);--accent:lab(96.1634% .0993311 -.364041);--accent-foreground:lab(8.30603% .618205 -2.16572);--destructive:lab(48.4493% 77.4328 61.5452);--border:lab(90.6853% .399232 -1.45452);--input:lab(90.6853% .399232 -1.45452);--ring:lab(65.6464% 1.53497 -5.42429);--chart-1:lab(57.1026% 64.2584 89.8886);--chart-2:lab(55.0223% -41.0774 -3.90277);--chart-3:lab(30.372% -13.1853 -18.7887);--chart-4:lab(80.1641% 16.6016 99.2089);--chart-5:lab(72.7183% 31.8672 97.9407);--sidebar:lab(98.26% 0 0);--sidebar-foreground:lab(2.51107% .242703 -.886115);--sidebar-primary:lab(8.30603% .618205 -2.16572);--sidebar-primary-foreground:lab(98.26% 0 0);--sidebar-accent:lab(96.1634% .0993311 -.364041);--sidebar-accent-foreground:lab(8.30603% .618205 -2.16572);--sidebar-border:lab(90.6853% .399232 -1.45452);--sidebar-ring:lab(65.6464% 1.53497 -5.42429)}}.dark{--background:#09090b;--foreground:#fafafa;--card:#18181b;--card-foreground:#fafafa;--popover:#18181b;--popover-foreground:#fafafa;--primary:#e4e4e7;--primary-foreground:#18181b;--secondary:#27272a;--secondary-foreground:#fafafa;--muted:#27272a;--muted-foreground:#9f9fa9;--accent:#27272a;--accent-foreground:#fafafa;--destructive:#ff6568;--border:#ffffff1a;--input:#ffffff26;--ring:#71717b;--chart-1:#1447e6;--chart-2:#00bb7f;--chart-3:#f99c00;--chart-4:#ac4bff;--chart-5:#ff2357;--sidebar:#18181b;--sidebar-foreground:#fafafa;--sidebar-primary:#1447e6;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#27272a;--sidebar-accent-foreground:#fafafa;--sidebar-border:#ffffff1a;--sidebar-ring:#71717b}@supports (color:lab(0% 0 0)){.dark{--background:lab(2.51107% .242703 -.886115);--foreground:lab(98.26% 0 0);--card:lab(8.30603% .618205 -2.16572);--card-foreground:lab(98.26% 0 0);--popover:lab(8.30603% .618205 -2.16572);--popover-foreground:lab(98.26% 0 0);--primary:lab(90.6853% .399232 -1.45452);--primary-foreground:lab(8.30603% .618205 -2.16572);--secondary:lab(15.7305% .613764 -2.16959);--secondary-foreground:lab(98.26% 0 0);--muted:lab(15.7305% .613764 -2.16959);--muted-foreground:lab(65.6464% 1.53497 -5.42429);--accent:lab(15.7305% .613764 -2.16959);--accent-foreground:lab(98.26% 0 0);--destructive:lab(63.7053% 60.745 31.3109);--border:lab(100% 0 0/.1);--input:lab(100% 0 0/.15);--ring:lab(47.8878% 1.65477 -5.77283);--chart-1:lab(36.9089% 35.0961 -85.6872);--chart-2:lab(66.9756% -58.27 19.5419);--chart-3:lab(72.7183% 31.8672 97.9407);--chart-4:lab(52.0183% 66.11 -78.2316);--chart-5:lab(56.101% 79.4328 31.4532);--sidebar:lab(8.30603% .618205 -2.16572);--sidebar-foreground:lab(98.26% 0 0);--sidebar-primary:lab(36.9089% 35.0961 -85.6872);--sidebar-primary-foreground:lab(98.26% 0 0);--sidebar-accent:lab(15.7305% .613764 -2.16959);--sidebar-accent-foreground:lab(98.26% 0 0);--sidebar-border:lab(100% 0 0/.1);--sidebar-ring:lab(47.8878% 1.65477 -5.77283)}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/internal/web/dist/assets/index-BvUUUOIq.css.br b/internal/web/dist/assets/index-BvUUUOIq.css.br new file mode 100644 index 0000000000000000000000000000000000000000..46489adf0e41e4cad3ebec774ee3b8553b81207e GIT binary patch literal 4169 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 literal 0 HcmV?d00001 diff --git a/internal/web/dist/assets/index-BvUUUOIq.css.gz b/internal/web/dist/assets/index-BvUUUOIq.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0a33b3a6a5f4c27a2de9007aeb340914b37b2490 GIT binary patch literal 4798 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 YRdvDtn<3eQPyEyW17QtiqkvEV0PinTzyJUM literal 0 HcmV?d00001 diff --git a/internal/web/dist/assets/index-CFwByDWI.js b/internal/web/dist/assets/index-CFwByDWI.js new file mode 100644 index 0000000..2bd46c6 --- /dev/null +++ b/internal/web/dist/assets/index-CFwByDWI.js @@ -0,0 +1,10 @@ +import{r as py,a as by,b as W,R as _,c as Sy,u as xy,d as zy,e as Ey,f as mh,B as Ty}from"./react-BZmgNp9X.js";(function(){const c=document.createElement("link").relList;if(c&&c.supports&&c.supports("modulepreload"))return;for(const y of document.querySelectorAll('link[rel="modulepreload"]'))r(y);new MutationObserver(y=>{for(const v of y)if(v.type==="childList")for(const T of v.addedNodes)T.tagName==="LINK"&&T.rel==="modulepreload"&&r(T)}).observe(document,{childList:!0,subtree:!0});function o(y){const v={};return y.integrity&&(v.integrity=y.integrity),y.referrerPolicy&&(v.referrerPolicy=y.referrerPolicy),y.crossOrigin==="use-credentials"?v.credentials="include":y.crossOrigin==="anonymous"?v.credentials="omit":v.credentials="same-origin",v}function r(y){if(y.ep)return;y.ep=!0;const v=o(y);fetch(y.href,v)}})();var Pc={exports:{}},di={};var yh;function Ay(){if(yh)return di;yh=1;var u=Symbol.for("react.transitional.element"),c=Symbol.for("react.fragment");function o(r,y,v){var T=null;if(v!==void 0&&(T=""+v),y.key!==void 0&&(T=""+y.key),"key"in y){v={};for(var E in y)E!=="key"&&(v[E]=y[E])}else v=y;return y=v.ref,{$$typeof:u,type:r,key:T,ref:y!==void 0?y:null,props:v}}return di.Fragment=c,di.jsx=o,di.jsxs=o,di}var vh;function My(){return vh||(vh=1,Pc.exports=Ay()),Pc.exports}var I=My(),to={exports:{}},hi={},eo={exports:{}},ao={};var gh;function Oy(){return gh||(gh=1,(function(u){function c(S,N){var D=S.length;S.push(N);t:for(;0>>1,et=S[ct];if(0>>1;cty(U,D))Zy(nt,U)?(S[ct]=nt,S[Z]=D,ct=Z):(S[ct]=U,S[dt]=D,ct=dt);else if(Zy(nt,D))S[ct]=nt,S[Z]=D,ct=Z;else break t}}return N}function y(S,N){var D=S.sortIndex-N.sortIndex;return D!==0?D:S.id-N.id}if(u.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var v=performance;u.unstable_now=function(){return v.now()}}else{var T=Date,E=T.now();u.unstable_now=function(){return T.now()-E}}var O=[],C=[],H=1,h=null,R=3,K=!1,B=!1,L=!1,P=!1,X=typeof setTimeout=="function"?setTimeout:null,St=typeof clearTimeout=="function"?clearTimeout:null,st=typeof setImmediate<"u"?setImmediate:null;function Tt(S){for(var N=o(C);N!==null;){if(N.callback===null)r(C);else if(N.startTime<=S)r(C),N.sortIndex=N.expirationTime,c(O,N);else break;N=o(C)}}function at(S){if(L=!1,Tt(S),!B)if(o(O)!==null)B=!0,k||(k=!0,Dt());else{var N=o(C);N!==null&&Bt(at,N.startTime-S)}}var k=!1,At=-1,q=5,Ot=-1;function ue(){return P?!0:!(u.unstable_now()-OtS&&ue());){var ct=h.callback;if(typeof ct=="function"){h.callback=null,R=h.priorityLevel;var et=ct(h.expirationTime<=S);if(S=u.unstable_now(),typeof et=="function"){h.callback=et,Tt(S),N=!0;break e}h===o(O)&&r(O),Tt(S)}else r(O);h=o(O)}if(h!==null)N=!0;else{var wt=o(C);wt!==null&&Bt(at,wt.startTime-S),N=!1}}break t}finally{h=null,R=D,K=!1}N=void 0}}finally{N?Dt():k=!1}}}var Dt;if(typeof st=="function")Dt=function(){st(Gt)};else if(typeof MessageChannel<"u"){var kt=new MessageChannel,he=kt.port2;kt.port1.onmessage=Gt,Dt=function(){he.postMessage(null)}}else Dt=function(){X(Gt,0)};function Bt(S,N){At=X(function(){S(u.unstable_now())},N)}u.unstable_IdlePriority=5,u.unstable_ImmediatePriority=1,u.unstable_LowPriority=4,u.unstable_NormalPriority=3,u.unstable_Profiling=null,u.unstable_UserBlockingPriority=2,u.unstable_cancelCallback=function(S){S.callback=null},u.unstable_forceFrameRate=function(S){0>S||125ct?(S.sortIndex=D,c(C,S),o(O)===null&&S===o(C)&&(L?(St(At),At=-1):L=!0,Bt(at,D-ct))):(S.sortIndex=et,c(O,S),B||K||(B=!0,k||(k=!0,Dt()))),S},u.unstable_shouldYield=ue,u.unstable_wrapCallback=function(S){var N=R;return function(){var D=R;R=N;try{return S.apply(this,arguments)}finally{R=D}}}})(ao)),ao}var ph;function wy(){return ph||(ph=1,eo.exports=Oy()),eo.exports}var bh;function Dy(){if(bh)return hi;bh=1;var u=wy(),c=py(),o=by();function r(t){var e="https://react.dev/errors/"+t;if(1et||(t.current=ct[et],ct[et]=null,et--)}function U(t,e){et++,ct[et]=t.current,t.current=e}var Z=wt(null),nt=wt(null),_t=wt(null),gt=wt(null);function ht(t,e){switch(U(_t,e),U(nt,t),U(Z,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?qd(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=qd(e),t=jd(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}dt(Z),U(Z,t)}function Ft(){dt(Z),dt(nt),dt(_t)}function Ae(t){t.memoizedState!==null&&U(gt,t);var e=Z.current,a=jd(e,t.type);e!==a&&(U(nt,t),U(Z,a))}function Me(t){nt.current===t&&(dt(Z),dt(nt)),gt.current===t&&(dt(gt),ci._currentValue=D)}var se,pi;function Ze(t){if(se===void 0)try{throw Error()}catch(a){var e=a.stack.trim().match(/\n( *(at )?)/);se=e&&e[1]||"",pi=-1)":-1n||d[l]!==b[n]){var A=` +`+d[l].replace(" at new "," at ");return t.displayName&&A.includes("")&&(A=A.replace("",t.displayName)),A}while(1<=l&&0<=n);break}}}finally{gn=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?Ze(a):""}function tl(t,e){switch(t.tag){case 26:case 27:case 5:return Ze(t.type);case 16:return Ze("Lazy");case 13:return t.child!==e&&e!==null?Ze("Suspense Fallback"):Ze("Suspense");case 19:return Ze("SuspenseList");case 0:case 15:return Al(t.type,!1);case 11:return Al(t.type.render,!1);case 1:return Al(t.type,!0);case 31:return Ze("Activity");default:return""}}function pn(t){try{var e="",a=null;do e+=tl(t,a),a=t,t=t.return;while(t);return e}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var Oe=Object.prototype.hasOwnProperty,bn=u.unstable_scheduleCallback,Sn=u.unstable_cancelCallback,ce=u.unstable_shouldYield,Ma=u.unstable_requestPaint,oe=u.unstable_now,Gu=u.unstable_getCurrentPriorityLevel,el=u.unstable_ImmediatePriority,bi=u.unstable_UserBlockingPriority,al=u.unstable_NormalPriority,xn=u.unstable_LowPriority,ua=u.unstable_IdlePriority,Si=u.log,Oa=u.unstable_setDisableYieldValue,ll=null,re=null;function Ke(t){if(typeof Si=="function"&&Oa(t),re&&typeof re.setStrictMode=="function")try{re.setStrictMode(ll,t)}catch{}}var ne=Math.clz32?Math.clz32:Ie,Xu=Math.log,zn=Math.LN2;function Ie(t){return t>>>=0,t===0?32:31-(Xu(t)/zn|0)|0}var Ml=256,Ol=262144,nl=4194304;function Pe(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function F(t,e,a){var l=t.pendingLanes;if(l===0)return 0;var n=0,i=t.suspendedLanes,s=t.pingedLanes;t=t.warmLanes;var f=l&134217727;return f!==0?(l=f&~i,l!==0?n=Pe(l):(s&=f,s!==0?n=Pe(s):a||(a=f&~t,a!==0&&(n=Pe(a))))):(f=l&~i,f!==0?n=Pe(f):s!==0?n=Pe(s):a||(a=l&~t,a!==0&&(n=Pe(a)))),n===0?0:e!==0&&e!==n&&(e&i)===0&&(i=n&-n,a=e&-e,i>=a||i===32&&(a&4194048)!==0)?e:n}function Ut(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function Wt(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ie(){var t=nl;return nl<<=1,(nl&62914560)===0&&(nl=4194304),t}function wa(t){for(var e=[],a=0;31>a;a++)e.push(t);return e}function Ht(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function me(t,e,a,l,n,i){var s=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var f=t.entanglements,d=t.expirationTimes,b=t.hiddenUpdates;for(a=s&~a;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var dm=/[\n"\\]/g;function Be(t){return t.replace(dm,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function Ju(t,e,a,l,n,i,s,f){t.name="",s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?t.type=s:t.removeAttribute("type"),e!=null?s==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+He(e)):t.value!==""+He(e)&&(t.value=""+He(e)):s!=="submit"&&s!=="reset"||t.removeAttribute("value"),e!=null?ku(t,s,He(e)):a!=null?ku(t,s,He(a)):l!=null&&t.removeAttribute("value"),n==null&&i!=null&&(t.defaultChecked=!!i),n!=null&&(t.checked=n&&typeof n!="function"&&typeof n!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?t.name=""+He(f):t.removeAttribute("name")}function Co(t,e,a,l,n,i,s,f){if(i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(t.type=i),e!=null||a!=null){if(!(i!=="submit"&&i!=="reset"||e!=null)){Ku(t);return}a=a!=null?""+He(a):"",e=e!=null?""+He(e):a,f||e===t.value||(t.value=e),t.defaultValue=e}l=l??n,l=typeof l!="function"&&typeof l!="symbol"&&!!l,t.checked=f?t.checked:!!l,t.defaultChecked=!!l,s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(t.name=s),Ku(t)}function ku(t,e,a){e==="number"&&Ei(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function Rl(t,e,a,l){if(t=t.options,e){e={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Pu=!1;if(oa)try{var Mn={};Object.defineProperty(Mn,"passive",{get:function(){Pu=!0}}),window.addEventListener("test",Mn,Mn),window.removeEventListener("test",Mn,Mn)}catch{Pu=!1}var Ca=null,ts=null,Ai=null;function qo(){if(Ai)return Ai;var t,e=ts,a=e.length,l,n="value"in Ca?Ca.value:Ca.textContent,i=n.length;for(t=0;t=Dn),Lo=" ",Vo=!1;function Zo(t,e){switch(t){case"keyup":return Ym.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ko(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var jl=!1;function Xm(t,e){switch(t){case"compositionend":return Ko(e);case"keypress":return e.which!==32?null:(Vo=!0,Lo);case"textInput":return t=e.data,t===Lo&&Vo?null:t;default:return null}}function Lm(t,e){if(jl)return t==="compositionend"||!is&&Zo(t,e)?(t=qo(),Ai=ts=Ca=null,jl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:a,offset:e-t};t=l}t:{for(;a;){if(a.nextSibling){a=a.nextSibling;break t}a=a.parentNode}a=void 0}a=tr(a)}}function ar(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?ar(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function lr(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=Ei(t.document);e instanceof t.HTMLIFrameElement;){try{var a=typeof e.contentWindow.location.href=="string"}catch{a=!1}if(a)t=e.contentWindow;else break;e=Ei(t.document)}return e}function cs(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var $m=oa&&"documentMode"in document&&11>=document.documentMode,Ql=null,os=null,Un=null,rs=!1;function nr(t,e,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;rs||Ql==null||Ql!==Ei(l)||(l=Ql,"selectionStart"in l&&cs(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Un&&_n(Un,l)||(Un=l,l=pu(os,"onSelect"),0>=s,n-=s,ta=1<<32-ne(e)+n|a<tt?(rt=G,G=null):rt=G.sibling;var yt=x(g,G,p[tt],M);if(yt===null){G===null&&(G=rt);break}t&&G&&yt.alternate===null&&e(g,G),m=i(yt,m,tt),mt===null?V=yt:mt.sibling=yt,mt=yt,G=rt}if(tt===p.length)return a(g,G),ft&&fa(g,tt),V;if(G===null){for(;tttt?(rt=G,G=null):rt=G.sibling;var Ia=x(g,G,yt.value,M);if(Ia===null){G===null&&(G=rt);break}t&&G&&Ia.alternate===null&&e(g,G),m=i(Ia,m,tt),mt===null?V=Ia:mt.sibling=Ia,mt=Ia,G=rt}if(yt.done)return a(g,G),ft&&fa(g,tt),V;if(G===null){for(;!yt.done;tt++,yt=p.next())yt=w(g,yt.value,M),yt!==null&&(m=i(yt,m,tt),mt===null?V=yt:mt.sibling=yt,mt=yt);return ft&&fa(g,tt),V}for(G=l(G);!yt.done;tt++,yt=p.next())yt=z(G,g,tt,yt.value,M),yt!==null&&(t&&yt.alternate!==null&&G.delete(yt.key===null?tt:yt.key),m=i(yt,m,tt),mt===null?V=yt:mt.sibling=yt,mt=yt);return t&&G.forEach(function(gy){return e(g,gy)}),ft&&fa(g,tt),V}function Et(g,m,p,M){if(typeof p=="object"&&p!==null&&p.type===L&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case K:t:{for(var V=p.key;m!==null;){if(m.key===V){if(V=p.type,V===L){if(m.tag===7){a(g,m.sibling),M=n(m,p.props.children),M.return=g,g=M;break t}}else if(m.elementType===V||typeof V=="object"&&V!==null&&V.$$typeof===q&&vl(V)===m.type){a(g,m.sibling),M=n(m,p.props),Qn(M,p),M.return=g,g=M;break t}a(g,m);break}else e(g,m);m=m.sibling}p.type===L?(M=fl(p.props.children,g.mode,M,p.key),M.return=g,g=M):(M=Hi(p.type,p.key,p.props,null,g.mode,M),Qn(M,p),M.return=g,g=M)}return s(g);case B:t:{for(V=p.key;m!==null;){if(m.key===V)if(m.tag===4&&m.stateNode.containerInfo===p.containerInfo&&m.stateNode.implementation===p.implementation){a(g,m.sibling),M=n(m,p.children||[]),M.return=g,g=M;break t}else{a(g,m);break}else e(g,m);m=m.sibling}M=gs(p,g.mode,M),M.return=g,g=M}return s(g);case q:return p=vl(p),Et(g,m,p,M)}if(Bt(p))return j(g,m,p,M);if(Dt(p)){if(V=Dt(p),typeof V!="function")throw Error(r(150));return p=V.call(p),J(g,m,p,M)}if(typeof p.then=="function")return Et(g,m,Xi(p),M);if(p.$$typeof===st)return Et(g,m,ji(g,p),M);Li(g,p)}return typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint"?(p=""+p,m!==null&&m.tag===6?(a(g,m.sibling),M=n(m,p),M.return=g,g=M):(a(g,m),M=vs(p,g.mode,M),M.return=g,g=M),s(g)):a(g,m)}return function(g,m,p,M){try{jn=0;var V=Et(g,m,p,M);return Wl=null,V}catch(G){if(G===Fl||G===Yi)throw G;var mt=De(29,G,null,g.mode);return mt.lanes=M,mt.return=g,mt}finally{}}}var pl=Or(!0),wr=Or(!1),Ha=!1;function Ds(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Cs(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Ba(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function qa(t,e,a){var l=t.updateQueue;if(l===null)return null;if(l=l.shared,(vt&2)!==0){var n=l.pending;return n===null?e.next=e:(e.next=n.next,n.next=e),l.pending=e,e=Ri(t),fr(t,null,a),e}return Ui(t,l,e,a),Ri(t)}function Yn(t,e,a){if(e=e.updateQueue,e!==null&&(e=e.shared,(a&4194048)!==0)){var l=e.lanes;l&=t.pendingLanes,a|=l,e.lanes=a,ye(t,a)}}function Ns(t,e){var a=t.updateQueue,l=t.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var n=null,i=null;if(a=a.firstBaseUpdate,a!==null){do{var s={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};i===null?n=i=s:i=i.next=s,a=a.next}while(a!==null);i===null?n=i=e:i=i.next=e}else n=i=e;a={baseState:l.baseState,firstBaseUpdate:n,lastBaseUpdate:i,shared:l.shared,callbacks:l.callbacks},t.updateQueue=a;return}t=a.lastBaseUpdate,t===null?a.firstBaseUpdate=e:t.next=e,a.lastBaseUpdate=e}var _s=!1;function Gn(){if(_s){var t=kl;if(t!==null)throw t}}function Xn(t,e,a,l){_s=!1;var n=t.updateQueue;Ha=!1;var i=n.firstBaseUpdate,s=n.lastBaseUpdate,f=n.shared.pending;if(f!==null){n.shared.pending=null;var d=f,b=d.next;d.next=null,s===null?i=b:s.next=b,s=d;var A=t.alternate;A!==null&&(A=A.updateQueue,f=A.lastBaseUpdate,f!==s&&(f===null?A.firstBaseUpdate=b:f.next=b,A.lastBaseUpdate=d))}if(i!==null){var w=n.baseState;s=0,A=b=d=null,f=i;do{var x=f.lane&-536870913,z=x!==f.lane;if(z?(ot&x)===x:(l&x)===x){x!==0&&x===Jl&&(_s=!0),A!==null&&(A=A.next={lane:0,tag:f.tag,payload:f.payload,callback:null,next:null});t:{var j=t,J=f;x=e;var Et=a;switch(J.tag){case 1:if(j=J.payload,typeof j=="function"){w=j.call(Et,w,x);break t}w=j;break t;case 3:j.flags=j.flags&-65537|128;case 0:if(j=J.payload,x=typeof j=="function"?j.call(Et,w,x):j,x==null)break t;w=h({},w,x);break t;case 2:Ha=!0}}x=f.callback,x!==null&&(t.flags|=64,z&&(t.flags|=8192),z=n.callbacks,z===null?n.callbacks=[x]:z.push(x))}else z={lane:x,tag:f.tag,payload:f.payload,callback:f.callback,next:null},A===null?(b=A=z,d=w):A=A.next=z,s|=x;if(f=f.next,f===null){if(f=n.shared.pending,f===null)break;z=f,f=z.next,z.next=null,n.lastBaseUpdate=z,n.shared.pending=null}}while(!0);A===null&&(d=w),n.baseState=d,n.firstBaseUpdate=b,n.lastBaseUpdate=A,i===null&&(n.shared.lanes=0),Xa|=s,t.lanes=s,t.memoizedState=w}}function Dr(t,e){if(typeof t!="function")throw Error(r(191,t));t.call(e)}function Cr(t,e){var a=t.callbacks;if(a!==null)for(t.callbacks=null,t=0;ti?i:8;var s=S.T,f={};S.T=f,$s(t,!1,e,a);try{var d=n(),b=S.S;if(b!==null&&b(f,d),d!==null&&typeof d=="object"&&typeof d.then=="function"){var A=u0(d,l);Zn(t,e,A,Re(t))}else Zn(t,e,l,Re(t))}catch(w){Zn(t,e,{then:function(){},status:"rejected",reason:w},Re())}finally{N.p=i,s!==null&&f.types!==null&&(s.types=f.types),S.T=s}}function d0(){}function Fs(t,e,a,l){if(t.tag!==5)throw Error(r(476));var n=of(t).queue;cf(t,n,e,D,a===null?d0:function(){return rf(t),a(l)})}function of(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:D,baseState:D,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ya,lastRenderedState:D},next:null};var a={};return e.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ya,lastRenderedState:a},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function rf(t){var e=of(t);e.next===null&&(e=t.alternate.memoizedState),Zn(t,e.next.queue,{},Re())}function Ws(){return ee(ci)}function ff(){return Yt().memoizedState}function df(){return Yt().memoizedState}function h0(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var a=Re();t=Ba(a);var l=qa(e,t,a);l!==null&&(Ee(l,e,a),Yn(l,e,a)),e={cache:As()},t.payload=e;return}e=e.return}}function m0(t,e,a){var l=Re();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Pi(t)?mf(e,a):(a=ms(t,e,a,l),a!==null&&(Ee(a,t,l),yf(a,e,l)))}function hf(t,e,a){var l=Re();Zn(t,e,a,l)}function Zn(t,e,a,l){var n={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(Pi(t))mf(e,n);else{var i=t.alternate;if(t.lanes===0&&(i===null||i.lanes===0)&&(i=e.lastRenderedReducer,i!==null))try{var s=e.lastRenderedState,f=i(s,a);if(n.hasEagerState=!0,n.eagerState=f,we(f,s))return Ui(t,e,n,0),Mt===null&&_i(),!1}catch{}finally{}if(a=ms(t,e,n,l),a!==null)return Ee(a,t,l),yf(a,e,l),!0}return!1}function $s(t,e,a,l){if(l={lane:2,revertLane:Dc(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},Pi(t)){if(e)throw Error(r(479))}else e=ms(t,a,l,2),e!==null&&Ee(e,t,2)}function Pi(t){var e=t.alternate;return t===$||e!==null&&e===$}function mf(t,e){Il=Ki=!0;var a=t.pending;a===null?e.next=e:(e.next=a.next,a.next=e),t.pending=e}function yf(t,e,a){if((a&4194048)!==0){var l=e.lanes;l&=t.pendingLanes,a|=l,e.lanes=a,ye(t,a)}}var Kn={readContext:ee,use:Fi,useCallback:qt,useContext:qt,useEffect:qt,useImperativeHandle:qt,useLayoutEffect:qt,useInsertionEffect:qt,useMemo:qt,useReducer:qt,useRef:qt,useState:qt,useDebugValue:qt,useDeferredValue:qt,useTransition:qt,useSyncExternalStore:qt,useId:qt,useHostTransitionStatus:qt,useFormState:qt,useActionState:qt,useOptimistic:qt,useMemoCache:qt,useCacheRefresh:qt};Kn.useEffectEvent=qt;var vf={readContext:ee,use:Fi,useCallback:function(t,e){return fe().memoizedState=[t,e===void 0?null:e],t},useContext:ee,useEffect:Ir,useImperativeHandle:function(t,e,a){a=a!=null?a.concat([t]):null,$i(4194308,4,af.bind(null,e,t),a)},useLayoutEffect:function(t,e){return $i(4194308,4,t,e)},useInsertionEffect:function(t,e){$i(4,2,t,e)},useMemo:function(t,e){var a=fe();e=e===void 0?null:e;var l=t();if(bl){Ke(!0);try{t()}finally{Ke(!1)}}return a.memoizedState=[l,e],l},useReducer:function(t,e,a){var l=fe();if(a!==void 0){var n=a(e);if(bl){Ke(!0);try{a(e)}finally{Ke(!1)}}}else n=e;return l.memoizedState=l.baseState=n,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:n},l.queue=t,t=t.dispatch=m0.bind(null,$,t),[l.memoizedState,t]},useRef:function(t){var e=fe();return t={current:t},e.memoizedState=t},useState:function(t){t=Vs(t);var e=t.queue,a=hf.bind(null,$,e);return e.dispatch=a,[t.memoizedState,a]},useDebugValue:Js,useDeferredValue:function(t,e){var a=fe();return ks(a,t,e)},useTransition:function(){var t=Vs(!1);return t=cf.bind(null,$,t.queue,!0,!1),fe().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,a){var l=$,n=fe();if(ft){if(a===void 0)throw Error(r(407));a=a()}else{if(a=e(),Mt===null)throw Error(r(349));(ot&127)!==0||Br(l,e,a)}n.memoizedState=a;var i={value:a,getSnapshot:e};return n.queue=i,Ir(jr.bind(null,l,i,t),[t]),l.flags|=2048,tn(9,{destroy:void 0},qr.bind(null,l,i,a,e),null),a},useId:function(){var t=fe(),e=Mt.identifierPrefix;if(ft){var a=ea,l=ta;a=(l&~(1<<32-ne(l)-1)).toString(32)+a,e="_"+e+"R_"+a,a=Ji++,0<\/script>",i=i.removeChild(i.firstChild);break;case"select":i=typeof l.is=="string"?s.createElement("select",{is:l.is}):s.createElement("select"),l.multiple?i.multiple=!0:l.size&&(i.size=l.size);break;default:i=typeof l.is=="string"?s.createElement(n,{is:l.is}):s.createElement(n)}}i[Pt]=e,i[ge]=l;t:for(s=e.child;s!==null;){if(s.tag===5||s.tag===6)i.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===e)break t;for(;s.sibling===null;){if(s.return===null||s.return===e)break t;s=s.return}s.sibling.return=s.return,s=s.sibling}e.stateNode=i;t:switch(le(i,n,l),n){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break t;case"img":l=!0;break t;default:l=!1}l&&ga(e)}}return Nt(e),fc(e,e.type,t===null?null:t.memoizedProps,e.pendingProps,a),null;case 6:if(t&&e.stateNode!=null)t.memoizedProps!==l&&ga(e);else{if(typeof l!="string"&&e.stateNode===null)throw Error(r(166));if(t=_t.current,Zl(e)){if(t=e.stateNode,a=e.memoizedProps,l=null,n=te,n!==null)switch(n.tag){case 27:case 5:l=n.memoizedProps}t[Pt]=e,t=!!(t.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||Hd(t.nodeValue,a)),t||Ua(e,!0)}else t=bu(t).createTextNode(l),t[Pt]=e,e.stateNode=t}return Nt(e),null;case 31:if(a=e.memoizedState,t===null||t.memoizedState!==null){if(l=Zl(e),a!==null){if(t===null){if(!l)throw Error(r(318));if(t=e.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(557));t[Pt]=e}else dl(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;Nt(e),t=!1}else a=xs(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),t=!0;if(!t)return e.flags&256?(Ne(e),e):(Ne(e),null);if((e.flags&128)!==0)throw Error(r(558))}return Nt(e),null;case 13:if(l=e.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(n=Zl(e),l!==null&&l.dehydrated!==null){if(t===null){if(!n)throw Error(r(318));if(n=e.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(r(317));n[Pt]=e}else dl(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;Nt(e),n=!1}else n=xs(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=n),n=!0;if(!n)return e.flags&256?(Ne(e),e):(Ne(e),null)}return Ne(e),(e.flags&128)!==0?(e.lanes=a,e):(a=l!==null,t=t!==null&&t.memoizedState!==null,a&&(l=e.child,n=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(n=l.alternate.memoizedState.cachePool.pool),i=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(i=l.memoizedState.cachePool.pool),i!==n&&(l.flags|=2048)),a!==t&&a&&(e.child.flags|=8192),nu(e,e.updateQueue),Nt(e),null);case 4:return Ft(),t===null&&Uc(e.stateNode.containerInfo),Nt(e),null;case 10:return ha(e.type),Nt(e),null;case 19:if(dt(Qt),l=e.memoizedState,l===null)return Nt(e),null;if(n=(e.flags&128)!==0,i=l.rendering,i===null)if(n)kn(l,!1);else{if(jt!==0||t!==null&&(t.flags&128)!==0)for(t=e.child;t!==null;){if(i=Zi(t),i!==null){for(e.flags|=128,kn(l,!1),t=i.updateQueue,e.updateQueue=t,nu(e,t),e.subtreeFlags=0,t=a,a=e.child;a!==null;)dr(a,t),a=a.sibling;return U(Qt,Qt.current&1|2),ft&&fa(e,l.treeForkCount),e.child}t=t.sibling}l.tail!==null&&oe()>ou&&(e.flags|=128,n=!0,kn(l,!1),e.lanes=4194304)}else{if(!n)if(t=Zi(i),t!==null){if(e.flags|=128,n=!0,t=t.updateQueue,e.updateQueue=t,nu(e,t),kn(l,!0),l.tail===null&&l.tailMode==="hidden"&&!i.alternate&&!ft)return Nt(e),null}else 2*oe()-l.renderingStartTime>ou&&a!==536870912&&(e.flags|=128,n=!0,kn(l,!1),e.lanes=4194304);l.isBackwards?(i.sibling=e.child,e.child=i):(t=l.last,t!==null?t.sibling=i:e.child=i,l.last=i)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=oe(),t.sibling=null,a=Qt.current,U(Qt,n?a&1|2:a&1),ft&&fa(e,l.treeForkCount),t):(Nt(e),null);case 22:case 23:return Ne(e),Rs(),l=e.memoizedState!==null,t!==null?t.memoizedState!==null!==l&&(e.flags|=8192):l&&(e.flags|=8192),l?(a&536870912)!==0&&(e.flags&128)===0&&(Nt(e),e.subtreeFlags&6&&(e.flags|=8192)):Nt(e),a=e.updateQueue,a!==null&&nu(e,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),l=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),l!==a&&(e.flags|=2048),t!==null&&dt(yl),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),e.memoizedState.cache!==a&&(e.flags|=2048),ha(Xt),Nt(e),null;case 25:return null;case 30:return null}throw Error(r(156,e.tag))}function b0(t,e){switch(bs(e),e.tag){case 1:return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return ha(Xt),Ft(),t=e.flags,(t&65536)!==0&&(t&128)===0?(e.flags=t&-65537|128,e):null;case 26:case 27:case 5:return Me(e),null;case 31:if(e.memoizedState!==null){if(Ne(e),e.alternate===null)throw Error(r(340));dl()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 13:if(Ne(e),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(r(340));dl()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return dt(Qt),null;case 4:return Ft(),null;case 10:return ha(e.type),null;case 22:case 23:return Ne(e),Rs(),t!==null&&dt(yl),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 24:return ha(Xt),null;case 25:return null;default:return null}}function Yf(t,e){switch(bs(e),e.tag){case 3:ha(Xt),Ft();break;case 26:case 27:case 5:Me(e);break;case 4:Ft();break;case 31:e.memoizedState!==null&&Ne(e);break;case 13:Ne(e);break;case 19:dt(Qt);break;case 10:ha(e.type);break;case 22:case 23:Ne(e),Rs(),t!==null&&dt(yl);break;case 24:ha(Xt)}}function Fn(t,e){try{var a=e.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var n=l.next;a=n;do{if((a.tag&t)===t){l=void 0;var i=a.create,s=a.inst;l=i(),s.destroy=l}a=a.next}while(a!==n)}}catch(f){bt(e,e.return,f)}}function Ya(t,e,a){try{var l=e.updateQueue,n=l!==null?l.lastEffect:null;if(n!==null){var i=n.next;l=i;do{if((l.tag&t)===t){var s=l.inst,f=s.destroy;if(f!==void 0){s.destroy=void 0,n=e;var d=a,b=f;try{b()}catch(A){bt(n,d,A)}}}l=l.next}while(l!==i)}}catch(A){bt(e,e.return,A)}}function Gf(t){var e=t.updateQueue;if(e!==null){var a=t.stateNode;try{Cr(e,a)}catch(l){bt(t,t.return,l)}}}function Xf(t,e,a){a.props=Sl(t.type,t.memoizedProps),a.state=t.memoizedState;try{a.componentWillUnmount()}catch(l){bt(t,e,l)}}function Wn(t,e){try{var a=t.ref;if(a!==null){switch(t.tag){case 26:case 27:case 5:var l=t.stateNode;break;case 30:l=t.stateNode;break;default:l=t.stateNode}typeof a=="function"?t.refCleanup=a(l):a.current=l}}catch(n){bt(t,e,n)}}function aa(t,e){var a=t.ref,l=t.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(n){bt(t,e,n)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(n){bt(t,e,n)}else a.current=null}function Lf(t){var e=t.type,a=t.memoizedProps,l=t.stateNode;try{t:switch(e){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break t;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(n){bt(t,t.return,n)}}function dc(t,e,a){try{var l=t.stateNode;G0(l,t.type,a,e),l[ge]=e}catch(n){bt(t,t.return,n)}}function Vf(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Ja(t.type)||t.tag===4}function hc(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||Vf(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Ja(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function mc(t,e,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,e?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(t,e):(e=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,e.appendChild(t),a=a._reactRootContainer,a!=null||e.onclick!==null||(e.onclick=ca));else if(l!==4&&(l===27&&Ja(t.type)&&(a=t.stateNode,e=null),t=t.child,t!==null))for(mc(t,e,a),t=t.sibling;t!==null;)mc(t,e,a),t=t.sibling}function iu(t,e,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,e?a.insertBefore(t,e):a.appendChild(t);else if(l!==4&&(l===27&&Ja(t.type)&&(a=t.stateNode),t=t.child,t!==null))for(iu(t,e,a),t=t.sibling;t!==null;)iu(t,e,a),t=t.sibling}function Zf(t){var e=t.stateNode,a=t.memoizedProps;try{for(var l=t.type,n=e.attributes;n.length;)e.removeAttributeNode(n[0]);le(e,l,a),e[Pt]=t,e[ge]=a}catch(i){bt(t,t.return,i)}}var pa=!1,Zt=!1,yc=!1,Kf=typeof WeakSet=="function"?WeakSet:Set,It=null;function S0(t,e){if(t=t.containerInfo,Bc=Mu,t=lr(t),cs(t)){if("selectionStart"in t)var a={start:t.selectionStart,end:t.selectionEnd};else t:{a=(a=t.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var n=l.anchorOffset,i=l.focusNode;l=l.focusOffset;try{a.nodeType,i.nodeType}catch{a=null;break t}var s=0,f=-1,d=-1,b=0,A=0,w=t,x=null;e:for(;;){for(var z;w!==a||n!==0&&w.nodeType!==3||(f=s+n),w!==i||l!==0&&w.nodeType!==3||(d=s+l),w.nodeType===3&&(s+=w.nodeValue.length),(z=w.firstChild)!==null;)x=w,w=z;for(;;){if(w===t)break e;if(x===a&&++b===n&&(f=s),x===i&&++A===l&&(d=s),(z=w.nextSibling)!==null)break;w=x,x=w.parentNode}w=z}a=f===-1||d===-1?null:{start:f,end:d}}else a=null}a=a||{start:0,end:0}}else a=null;for(qc={focusedElem:t,selectionRange:a},Mu=!1,It=e;It!==null;)if(e=It,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,It=t;else for(;It!==null;){switch(e=It,i=e.alternate,t=e.flags,e.tag){case 0:if((t&4)!==0&&(t=e.updateQueue,t=t!==null?t.events:null,t!==null))for(a=0;a title"))),le(i,l,a),i[Pt]=t,$t(i),l=i;break t;case"link":var s=Id("link","href",n).get(l+(a.href||""));if(s){for(var f=0;fEt&&(s=Et,Et=J,J=s);var g=er(f,J),m=er(f,Et);if(g&&m&&(z.rangeCount!==1||z.anchorNode!==g.node||z.anchorOffset!==g.offset||z.focusNode!==m.node||z.focusOffset!==m.offset)){var p=w.createRange();p.setStart(g.node,g.offset),z.removeAllRanges(),J>Et?(z.addRange(p),z.extend(m.node,m.offset)):(p.setEnd(m.node,m.offset),z.addRange(p))}}}}for(w=[],z=f;z=z.parentNode;)z.nodeType===1&&w.push({element:z,left:z.scrollLeft,top:z.scrollTop});for(typeof f.focus=="function"&&f.focus(),f=0;fa?32:a,S.T=null,a=zc,zc=null;var i=Va,s=Ea;if(Kt=0,un=Va=null,Ea=0,(vt&6)!==0)throw Error(r(331));var f=vt;if(vt|=4,ld(i.current),td(i,i.current,s,a),vt=f,ai(0,!1),re&&typeof re.onPostCommitFiberRoot=="function")try{re.onPostCommitFiberRoot(ll,i)}catch{}return!0}finally{N.p=n,S.T=l,xd(t,e)}}function Ed(t,e,a){e=je(a,e),e=ec(t.stateNode,e,2),t=qa(t,e,2),t!==null&&(Ht(t,2),la(t))}function bt(t,e,a){if(t.tag===3)Ed(t,t,a);else for(;e!==null;){if(e.tag===3){Ed(e,t,a);break}else if(e.tag===1){var l=e.stateNode;if(typeof e.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(La===null||!La.has(l))){t=je(a,t),a=Tf(2),l=qa(e,a,2),l!==null&&(Af(a,l,e,t),Ht(l,2),la(l));break}}e=e.return}}function Mc(t,e,a){var l=t.pingCache;if(l===null){l=t.pingCache=new E0;var n=new Set;l.set(e,n)}else n=l.get(e),n===void 0&&(n=new Set,l.set(e,n));n.has(a)||(pc=!0,n.add(a),t=w0.bind(null,t,e,a),e.then(t,t))}function w0(t,e,a){var l=t.pingCache;l!==null&&l.delete(e),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,Mt===t&&(ot&a)===a&&(jt===4||jt===3&&(ot&62914560)===ot&&300>oe()-cu?(vt&2)===0&&sn(t,0):bc|=a,nn===ot&&(nn=0)),la(t)}function Td(t,e){e===0&&(e=ie()),t=rl(t,e),t!==null&&(Ht(t,e),la(t))}function D0(t){var e=t.memoizedState,a=0;e!==null&&(a=e.retryLane),Td(t,a)}function C0(t,e){var a=0;switch(t.tag){case 31:case 13:var l=t.stateNode,n=t.memoizedState;n!==null&&(a=n.retryLane);break;case 19:l=t.stateNode;break;case 22:l=t.stateNode._retryCache;break;default:throw Error(r(314))}l!==null&&l.delete(e),Td(t,a)}function N0(t,e){return bn(t,e)}var yu=null,on=null,Oc=!1,vu=!1,wc=!1,Ka=0;function la(t){t!==on&&t.next===null&&(on===null?yu=on=t:on=on.next=t),vu=!0,Oc||(Oc=!0,U0())}function ai(t,e){if(!wc&&vu){wc=!0;do for(var a=!1,l=yu;l!==null;){if(t!==0){var n=l.pendingLanes;if(n===0)var i=0;else{var s=l.suspendedLanes,f=l.pingedLanes;i=(1<<31-ne(42|t)+1)-1,i&=n&~(s&~f),i=i&201326741?i&201326741|1:i?i|2:0}i!==0&&(a=!0,wd(l,i))}else i=ot,i=F(l,l===Mt?i:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(i&3)===0||Ut(l,i)||(a=!0,wd(l,i));l=l.next}while(a);wc=!1}}function _0(){Ad()}function Ad(){vu=Oc=!1;var t=0;Ka!==0&&L0()&&(t=Ka);for(var e=oe(),a=null,l=yu;l!==null;){var n=l.next,i=Md(l,e);i===0?(l.next=null,a===null?yu=n:a.next=n,n===null&&(on=a)):(a=l,(t!==0||(i&3)!==0)&&(vu=!0)),l=n}Kt!==0&&Kt!==5||ai(t),Ka!==0&&(Ka=0)}function Md(t,e){for(var a=t.suspendedLanes,l=t.pingedLanes,n=t.expirationTimes,i=t.pendingLanes&-62914561;0f)break;var A=d.transferSize,w=d.initiatorType;A&&Bd(w)&&(d=d.responseEnd,s+=A*(d"u"?null:document;function kd(t,e,a){var l=rn;if(l&&typeof e=="string"&&e){var n=Be(e);n='link[rel="'+t+'"][href="'+n+'"]',typeof a=="string"&&(n+='[crossorigin="'+a+'"]'),Jd.has(n)||(Jd.add(n),t={rel:t,crossOrigin:a,href:e},l.querySelector(n)===null&&(e=l.createElement("link"),le(e,"link",t),$t(e),l.head.appendChild(e)))}}function I0(t){Ta.D(t),kd("dns-prefetch",t,null)}function P0(t,e){Ta.C(t,e),kd("preconnect",t,e)}function ty(t,e,a){Ta.L(t,e,a);var l=rn;if(l&&t&&e){var n='link[rel="preload"][as="'+Be(e)+'"]';e==="image"&&a&&a.imageSrcSet?(n+='[imagesrcset="'+Be(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(n+='[imagesizes="'+Be(a.imageSizes)+'"]')):n+='[href="'+Be(t)+'"]';var i=n;switch(e){case"style":i=fn(t);break;case"script":i=dn(t)}Ve.has(i)||(t=h({rel:"preload",href:e==="image"&&a&&a.imageSrcSet?void 0:t,as:e},a),Ve.set(i,t),l.querySelector(n)!==null||e==="style"&&l.querySelector(ui(i))||e==="script"&&l.querySelector(si(i))||(e=l.createElement("link"),le(e,"link",t),$t(e),l.head.appendChild(e)))}}function ey(t,e){Ta.m(t,e);var a=rn;if(a&&t){var l=e&&typeof e.as=="string"?e.as:"script",n='link[rel="modulepreload"][as="'+Be(l)+'"][href="'+Be(t)+'"]',i=n;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":i=dn(t)}if(!Ve.has(i)&&(t=h({rel:"modulepreload",href:t},e),Ve.set(i,t),a.querySelector(n)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(si(i)))return}l=a.createElement("link"),le(l,"link",t),$t(l),a.head.appendChild(l)}}}function ay(t,e,a){Ta.S(t,e,a);var l=rn;if(l&&t){var n=_l(l).hoistableStyles,i=fn(t);e=e||"default";var s=n.get(i);if(!s){var f={loading:0,preload:null};if(s=l.querySelector(ui(i)))f.loading=5;else{t=h({rel:"stylesheet",href:t,"data-precedence":e},a),(a=Ve.get(i))&&Vc(t,a);var d=s=l.createElement("link");$t(d),le(d,"link",t),d._p=new Promise(function(b,A){d.onload=b,d.onerror=A}),d.addEventListener("load",function(){f.loading|=1}),d.addEventListener("error",function(){f.loading|=2}),f.loading|=4,xu(s,e,l)}s={type:"stylesheet",instance:s,count:1,state:f},n.set(i,s)}}}function ly(t,e){Ta.X(t,e);var a=rn;if(a&&t){var l=_l(a).hoistableScripts,n=dn(t),i=l.get(n);i||(i=a.querySelector(si(n)),i||(t=h({src:t,async:!0},e),(e=Ve.get(n))&&Zc(t,e),i=a.createElement("script"),$t(i),le(i,"link",t),a.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},l.set(n,i))}}function ny(t,e){Ta.M(t,e);var a=rn;if(a&&t){var l=_l(a).hoistableScripts,n=dn(t),i=l.get(n);i||(i=a.querySelector(si(n)),i||(t=h({src:t,async:!0,type:"module"},e),(e=Ve.get(n))&&Zc(t,e),i=a.createElement("script"),$t(i),le(i,"link",t),a.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},l.set(n,i))}}function Fd(t,e,a,l){var n=(n=_t.current)?Su(n):null;if(!n)throw Error(r(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(e=fn(a.href),a=_l(n).hoistableStyles,l=a.get(e),l||(l={type:"style",instance:null,count:0,state:null},a.set(e,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=fn(a.href);var i=_l(n).hoistableStyles,s=i.get(t);if(s||(n=n.ownerDocument||n,s={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},i.set(t,s),(i=n.querySelector(ui(t)))&&!i._p&&(s.instance=i,s.state.loading=5),Ve.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},Ve.set(t,a),i||iy(n,t,a,s.state))),e&&l===null)throw Error(r(528,""));return s}if(e&&l!==null)throw Error(r(529,""));return null;case"script":return e=a.async,a=a.src,typeof a=="string"&&e&&typeof e!="function"&&typeof e!="symbol"?(e=dn(a),a=_l(n).hoistableScripts,l=a.get(e),l||(l={type:"script",instance:null,count:0,state:null},a.set(e,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,t))}}function fn(t){return'href="'+Be(t)+'"'}function ui(t){return'link[rel="stylesheet"]['+t+"]"}function Wd(t){return h({},t,{"data-precedence":t.precedence,precedence:null})}function iy(t,e,a,l){t.querySelector('link[rel="preload"][as="style"]['+e+"]")?l.loading=1:(e=t.createElement("link"),l.preload=e,e.addEventListener("load",function(){return l.loading|=1}),e.addEventListener("error",function(){return l.loading|=2}),le(e,"link",a),$t(e),t.head.appendChild(e))}function dn(t){return'[src="'+Be(t)+'"]'}function si(t){return"script[async]"+t}function $d(t,e,a){if(e.count++,e.instance===null)switch(e.type){case"style":var l=t.querySelector('style[data-href~="'+Be(a.href)+'"]');if(l)return e.instance=l,$t(l),l;var n=h({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(t.ownerDocument||t).createElement("style"),$t(l),le(l,"style",n),xu(l,a.precedence,t),e.instance=l;case"stylesheet":n=fn(a.href);var i=t.querySelector(ui(n));if(i)return e.state.loading|=4,e.instance=i,$t(i),i;l=Wd(a),(n=Ve.get(n))&&Vc(l,n),i=(t.ownerDocument||t).createElement("link"),$t(i);var s=i;return s._p=new Promise(function(f,d){s.onload=f,s.onerror=d}),le(i,"link",l),e.state.loading|=4,xu(i,a.precedence,t),e.instance=i;case"script":return i=dn(a.src),(n=t.querySelector(si(i)))?(e.instance=n,$t(n),n):(l=a,(n=Ve.get(i))&&(l=h({},a),Zc(l,n)),t=t.ownerDocument||t,n=t.createElement("script"),$t(n),le(n,"link",l),t.head.appendChild(n),e.instance=n);case"void":return null;default:throw Error(r(443,e.type))}else e.type==="stylesheet"&&(e.state.loading&4)===0&&(l=e.instance,e.state.loading|=4,xu(l,a.precedence,t));return e.instance}function xu(t,e,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=l.length?l[l.length-1]:null,i=n,s=0;s title"):null)}function uy(t,e,a){if(a===1||e.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof e.precedence!="string"||typeof e.href!="string"||e.href==="")break;return!0;case"link":if(typeof e.rel!="string"||typeof e.href!="string"||e.href===""||e.onLoad||e.onError)break;switch(e.rel){case"stylesheet":return t=e.disabled,typeof e.precedence=="string"&&t==null;default:return!0}case"script":if(e.async&&typeof e.async!="function"&&typeof e.async!="symbol"&&!e.onLoad&&!e.onError&&e.src&&typeof e.src=="string")return!0}return!1}function th(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function sy(t,e,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var n=fn(l.href),i=e.querySelector(ui(n));if(i){e=i._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(t.count++,t=Eu.bind(t),e.then(t,t)),a.state.loading|=4,a.instance=i,$t(i);return}i=e.ownerDocument||e,l=Wd(l),(n=Ve.get(n))&&Vc(l,n),i=i.createElement("link"),$t(i);var s=i;s._p=new Promise(function(f,d){s.onload=f,s.onerror=d}),le(i,"link",l),a.instance=i}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(a,e),(e=a.state.preload)&&(a.state.loading&3)===0&&(t.count++,a=Eu.bind(t),e.addEventListener("load",a),e.addEventListener("error",a))}}var Kc=0;function cy(t,e){return t.stylesheets&&t.count===0&&Au(t,t.stylesheets),0Kc?50:800)+e);return t.unsuspend=a,function(){t.unsuspend=null,clearTimeout(l),clearTimeout(n)}}:null}function Eu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Au(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var Tu=null;function Au(t,e){t.stylesheets=null,t.unsuspend!==null&&(t.count++,Tu=new Map,e.forEach(oy,t),Tu=null,Eu.call(t))}function oy(t,e){if(!(e.state.loading&4)){var a=Tu.get(t);if(a)var l=a.get(null);else{a=new Map,Tu.set(t,a);for(var n=t.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(u)}catch(c){console.error(c)}}return u(),to.exports=Dy(),to.exports}var Ny=Cy(),Qu=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(u){return this.listeners.add(u),this.onSubscribe(),()=>{this.listeners.delete(u),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},_y={setTimeout:(u,c)=>setTimeout(u,c),clearTimeout:u=>clearTimeout(u),setInterval:(u,c)=>setInterval(u,c),clearInterval:u=>clearInterval(u)},Uy=class{#t=_y;#e=!1;setTimeoutProvider(u){this.#t=u}setTimeout(u,c){return this.#t.setTimeout(u,c)}clearTimeout(u){this.#t.clearTimeout(u)}setInterval(u,c){return this.#t.setInterval(u,c)}clearInterval(u){this.#t.clearInterval(u)}},uo=new Uy;function Ry(u){setTimeout(u,0)}var Yu=typeof window>"u"||"Deno"in globalThis;function $e(){}function Hy(u,c){return typeof u=="function"?u(c):u}function By(u){return typeof u=="number"&&u>=0&&u!==1/0}function qy(u,c){return Math.max(u+(c||0)-Date.now(),0)}function so(u,c){return typeof u=="function"?u(c):u}function jy(u,c){return typeof u=="function"?u(c):u}function xh(u,c){const{type:o="all",exact:r,fetchStatus:y,predicate:v,queryKey:T,stale:E}=u;if(T){if(r){if(c.queryHash!==po(T,c.options))return!1}else if(!vi(c.queryKey,T))return!1}if(o!=="all"){const O=c.isActive();if(o==="active"&&!O||o==="inactive"&&O)return!1}return!(typeof E=="boolean"&&c.isStale()!==E||y&&y!==c.state.fetchStatus||v&&!v(c))}function zh(u,c){const{exact:o,status:r,predicate:y,mutationKey:v}=u;if(v){if(!c.options.mutationKey)return!1;if(o){if(yi(c.options.mutationKey)!==yi(v))return!1}else if(!vi(c.options.mutationKey,v))return!1}return!(r&&c.state.status!==r||y&&!y(c))}function po(u,c){return(c?.queryKeyHashFn||yi)(u)}function yi(u){return JSON.stringify(u,(c,o)=>co(o)?Object.keys(o).sort().reduce((r,y)=>(r[y]=o[y],r),{}):o)}function vi(u,c){return u===c?!0:typeof u!=typeof c?!1:u&&c&&typeof u=="object"&&typeof c=="object"?Object.keys(c).every(o=>vi(u[o],c[o])):!1}var Qy=Object.prototype.hasOwnProperty;function Gh(u,c){if(u===c)return u;const o=Eh(u)&&Eh(c);if(!o&&!(co(u)&&co(c)))return c;const y=(o?u:Object.keys(u)).length,v=o?c:Object.keys(c),T=v.length,E=o?new Array(T):{};let O=0;for(let C=0;C{uo.setTimeout(c,u)})}function Gy(u,c,o){return typeof o.structuralSharing=="function"?o.structuralSharing(u,c):o.structuralSharing!==!1?Gh(u,c):c}function Xy(u,c,o=0){const r=[...u,c];return o&&r.length>o?r.slice(1):r}function Ly(u,c,o=0){const r=[c,...u];return o&&r.length>o?r.slice(0,-1):r}var bo=Symbol();function Xh(u,c){return!u.queryFn&&c?.initialPromise?()=>c.initialPromise:!u.queryFn||u.queryFn===bo?()=>Promise.reject(new Error(`Missing queryFn: '${u.queryHash}'`)):u.queryFn}var Vy=class extends Qu{#t;#e;#a;constructor(){super(),this.#a=u=>{if(!Yu&&window.addEventListener){const c=()=>u();return window.addEventListener("visibilitychange",c,!1),()=>{window.removeEventListener("visibilitychange",c)}}}}onSubscribe(){this.#e||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(u){this.#a=u,this.#e?.(),this.#e=u(c=>{typeof c=="boolean"?this.setFocused(c):this.onFocus()})}setFocused(u){this.#t!==u&&(this.#t=u,this.onFocus())}onFocus(){const u=this.isFocused();this.listeners.forEach(c=>{c(u)})}isFocused(){return typeof this.#t=="boolean"?this.#t:globalThis.document?.visibilityState!=="hidden"}},Lh=new Vy;function Zy(){let u,c;const o=new Promise((y,v)=>{u=y,c=v});o.status="pending",o.catch(()=>{});function r(y){Object.assign(o,y),delete o.resolve,delete o.reject}return o.resolve=y=>{r({status:"fulfilled",value:y}),u(y)},o.reject=y=>{r({status:"rejected",reason:y}),c(y)},o}var Ky=Ry;function Jy(){let u=[],c=0,o=E=>{E()},r=E=>{E()},y=Ky;const v=E=>{c?u.push(E):y(()=>{o(E)})},T=()=>{const E=u;u=[],E.length&&y(()=>{r(()=>{E.forEach(O=>{o(O)})})})};return{batch:E=>{let O;c++;try{O=E()}finally{c--,c||T()}return O},batchCalls:E=>(...O)=>{v(()=>{E(...O)})},schedule:v,setNotifyFunction:E=>{o=E},setBatchNotifyFunction:E=>{r=E},setScheduler:E=>{y=E}}}var de=Jy(),ky=class extends Qu{#t=!0;#e;#a;constructor(){super(),this.#a=u=>{if(!Yu&&window.addEventListener){const c=()=>u(!0),o=()=>u(!1);return window.addEventListener("online",c,!1),window.addEventListener("offline",o,!1),()=>{window.removeEventListener("online",c),window.removeEventListener("offline",o)}}}}onSubscribe(){this.#e||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(u){this.#a=u,this.#e?.(),this.#e=u(this.setOnline.bind(this))}setOnline(u){this.#t!==u&&(this.#t=u,this.listeners.forEach(o=>{o(u)}))}isOnline(){return this.#t}},qu=new ky;function Fy(u){return Math.min(1e3*2**u,3e4)}function Vh(u){return(u??"online")==="online"?qu.isOnline():!0}var oo=class extends Error{constructor(u){super("CancelledError"),this.revert=u?.revert,this.silent=u?.silent}};function Zh(u){let c=!1,o=0,r;const y=Zy(),v=()=>y.status!=="pending",T=L=>{if(!v()){const P=new oo(L);R(P),u.onCancel?.(P)}},E=()=>{c=!0},O=()=>{c=!1},C=()=>Lh.isFocused()&&(u.networkMode==="always"||qu.isOnline())&&u.canRun(),H=()=>Vh(u.networkMode)&&u.canRun(),h=L=>{v()||(r?.(),y.resolve(L))},R=L=>{v()||(r?.(),y.reject(L))},K=()=>new Promise(L=>{r=P=>{(v()||C())&&L(P)},u.onPause?.()}).then(()=>{r=void 0,v()||u.onContinue?.()}),B=()=>{if(v())return;let L;const P=o===0?u.initialPromise:void 0;try{L=P??u.fn()}catch(X){L=Promise.reject(X)}Promise.resolve(L).then(h).catch(X=>{if(v())return;const St=u.retry??(Yu?0:3),st=u.retryDelay??Fy,Tt=typeof st=="function"?st(o,X):st,at=St===!0||typeof St=="number"&&oC()?void 0:K()).then(()=>{c?R(X):B()})})};return{promise:y,status:()=>y.status,cancel:T,continue:()=>(r?.(),y),cancelRetry:E,continueRetry:O,canStart:H,start:()=>(H()?B():K().then(B),y)}}var Kh=class{#t;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),By(this.gcTime)&&(this.#t=uo.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(u){this.gcTime=Math.max(this.gcTime||0,u??(Yu?1/0:300*1e3))}clearGcTimeout(){this.#t&&(uo.clearTimeout(this.#t),this.#t=void 0)}},Wy=class extends Kh{#t;#e;#a;#n;#l;#u;#s;constructor(u){super(),this.#s=!1,this.#u=u.defaultOptions,this.setOptions(u.options),this.observers=[],this.#n=u.client,this.#a=this.#n.getQueryCache(),this.queryKey=u.queryKey,this.queryHash=u.queryHash,this.#t=Ah(this.options),this.state=u.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#l?.promise}setOptions(u){if(this.options={...this.#u,...u},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const c=Ah(this.options);c.data!==void 0&&(this.setData(c.data,{updatedAt:c.dataUpdatedAt,manual:!0}),this.#t=c)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#a.remove(this)}setData(u,c){const o=Gy(this.state.data,u,this.options);return this.#i({data:o,type:"success",dataUpdatedAt:c?.updatedAt,manual:c?.manual}),o}setState(u,c){this.#i({type:"setState",state:u,setStateOptions:c})}cancel(u){const c=this.#l?.promise;return this.#l?.cancel(u),c?c.then($e).catch($e):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#t)}isActive(){return this.observers.some(u=>jy(u.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===bo||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0?this.observers.some(u=>so(u.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(u=>u.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(u=0){return this.state.data===void 0?!0:u==="static"?!1:this.state.isInvalidated?!0:!qy(this.state.dataUpdatedAt,u)}onFocus(){this.observers.find(c=>c.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#l?.continue()}onOnline(){this.observers.find(c=>c.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#l?.continue()}addObserver(u){this.observers.includes(u)||(this.observers.push(u),this.clearGcTimeout(),this.#a.notify({type:"observerAdded",query:this,observer:u}))}removeObserver(u){this.observers.includes(u)&&(this.observers=this.observers.filter(c=>c!==u),this.observers.length||(this.#l&&(this.#s?this.#l.cancel({revert:!0}):this.#l.cancelRetry()),this.scheduleGc()),this.#a.notify({type:"observerRemoved",query:this,observer:u}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#i({type:"invalidate"})}async fetch(u,c){if(this.state.fetchStatus!=="idle"&&this.#l?.status()!=="rejected"){if(this.state.data!==void 0&&c?.cancelRefetch)this.cancel({silent:!0});else if(this.#l)return this.#l.continueRetry(),this.#l.promise}if(u&&this.setOptions(u),!this.options.queryFn){const E=this.observers.find(O=>O.options.queryFn);E&&this.setOptions(E.options)}const o=new AbortController,r=E=>{Object.defineProperty(E,"signal",{enumerable:!0,get:()=>(this.#s=!0,o.signal)})},y=()=>{const E=Xh(this.options,c),C=(()=>{const H={client:this.#n,queryKey:this.queryKey,meta:this.meta};return r(H),H})();return this.#s=!1,this.options.persister?this.options.persister(E,C,this):E(C)},T=(()=>{const E={fetchOptions:c,options:this.options,queryKey:this.queryKey,client:this.#n,state:this.state,fetchFn:y};return r(E),E})();this.options.behavior?.onFetch(T,this),this.#e=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==T.fetchOptions?.meta)&&this.#i({type:"fetch",meta:T.fetchOptions?.meta}),this.#l=Zh({initialPromise:c?.initialPromise,fn:T.fetchFn,onCancel:E=>{E instanceof oo&&E.revert&&this.setState({...this.#e,fetchStatus:"idle"}),o.abort()},onFail:(E,O)=>{this.#i({type:"failed",failureCount:E,error:O})},onPause:()=>{this.#i({type:"pause"})},onContinue:()=>{this.#i({type:"continue"})},retry:T.options.retry,retryDelay:T.options.retryDelay,networkMode:T.options.networkMode,canRun:()=>!0});try{const E=await this.#l.start();if(E===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(E),this.#a.config.onSuccess?.(E,this),this.#a.config.onSettled?.(E,this.state.error,this),E}catch(E){if(E instanceof oo){if(E.silent)return this.#l.promise;if(E.revert){if(this.state.data===void 0)throw E;return this.state.data}}throw this.#i({type:"error",error:E}),this.#a.config.onError?.(E,this),this.#a.config.onSettled?.(this.state.data,E,this),E}finally{this.scheduleGc()}}#i(u){const c=o=>{switch(u.type){case"failed":return{...o,fetchFailureCount:u.failureCount,fetchFailureReason:u.error};case"pause":return{...o,fetchStatus:"paused"};case"continue":return{...o,fetchStatus:"fetching"};case"fetch":return{...o,...$y(o.data,this.options),fetchMeta:u.meta??null};case"success":const r={...o,data:u.data,dataUpdateCount:o.dataUpdateCount+1,dataUpdatedAt:u.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!u.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#e=u.manual?r:void 0,r;case"error":const y=u.error;return{...o,error:y,errorUpdateCount:o.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:o.fetchFailureCount+1,fetchFailureReason:y,fetchStatus:"idle",status:"error"};case"invalidate":return{...o,isInvalidated:!0};case"setState":return{...o,...u.state}}};this.state=c(this.state),de.batch(()=>{this.observers.forEach(o=>{o.onQueryUpdate()}),this.#a.notify({query:this,type:"updated",action:u})})}};function $y(u,c){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:Vh(c.networkMode)?"fetching":"paused",...u===void 0&&{error:null,status:"pending"}}}function Ah(u){const c=typeof u.initialData=="function"?u.initialData():u.initialData,o=c!==void 0,r=o?typeof u.initialDataUpdatedAt=="function"?u.initialDataUpdatedAt():u.initialDataUpdatedAt:0;return{data:c,dataUpdateCount:0,dataUpdatedAt:o?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:o?"success":"pending",fetchStatus:"idle"}}function Mh(u){return{onFetch:(c,o)=>{const r=c.options,y=c.fetchOptions?.meta?.fetchMore?.direction,v=c.state.data?.pages||[],T=c.state.data?.pageParams||[];let E={pages:[],pageParams:[]},O=0;const C=async()=>{let H=!1;const h=B=>{Object.defineProperty(B,"signal",{enumerable:!0,get:()=>(c.signal.aborted?H=!0:c.signal.addEventListener("abort",()=>{H=!0}),c.signal)})},R=Xh(c.options,c.fetchOptions),K=async(B,L,P)=>{if(H)return Promise.reject();if(L==null&&B.pages.length)return Promise.resolve(B);const St=(()=>{const k={client:c.client,queryKey:c.queryKey,pageParam:L,direction:P?"backward":"forward",meta:c.options.meta};return h(k),k})(),st=await R(St),{maxPages:Tt}=c.options,at=P?Ly:Xy;return{pages:at(B.pages,st,Tt),pageParams:at(B.pageParams,L,Tt)}};if(y&&v.length){const B=y==="backward",L=B?Iy:Oh,P={pages:v,pageParams:T},X=L(r,P);E=await K(P,X,B)}else{const B=u??v.length;do{const L=O===0?T[0]??r.initialPageParam:Oh(r,E);if(O>0&&L==null)break;E=await K(E,L),O++}while(Oc.options.persister?.(C,{client:c.client,queryKey:c.queryKey,meta:c.options.meta,signal:c.signal},o):c.fetchFn=C}}}function Oh(u,{pages:c,pageParams:o}){const r=c.length-1;return c.length>0?u.getNextPageParam(c[r],c,o[r],o):void 0}function Iy(u,{pages:c,pageParams:o}){return c.length>0?u.getPreviousPageParam?.(c[0],c,o[0],o):void 0}var Py=class extends Kh{#t;#e;#a;#n;constructor(u){super(),this.#t=u.client,this.mutationId=u.mutationId,this.#a=u.mutationCache,this.#e=[],this.state=u.state||tv(),this.setOptions(u.options),this.scheduleGc()}setOptions(u){this.options=u,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(u){this.#e.includes(u)||(this.#e.push(u),this.clearGcTimeout(),this.#a.notify({type:"observerAdded",mutation:this,observer:u}))}removeObserver(u){this.#e=this.#e.filter(c=>c!==u),this.scheduleGc(),this.#a.notify({type:"observerRemoved",mutation:this,observer:u})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#a.remove(this))}continue(){return this.#n?.continue()??this.execute(this.state.variables)}async execute(u){const c=()=>{this.#l({type:"continue"})},o={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#n=Zh({fn:()=>this.options.mutationFn?this.options.mutationFn(u,o):Promise.reject(new Error("No mutationFn found")),onFail:(v,T)=>{this.#l({type:"failed",failureCount:v,error:T})},onPause:()=>{this.#l({type:"pause"})},onContinue:c,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#a.canRun(this)});const r=this.state.status==="pending",y=!this.#n.canStart();try{if(r)c();else{this.#l({type:"pending",variables:u,isPaused:y}),await this.#a.config.onMutate?.(u,this,o);const T=await this.options.onMutate?.(u,o);T!==this.state.context&&this.#l({type:"pending",context:T,variables:u,isPaused:y})}const v=await this.#n.start();return await this.#a.config.onSuccess?.(v,u,this.state.context,this,o),await this.options.onSuccess?.(v,u,this.state.context,o),await this.#a.config.onSettled?.(v,null,this.state.variables,this.state.context,this,o),await this.options.onSettled?.(v,null,u,this.state.context,o),this.#l({type:"success",data:v}),v}catch(v){try{throw await this.#a.config.onError?.(v,u,this.state.context,this,o),await this.options.onError?.(v,u,this.state.context,o),await this.#a.config.onSettled?.(void 0,v,this.state.variables,this.state.context,this,o),await this.options.onSettled?.(void 0,v,u,this.state.context,o),v}finally{this.#l({type:"error",error:v})}}finally{this.#a.runNext(this)}}#l(u){const c=o=>{switch(u.type){case"failed":return{...o,failureCount:u.failureCount,failureReason:u.error};case"pause":return{...o,isPaused:!0};case"continue":return{...o,isPaused:!1};case"pending":return{...o,context:u.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:u.isPaused,status:"pending",variables:u.variables,submittedAt:Date.now()};case"success":return{...o,data:u.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...o,data:void 0,error:u.error,failureCount:o.failureCount+1,failureReason:u.error,isPaused:!1,status:"error"}}};this.state=c(this.state),de.batch(()=>{this.#e.forEach(o=>{o.onMutationUpdate(u)}),this.#a.notify({mutation:this,type:"updated",action:u})})}};function tv(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var ev=class extends Qu{constructor(u={}){super(),this.config=u,this.#t=new Set,this.#e=new Map,this.#a=0}#t;#e;#a;build(u,c,o){const r=new Py({client:u,mutationCache:this,mutationId:++this.#a,options:u.defaultMutationOptions(c),state:o});return this.add(r),r}add(u){this.#t.add(u);const c=Uu(u);if(typeof c=="string"){const o=this.#e.get(c);o?o.push(u):this.#e.set(c,[u])}this.notify({type:"added",mutation:u})}remove(u){if(this.#t.delete(u)){const c=Uu(u);if(typeof c=="string"){const o=this.#e.get(c);if(o)if(o.length>1){const r=o.indexOf(u);r!==-1&&o.splice(r,1)}else o[0]===u&&this.#e.delete(c)}}this.notify({type:"removed",mutation:u})}canRun(u){const c=Uu(u);if(typeof c=="string"){const r=this.#e.get(c)?.find(y=>y.state.status==="pending");return!r||r===u}else return!0}runNext(u){const c=Uu(u);return typeof c=="string"?this.#e.get(c)?.find(r=>r!==u&&r.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){de.batch(()=>{this.#t.forEach(u=>{this.notify({type:"removed",mutation:u})}),this.#t.clear(),this.#e.clear()})}getAll(){return Array.from(this.#t)}find(u){const c={exact:!0,...u};return this.getAll().find(o=>zh(c,o))}findAll(u={}){return this.getAll().filter(c=>zh(u,c))}notify(u){de.batch(()=>{this.listeners.forEach(c=>{c(u)})})}resumePausedMutations(){const u=this.getAll().filter(c=>c.state.isPaused);return de.batch(()=>Promise.all(u.map(c=>c.continue().catch($e))))}};function Uu(u){return u.options.scope?.id}var av=class extends Qu{constructor(u={}){super(),this.config=u,this.#t=new Map}#t;build(u,c,o){const r=c.queryKey,y=c.queryHash??po(r,c);let v=this.get(y);return v||(v=new Wy({client:u,queryKey:r,queryHash:y,options:u.defaultQueryOptions(c),state:o,defaultOptions:u.getQueryDefaults(r)}),this.add(v)),v}add(u){this.#t.has(u.queryHash)||(this.#t.set(u.queryHash,u),this.notify({type:"added",query:u}))}remove(u){const c=this.#t.get(u.queryHash);c&&(u.destroy(),c===u&&this.#t.delete(u.queryHash),this.notify({type:"removed",query:u}))}clear(){de.batch(()=>{this.getAll().forEach(u=>{this.remove(u)})})}get(u){return this.#t.get(u)}getAll(){return[...this.#t.values()]}find(u){const c={exact:!0,...u};return this.getAll().find(o=>xh(c,o))}findAll(u={}){const c=this.getAll();return Object.keys(u).length>0?c.filter(o=>xh(u,o)):c}notify(u){de.batch(()=>{this.listeners.forEach(c=>{c(u)})})}onFocus(){de.batch(()=>{this.getAll().forEach(u=>{u.onFocus()})})}onOnline(){de.batch(()=>{this.getAll().forEach(u=>{u.onOnline()})})}},lv=class{#t;#e;#a;#n;#l;#u;#s;#i;constructor(u={}){this.#t=u.queryCache||new av,this.#e=u.mutationCache||new ev,this.#a=u.defaultOptions||{},this.#n=new Map,this.#l=new Map,this.#u=0}mount(){this.#u++,this.#u===1&&(this.#s=Lh.subscribe(async u=>{u&&(await this.resumePausedMutations(),this.#t.onFocus())}),this.#i=qu.subscribe(async u=>{u&&(await this.resumePausedMutations(),this.#t.onOnline())}))}unmount(){this.#u--,this.#u===0&&(this.#s?.(),this.#s=void 0,this.#i?.(),this.#i=void 0)}isFetching(u){return this.#t.findAll({...u,fetchStatus:"fetching"}).length}isMutating(u){return this.#e.findAll({...u,status:"pending"}).length}getQueryData(u){const c=this.defaultQueryOptions({queryKey:u});return this.#t.get(c.queryHash)?.state.data}ensureQueryData(u){const c=this.defaultQueryOptions(u),o=this.#t.build(this,c),r=o.state.data;return r===void 0?this.fetchQuery(u):(u.revalidateIfStale&&o.isStaleByTime(so(c.staleTime,o))&&this.prefetchQuery(c),Promise.resolve(r))}getQueriesData(u){return this.#t.findAll(u).map(({queryKey:c,state:o})=>{const r=o.data;return[c,r]})}setQueryData(u,c,o){const r=this.defaultQueryOptions({queryKey:u}),v=this.#t.get(r.queryHash)?.state.data,T=Hy(c,v);if(T!==void 0)return this.#t.build(this,r).setData(T,{...o,manual:!0})}setQueriesData(u,c,o){return de.batch(()=>this.#t.findAll(u).map(({queryKey:r})=>[r,this.setQueryData(r,c,o)]))}getQueryState(u){const c=this.defaultQueryOptions({queryKey:u});return this.#t.get(c.queryHash)?.state}removeQueries(u){const c=this.#t;de.batch(()=>{c.findAll(u).forEach(o=>{c.remove(o)})})}resetQueries(u,c){const o=this.#t;return de.batch(()=>(o.findAll(u).forEach(r=>{r.reset()}),this.refetchQueries({type:"active",...u},c)))}cancelQueries(u,c={}){const o={revert:!0,...c},r=de.batch(()=>this.#t.findAll(u).map(y=>y.cancel(o)));return Promise.all(r).then($e).catch($e)}invalidateQueries(u,c={}){return de.batch(()=>(this.#t.findAll(u).forEach(o=>{o.invalidate()}),u?.refetchType==="none"?Promise.resolve():this.refetchQueries({...u,type:u?.refetchType??u?.type??"active"},c)))}refetchQueries(u,c={}){const o={...c,cancelRefetch:c.cancelRefetch??!0},r=de.batch(()=>this.#t.findAll(u).filter(y=>!y.isDisabled()&&!y.isStatic()).map(y=>{let v=y.fetch(void 0,o);return o.throwOnError||(v=v.catch($e)),y.state.fetchStatus==="paused"?Promise.resolve():v}));return Promise.all(r).then($e)}fetchQuery(u){const c=this.defaultQueryOptions(u);c.retry===void 0&&(c.retry=!1);const o=this.#t.build(this,c);return o.isStaleByTime(so(c.staleTime,o))?o.fetch(c):Promise.resolve(o.state.data)}prefetchQuery(u){return this.fetchQuery(u).then($e).catch($e)}fetchInfiniteQuery(u){return u.behavior=Mh(u.pages),this.fetchQuery(u)}prefetchInfiniteQuery(u){return this.fetchInfiniteQuery(u).then($e).catch($e)}ensureInfiniteQueryData(u){return u.behavior=Mh(u.pages),this.ensureQueryData(u)}resumePausedMutations(){return qu.isOnline()?this.#e.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#t}getMutationCache(){return this.#e}getDefaultOptions(){return this.#a}setDefaultOptions(u){this.#a=u}setQueryDefaults(u,c){this.#n.set(yi(u),{queryKey:u,defaultOptions:c})}getQueryDefaults(u){const c=[...this.#n.values()],o={};return c.forEach(r=>{vi(u,r.queryKey)&&Object.assign(o,r.defaultOptions)}),o}setMutationDefaults(u,c){this.#l.set(yi(u),{mutationKey:u,defaultOptions:c})}getMutationDefaults(u){const c=[...this.#l.values()],o={};return c.forEach(r=>{vi(u,r.mutationKey)&&Object.assign(o,r.defaultOptions)}),o}defaultQueryOptions(u){if(u._defaulted)return u;const c={...this.#a.queries,...this.getQueryDefaults(u.queryKey),...u,_defaulted:!0};return c.queryHash||(c.queryHash=po(c.queryKey,c)),c.refetchOnReconnect===void 0&&(c.refetchOnReconnect=c.networkMode!=="always"),c.throwOnError===void 0&&(c.throwOnError=!!c.suspense),!c.networkMode&&c.persister&&(c.networkMode="offlineFirst"),c.queryFn===bo&&(c.enabled=!1),c}defaultMutationOptions(u){return u?._defaulted?u:{...this.#a.mutations,...u?.mutationKey&&this.getMutationDefaults(u.mutationKey),...u,_defaulted:!0}}clear(){this.#t.clear(),this.#e.clear()}},nv=W.createContext(void 0),iv=({client:u,children:c})=>(W.useEffect(()=>(u.mount(),()=>{u.unmount()}),[u]),I.jsx(nv.Provider,{value:u,children:c})),uv=(u,c,o,r,y,v,T,E)=>{let O=document.documentElement,C=["light","dark"];function H(K){(Array.isArray(u)?u:[u]).forEach(B=>{let L=B==="class",P=L&&v?y.map(X=>v[X]||X):y;L?(O.classList.remove(...P),O.classList.add(v&&v[K]?v[K]:K)):O.setAttribute(B,K)}),h(K)}function h(K){E&&C.includes(K)&&(O.style.colorScheme=K)}function R(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(r)H(r);else try{let K=localStorage.getItem(c)||o,B=T&&K==="system"?R():K;H(B)}catch{}},wh=["light","dark"],Jh="(prefers-color-scheme: dark)",sv=typeof window>"u",So=W.createContext(void 0),cv={setTheme:u=>{},themes:[]},ov=()=>{var u;return(u=W.useContext(So))!=null?u:cv},rv=u=>W.useContext(So)?W.createElement(W.Fragment,null,u.children):W.createElement(dv,{...u}),fv=["light","dark"],dv=({forcedTheme:u,disableTransitionOnChange:c=!1,enableSystem:o=!0,enableColorScheme:r=!0,storageKey:y="theme",themes:v=fv,defaultTheme:T=o?"system":"light",attribute:E="data-theme",value:O,children:C,nonce:H,scriptProps:h})=>{let[R,K]=W.useState(()=>mv(y,T)),[B,L]=W.useState(()=>R==="system"?lo():R),P=O?Object.values(O):v,X=W.useCallback(at=>{let k=at;if(!k)return;at==="system"&&o&&(k=lo());let At=O?O[k]:k,q=c?yv(H):null,Ot=document.documentElement,ue=Gt=>{Gt==="class"?(Ot.classList.remove(...P),At&&Ot.classList.add(At)):Gt.startsWith("data-")&&(At?Ot.setAttribute(Gt,At):Ot.removeAttribute(Gt))};if(Array.isArray(E)?E.forEach(ue):ue(E),r){let Gt=wh.includes(T)?T:null,Dt=wh.includes(k)?k:Gt;Ot.style.colorScheme=Dt}q?.()},[H]),St=W.useCallback(at=>{let k=typeof at=="function"?at(R):at;K(k);try{localStorage.setItem(y,k)}catch{}},[R]),st=W.useCallback(at=>{let k=lo(at);L(k),R==="system"&&o&&!u&&X("system")},[R,u]);W.useEffect(()=>{let at=window.matchMedia(Jh);return at.addListener(st),st(at),()=>at.removeListener(st)},[st]),W.useEffect(()=>{let at=k=>{k.key===y&&(k.newValue?K(k.newValue):St(T))};return window.addEventListener("storage",at),()=>window.removeEventListener("storage",at)},[St]),W.useEffect(()=>{X(u??R)},[u,R]);let Tt=W.useMemo(()=>({theme:R,setTheme:St,forcedTheme:u,resolvedTheme:R==="system"?B:R,themes:o?[...v,"system"]:v,systemTheme:o?B:void 0}),[R,St,u,B,o,v]);return W.createElement(So.Provider,{value:Tt},W.createElement(hv,{forcedTheme:u,storageKey:y,attribute:E,enableSystem:o,enableColorScheme:r,defaultTheme:T,value:O,themes:v,nonce:H,scriptProps:h}),C)},hv=W.memo(({forcedTheme:u,storageKey:c,attribute:o,enableSystem:r,enableColorScheme:y,defaultTheme:v,value:T,themes:E,nonce:O,scriptProps:C})=>{let H=JSON.stringify([o,c,v,u,E,T,r,y]).slice(1,-1);return W.createElement("script",{...C,suppressHydrationWarning:!0,nonce:typeof window>"u"?O:"",dangerouslySetInnerHTML:{__html:`(${uv.toString()})(${H})`}})}),mv=(u,c)=>{if(sv)return;let o;try{o=localStorage.getItem(u)||void 0}catch{}return o||c},yv=u=>{let c=document.createElement("style");return u&&c.setAttribute("nonce",u),c.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(c),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(c)},1)}},lo=u=>(u||(u=window.matchMedia(Jh)),u.matches?"dark":"light");function vv({children:u,defaultTheme:c="system",storageKey:o="vite-ui-theme"}){return I.jsx(rv,{attribute:"class",defaultTheme:c,enableSystem:!0,storageKey:o,disableTransitionOnChange:!0,children:u})}const gv=u=>u.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),pv=u=>u.replace(/^([A-Z])|[\s-_]+(\w)/g,(c,o,r)=>r?r.toUpperCase():o.toLowerCase()),Dh=u=>{const c=pv(u);return c.charAt(0).toUpperCase()+c.slice(1)},kh=(...u)=>u.filter((c,o,r)=>!!c&&c.trim()!==""&&r.indexOf(c)===o).join(" ").trim(),bv=u=>{for(const c in u)if(c.startsWith("aria-")||c==="role"||c==="title")return!0};var Sv={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const xv=W.forwardRef(({color:u="currentColor",size:c=24,strokeWidth:o=2,absoluteStrokeWidth:r,className:y="",children:v,iconNode:T,...E},O)=>W.createElement("svg",{ref:O,...Sv,width:c,height:c,stroke:u,strokeWidth:r?Number(o)*24/Number(c):o,className:kh("lucide",y),...!v&&!bv(E)&&{"aria-hidden":"true"},...E},[...T.map(([C,H])=>W.createElement(C,H)),...Array.isArray(v)?v:[v]]));const gi=(u,c)=>{const o=W.forwardRef(({className:r,...y},v)=>W.createElement(xv,{ref:v,iconNode:c,className:kh(`lucide-${gv(Dh(u))}`,`lucide-${u}`,r),...y}));return o.displayName=Dh(u),o};const zv=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],Ev=gi("circle-check",zv);const Tv=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],Av=gi("info",Tv);const Mv=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],Ov=gi("loader-circle",Mv);const wv=[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],Dv=gi("octagon-x",wv);const Cv=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],Nv=gi("triangle-alert",Cv);function _v(u){if(typeof document>"u")return;let c=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",c.appendChild(o),o.styleSheet?o.styleSheet.cssText=u:o.appendChild(document.createTextNode(u))}const Uv=u=>{switch(u){case"success":return Bv;case"info":return jv;case"warning":return qv;case"error":return Qv;default:return null}},Rv=Array(12).fill(0),Hv=({visible:u,className:c})=>_.createElement("div",{className:["sonner-loading-wrapper",c].filter(Boolean).join(" "),"data-visible":u},_.createElement("div",{className:"sonner-spinner"},Rv.map((o,r)=>_.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),Bv=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),qv=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},_.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),jv=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),Qv=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),Yv=_.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},_.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),_.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),Gv=()=>{const[u,c]=_.useState(document.hidden);return _.useEffect(()=>{const o=()=>{c(document.hidden)};return document.addEventListener("visibilitychange",o),()=>window.removeEventListener("visibilitychange",o)},[]),u};let ro=1;class Xv{constructor(){this.subscribe=c=>(this.subscribers.push(c),()=>{const o=this.subscribers.indexOf(c);this.subscribers.splice(o,1)}),this.publish=c=>{this.subscribers.forEach(o=>o(c))},this.addToast=c=>{this.publish(c),this.toasts=[...this.toasts,c]},this.create=c=>{var o;const{message:r,...y}=c,v=typeof c?.id=="number"||((o=c.id)==null?void 0:o.length)>0?c.id:ro++,T=this.toasts.find(O=>O.id===v),E=c.dismissible===void 0?!0:c.dismissible;return this.dismissedToasts.has(v)&&this.dismissedToasts.delete(v),T?this.toasts=this.toasts.map(O=>O.id===v?(this.publish({...O,...c,id:v,title:r}),{...O,...c,id:v,dismissible:E,title:r}):O):this.addToast({title:r,...y,dismissible:E,id:v}),v},this.dismiss=c=>(c?(this.dismissedToasts.add(c),requestAnimationFrame(()=>this.subscribers.forEach(o=>o({id:c,dismiss:!0})))):this.toasts.forEach(o=>{this.subscribers.forEach(r=>r({id:o.id,dismiss:!0}))}),c),this.message=(c,o)=>this.create({...o,message:c}),this.error=(c,o)=>this.create({...o,message:c,type:"error"}),this.success=(c,o)=>this.create({...o,type:"success",message:c}),this.info=(c,o)=>this.create({...o,type:"info",message:c}),this.warning=(c,o)=>this.create({...o,type:"warning",message:c}),this.loading=(c,o)=>this.create({...o,type:"loading",message:c}),this.promise=(c,o)=>{if(!o)return;let r;o.loading!==void 0&&(r=this.create({...o,promise:c,type:"loading",message:o.loading,description:typeof o.description!="function"?o.description:void 0}));const y=Promise.resolve(c instanceof Function?c():c);let v=r!==void 0,T;const E=y.then(async C=>{if(T=["resolve",C],_.isValidElement(C))v=!1,this.create({id:r,type:"default",message:C});else if(Vv(C)&&!C.ok){v=!1;const h=typeof o.error=="function"?await o.error(`HTTP error! status: ${C.status}`):o.error,R=typeof o.description=="function"?await o.description(`HTTP error! status: ${C.status}`):o.description,B=typeof h=="object"&&!_.isValidElement(h)?h:{message:h};this.create({id:r,type:"error",description:R,...B})}else if(C instanceof Error){v=!1;const h=typeof o.error=="function"?await o.error(C):o.error,R=typeof o.description=="function"?await o.description(C):o.description,B=typeof h=="object"&&!_.isValidElement(h)?h:{message:h};this.create({id:r,type:"error",description:R,...B})}else if(o.success!==void 0){v=!1;const h=typeof o.success=="function"?await o.success(C):o.success,R=typeof o.description=="function"?await o.description(C):o.description,B=typeof h=="object"&&!_.isValidElement(h)?h:{message:h};this.create({id:r,type:"success",description:R,...B})}}).catch(async C=>{if(T=["reject",C],o.error!==void 0){v=!1;const H=typeof o.error=="function"?await o.error(C):o.error,h=typeof o.description=="function"?await o.description(C):o.description,K=typeof H=="object"&&!_.isValidElement(H)?H:{message:H};this.create({id:r,type:"error",description:h,...K})}}).finally(()=>{v&&(this.dismiss(r),r=void 0),o.finally==null||o.finally.call(o)}),O=()=>new Promise((C,H)=>E.then(()=>T[0]==="reject"?H(T[1]):C(T[1])).catch(H));return typeof r!="string"&&typeof r!="number"?{unwrap:O}:Object.assign(r,{unwrap:O})},this.custom=(c,o)=>{const r=o?.id||ro++;return this.create({jsx:c(r),id:r,...o}),r},this.getActiveToasts=()=>this.toasts.filter(c=>!this.dismissedToasts.has(c.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Te=new Xv,Lv=(u,c)=>{const o=c?.id||ro++;return Te.addToast({title:u,...c,id:o}),o},Vv=u=>u&&typeof u=="object"&&"ok"in u&&typeof u.ok=="boolean"&&"status"in u&&typeof u.status=="number",Zv=Lv,Kv=()=>Te.toasts,Jv=()=>Te.getActiveToasts();Object.assign(Zv,{success:Te.success,info:Te.info,warning:Te.warning,error:Te.error,custom:Te.custom,message:Te.message,promise:Te.promise,dismiss:Te.dismiss,loading:Te.loading},{getHistory:Kv,getToasts:Jv});_v("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Ru(u){return u.label!==void 0}const kv=3,Fv="24px",Wv="16px",Ch=4e3,$v=356,Iv=14,Pv=45,tg=200;function na(...u){return u.filter(Boolean).join(" ")}function eg(u){const[c,o]=u.split("-"),r=[];return c&&r.push(c),o&&r.push(o),r}const ag=u=>{var c,o,r,y,v,T,E,O,C;const{invert:H,toast:h,unstyled:R,interacting:K,setHeights:B,visibleToasts:L,heights:P,index:X,toasts:St,expanded:st,removeToast:Tt,defaultRichColors:at,closeButton:k,style:At,cancelButtonStyle:q,actionButtonStyle:Ot,className:ue="",descriptionClassName:Gt="",duration:Dt,position:kt,gap:he,expandByDefault:Bt,classNames:S,icons:N,closeButtonAriaLabel:D="Close toast"}=u,[ct,et]=_.useState(null),[wt,dt]=_.useState(null),[U,Z]=_.useState(!1),[nt,_t]=_.useState(!1),[gt,ht]=_.useState(!1),[Ft,Ae]=_.useState(!1),[Me,se]=_.useState(!1),[pi,Ze]=_.useState(0),[gn,Al]=_.useState(0),tl=_.useRef(h.duration||Dt||Ch),pn=_.useRef(null),Oe=_.useRef(null),bn=X===0,Sn=X+1<=L,ce=h.type,Ma=h.dismissible!==!1,oe=h.className||"",Gu=h.descriptionClassName||"",el=_.useMemo(()=>P.findIndex(F=>F.toastId===h.id)||0,[P,h.id]),bi=_.useMemo(()=>{var F;return(F=h.closeButton)!=null?F:k},[h.closeButton,k]),al=_.useMemo(()=>h.duration||Dt||Ch,[h.duration,Dt]),xn=_.useRef(0),ua=_.useRef(0),Si=_.useRef(0),Oa=_.useRef(null),[ll,re]=kt.split("-"),Ke=_.useMemo(()=>P.reduce((F,Ut,Wt)=>Wt>=el?F:F+Ut.height,0),[P,el]),ne=Gv(),Xu=h.invert||H,zn=ce==="loading";ua.current=_.useMemo(()=>el*he+Ke,[el,Ke]),_.useEffect(()=>{tl.current=al},[al]),_.useEffect(()=>{Z(!0)},[]),_.useEffect(()=>{const F=Oe.current;if(F){const Ut=F.getBoundingClientRect().height;return Al(Ut),B(Wt=>[{toastId:h.id,height:Ut,position:h.position},...Wt]),()=>B(Wt=>Wt.filter(ie=>ie.toastId!==h.id))}},[B,h.id]),_.useLayoutEffect(()=>{if(!U)return;const F=Oe.current,Ut=F.style.height;F.style.height="auto";const Wt=F.getBoundingClientRect().height;F.style.height=Ut,Al(Wt),B(ie=>ie.find(Ht=>Ht.toastId===h.id)?ie.map(Ht=>Ht.toastId===h.id?{...Ht,height:Wt}:Ht):[{toastId:h.id,height:Wt,position:h.position},...ie])},[U,h.title,h.description,B,h.id,h.jsx,h.action,h.cancel]);const Ie=_.useCallback(()=>{_t(!0),Ze(ua.current),B(F=>F.filter(Ut=>Ut.toastId!==h.id)),setTimeout(()=>{Tt(h)},tg)},[h,Tt,B,ua]);_.useEffect(()=>{if(h.promise&&ce==="loading"||h.duration===1/0||h.type==="loading")return;let F;return st||K||ne?(()=>{if(Si.current{tl.current!==1/0&&(xn.current=new Date().getTime(),F=setTimeout(()=>{h.onAutoClose==null||h.onAutoClose.call(h,h),Ie()},tl.current))})(),()=>clearTimeout(F)},[st,K,h,ce,ne,Ie]),_.useEffect(()=>{h.delete&&(Ie(),h.onDismiss==null||h.onDismiss.call(h,h))},[Ie,h.delete]);function Ml(){var F;if(N?.loading){var Ut;return _.createElement("div",{className:na(S?.loader,h==null||(Ut=h.classNames)==null?void 0:Ut.loader,"sonner-loader"),"data-visible":ce==="loading"},N.loading)}return _.createElement(Hv,{className:na(S?.loader,h==null||(F=h.classNames)==null?void 0:F.loader),visible:ce==="loading"})}const Ol=h.icon||N?.[ce]||Uv(ce);var nl,Pe;return _.createElement("li",{tabIndex:0,ref:Oe,className:na(ue,oe,S?.toast,h==null||(c=h.classNames)==null?void 0:c.toast,S?.default,S?.[ce],h==null||(o=h.classNames)==null?void 0:o[ce]),"data-sonner-toast":"","data-rich-colors":(nl=h.richColors)!=null?nl:at,"data-styled":!(h.jsx||h.unstyled||R),"data-mounted":U,"data-promise":!!h.promise,"data-swiped":Me,"data-removed":nt,"data-visible":Sn,"data-y-position":ll,"data-x-position":re,"data-index":X,"data-front":bn,"data-swiping":gt,"data-dismissible":Ma,"data-type":ce,"data-invert":Xu,"data-swipe-out":Ft,"data-swipe-direction":wt,"data-expanded":!!(st||Bt&&U),"data-testid":h.testId,style:{"--index":X,"--toasts-before":X,"--z-index":St.length-X,"--offset":`${nt?pi:ua.current}px`,"--initial-height":Bt?"auto":`${gn}px`,...At,...h.style},onDragEnd:()=>{ht(!1),et(null),Oa.current=null},onPointerDown:F=>{F.button!==2&&(zn||!Ma||(pn.current=new Date,Ze(ua.current),F.target.setPointerCapture(F.pointerId),F.target.tagName!=="BUTTON"&&(ht(!0),Oa.current={x:F.clientX,y:F.clientY})))},onPointerUp:()=>{var F,Ut,Wt;if(Ft||!Ma)return;Oa.current=null;const ie=Number(((F=Oe.current)==null?void 0:F.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),wa=Number(((Ut=Oe.current)==null?void 0:Ut.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Ht=new Date().getTime()-((Wt=pn.current)==null?void 0:Wt.getTime()),me=ct==="x"?ie:wa,il=Math.abs(me)/Ht;if(Math.abs(me)>=Pv||il>.11){Ze(ua.current),h.onDismiss==null||h.onDismiss.call(h,h),dt(ct==="x"?ie>0?"right":"left":wa>0?"down":"up"),Ie(),Ae(!0);return}else{var ye,ve;(ye=Oe.current)==null||ye.style.setProperty("--swipe-amount-x","0px"),(ve=Oe.current)==null||ve.style.setProperty("--swipe-amount-y","0px")}se(!1),ht(!1),et(null)},onPointerMove:F=>{var Ut,Wt,ie;if(!Oa.current||!Ma||((Ut=window.getSelection())==null?void 0:Ut.toString().length)>0)return;const Ht=F.clientY-Oa.current.y,me=F.clientX-Oa.current.x;var il;const ye=(il=u.swipeDirections)!=null?il:eg(kt);!ct&&(Math.abs(me)>1||Math.abs(Ht)>1)&&et(Math.abs(me)>Math.abs(Ht)?"x":"y");let ve={x:0,y:0};const wl=Je=>1/(1.5+Math.abs(Je)/20);if(ct==="y"){if(ye.includes("top")||ye.includes("bottom"))if(ye.includes("top")&&Ht<0||ye.includes("bottom")&&Ht>0)ve.y=Ht;else{const Je=Ht*wl(Ht);ve.y=Math.abs(Je)0)ve.x=me;else{const Je=me*wl(me);ve.x=Math.abs(Je)0||Math.abs(ve.y)>0)&&se(!0),(Wt=Oe.current)==null||Wt.style.setProperty("--swipe-amount-x",`${ve.x}px`),(ie=Oe.current)==null||ie.style.setProperty("--swipe-amount-y",`${ve.y}px`)}},bi&&!h.jsx&&ce!=="loading"?_.createElement("button",{"aria-label":D,"data-disabled":zn,"data-close-button":!0,onClick:zn||!Ma?()=>{}:()=>{Ie(),h.onDismiss==null||h.onDismiss.call(h,h)},className:na(S?.closeButton,h==null||(r=h.classNames)==null?void 0:r.closeButton)},(Pe=N?.close)!=null?Pe:Yv):null,(ce||h.icon||h.promise)&&h.icon!==null&&(N?.[ce]!==null||h.icon)?_.createElement("div",{"data-icon":"",className:na(S?.icon,h==null||(y=h.classNames)==null?void 0:y.icon)},h.promise||h.type==="loading"&&!h.icon?h.icon||Ml():null,h.type!=="loading"?Ol:null):null,_.createElement("div",{"data-content":"",className:na(S?.content,h==null||(v=h.classNames)==null?void 0:v.content)},_.createElement("div",{"data-title":"",className:na(S?.title,h==null||(T=h.classNames)==null?void 0:T.title)},h.jsx?h.jsx:typeof h.title=="function"?h.title():h.title),h.description?_.createElement("div",{"data-description":"",className:na(Gt,Gu,S?.description,h==null||(E=h.classNames)==null?void 0:E.description)},typeof h.description=="function"?h.description():h.description):null),_.isValidElement(h.cancel)?h.cancel:h.cancel&&Ru(h.cancel)?_.createElement("button",{"data-button":!0,"data-cancel":!0,style:h.cancelButtonStyle||q,onClick:F=>{Ru(h.cancel)&&Ma&&(h.cancel.onClick==null||h.cancel.onClick.call(h.cancel,F),Ie())},className:na(S?.cancelButton,h==null||(O=h.classNames)==null?void 0:O.cancelButton)},h.cancel.label):null,_.isValidElement(h.action)?h.action:h.action&&Ru(h.action)?_.createElement("button",{"data-button":!0,"data-action":!0,style:h.actionButtonStyle||Ot,onClick:F=>{Ru(h.action)&&(h.action.onClick==null||h.action.onClick.call(h.action,F),!F.defaultPrevented&&Ie())},className:na(S?.actionButton,h==null||(C=h.classNames)==null?void 0:C.actionButton)},h.action.label):null)};function Nh(){if(typeof window>"u"||typeof document>"u")return"ltr";const u=document.documentElement.getAttribute("dir");return u==="auto"||!u?window.getComputedStyle(document.documentElement).direction:u}function lg(u,c){const o={};return[u,c].forEach((r,y)=>{const v=y===1,T=v?"--mobile-offset":"--offset",E=v?Wv:Fv;function O(C){["top","right","bottom","left"].forEach(H=>{o[`${T}-${H}`]=typeof C=="number"?`${C}px`:C})}typeof r=="number"||typeof r=="string"?O(r):typeof r=="object"?["top","right","bottom","left"].forEach(C=>{r[C]===void 0?o[`${T}-${C}`]=E:o[`${T}-${C}`]=typeof r[C]=="number"?`${r[C]}px`:r[C]}):O(E)}),o}const ng=_.forwardRef(function(c,o){const{id:r,invert:y,position:v="bottom-right",hotkey:T=["altKey","KeyT"],expand:E,closeButton:O,className:C,offset:H,mobileOffset:h,theme:R="light",richColors:K,duration:B,style:L,visibleToasts:P=kv,toastOptions:X,dir:St=Nh(),gap:st=Iv,icons:Tt,containerAriaLabel:at="Notifications"}=c,[k,At]=_.useState([]),q=_.useMemo(()=>r?k.filter(U=>U.toasterId===r):k.filter(U=>!U.toasterId),[k,r]),Ot=_.useMemo(()=>Array.from(new Set([v].concat(q.filter(U=>U.position).map(U=>U.position)))),[q,v]),[ue,Gt]=_.useState([]),[Dt,kt]=_.useState(!1),[he,Bt]=_.useState(!1),[S,N]=_.useState(R!=="system"?R:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),D=_.useRef(null),ct=T.join("+").replace(/Key/g,"").replace(/Digit/g,""),et=_.useRef(null),wt=_.useRef(!1),dt=_.useCallback(U=>{At(Z=>{var nt;return(nt=Z.find(_t=>_t.id===U.id))!=null&&nt.delete||Te.dismiss(U.id),Z.filter(({id:_t})=>_t!==U.id)})},[]);return _.useEffect(()=>Te.subscribe(U=>{if(U.dismiss){requestAnimationFrame(()=>{At(Z=>Z.map(nt=>nt.id===U.id?{...nt,delete:!0}:nt))});return}setTimeout(()=>{Sy.flushSync(()=>{At(Z=>{const nt=Z.findIndex(_t=>_t.id===U.id);return nt!==-1?[...Z.slice(0,nt),{...Z[nt],...U},...Z.slice(nt+1)]:[U,...Z]})})})}),[k]),_.useEffect(()=>{if(R!=="system"){N(R);return}if(R==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?N("dark"):N("light")),typeof window>"u")return;const U=window.matchMedia("(prefers-color-scheme: dark)");try{U.addEventListener("change",({matches:Z})=>{N(Z?"dark":"light")})}catch{U.addListener(({matches:nt})=>{try{N(nt?"dark":"light")}catch(_t){console.error(_t)}})}},[R]),_.useEffect(()=>{k.length<=1&&kt(!1)},[k]),_.useEffect(()=>{const U=Z=>{var nt;if(T.every(ht=>Z[ht]||Z.code===ht)){var gt;kt(!0),(gt=D.current)==null||gt.focus()}Z.code==="Escape"&&(document.activeElement===D.current||(nt=D.current)!=null&&nt.contains(document.activeElement))&&kt(!1)};return document.addEventListener("keydown",U),()=>document.removeEventListener("keydown",U)},[T]),_.useEffect(()=>{if(D.current)return()=>{et.current&&(et.current.focus({preventScroll:!0}),et.current=null,wt.current=!1)}},[D.current]),_.createElement("section",{ref:o,"aria-label":`${at} ${ct}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},Ot.map((U,Z)=>{var nt;const[_t,gt]=U.split("-");return q.length?_.createElement("ol",{key:U,dir:St==="auto"?Nh():St,tabIndex:-1,ref:D,className:C,"data-sonner-toaster":!0,"data-sonner-theme":S,"data-y-position":_t,"data-x-position":gt,style:{"--front-toast-height":`${((nt=ue[0])==null?void 0:nt.height)||0}px`,"--width":`${$v}px`,"--gap":`${st}px`,...L,...lg(H,h)},onBlur:ht=>{wt.current&&!ht.currentTarget.contains(ht.relatedTarget)&&(wt.current=!1,et.current&&(et.current.focus({preventScroll:!0}),et.current=null))},onFocus:ht=>{ht.target instanceof HTMLElement&&ht.target.dataset.dismissible==="false"||wt.current||(wt.current=!0,et.current=ht.relatedTarget)},onMouseEnter:()=>kt(!0),onMouseMove:()=>kt(!0),onMouseLeave:()=>{he||kt(!1)},onDragEnd:()=>kt(!1),onPointerDown:ht=>{ht.target instanceof HTMLElement&&ht.target.dataset.dismissible==="false"||Bt(!0)},onPointerUp:()=>Bt(!1)},q.filter(ht=>!ht.position&&Z===0||ht.position===U).map((ht,Ft)=>{var Ae,Me;return _.createElement(ag,{key:ht.id,icons:Tt,index:Ft,toast:ht,defaultRichColors:K,duration:(Ae=X?.duration)!=null?Ae:B,className:X?.className,descriptionClassName:X?.descriptionClassName,invert:y,visibleToasts:P,closeButton:(Me=X?.closeButton)!=null?Me:O,interacting:he,position:U,style:X?.style,unstyled:X?.unstyled,classNames:X?.classNames,cancelButtonStyle:X?.cancelButtonStyle,actionButtonStyle:X?.actionButtonStyle,closeButtonAriaLabel:X?.closeButtonAriaLabel,removeToast:dt,toasts:q.filter(se=>se.position==ht.position),heights:ue.filter(se=>se.position==ht.position),setHeights:Gt,expandByDefault:E,gap:st,expanded:Dt,swipeDirections:c.swipeDirections})})):null}))}),ig=({...u})=>{const{theme:c="system"}=ov();return I.jsx(ng,{theme:c,className:"toaster group",icons:{success:I.jsx(Ev,{className:"size-4"}),info:I.jsx(Av,{className:"size-4"}),warning:I.jsx(Nv,{className:"size-4"}),error:I.jsx(Dv,{className:"size-4"}),loading:I.jsx(Ov,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},...u})},ug=new lv,sg=({children:u})=>I.jsx(iv,{client:ug,children:I.jsxs(vv,{defaultTheme:"system",storageKey:"dragon-theme",children:[u,I.jsx(ig,{richColors:!0,expand:!0,position:"top-center"})]})});function Fh(u){var c,o,r="";if(typeof u=="string"||typeof u=="number")r+=u;else if(typeof u=="object")if(Array.isArray(u)){var y=u.length;for(c=0;c{const c=rg(u),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=u;return{getClassGroupId:T=>{const E=T.split(xo);return E[0]===""&&E.length!==1&&E.shift(),$h(E,c)||og(T)},getConflictingClassGroupIds:(T,E)=>{const O=o[T]||[];return E&&r[T]?[...O,...r[T]]:O}}},$h=(u,c)=>{if(u.length===0)return c.classGroupId;const o=u[0],r=c.nextPart.get(o),y=r?$h(u.slice(1),r):void 0;if(y)return y;if(c.validators.length===0)return;const v=u.join(xo);return c.validators.find(({validator:T})=>T(v))?.classGroupId},_h=/^\[(.+)\]$/,og=u=>{if(_h.test(u)){const c=_h.exec(u)[1],o=c?.substring(0,c.indexOf(":"));if(o)return"arbitrary.."+o}},rg=u=>{const{theme:c,classGroups:o}=u,r={nextPart:new Map,validators:[]};for(const y in o)fo(o[y],r,y,c);return r},fo=(u,c,o,r)=>{u.forEach(y=>{if(typeof y=="string"){const v=y===""?c:Uh(c,y);v.classGroupId=o;return}if(typeof y=="function"){if(fg(y)){fo(y(r),c,o,r);return}c.validators.push({validator:y,classGroupId:o});return}Object.entries(y).forEach(([v,T])=>{fo(T,Uh(c,v),o,r)})})},Uh=(u,c)=>{let o=u;return c.split(xo).forEach(r=>{o.nextPart.has(r)||o.nextPart.set(r,{nextPart:new Map,validators:[]}),o=o.nextPart.get(r)}),o},fg=u=>u.isThemeGetter,dg=u=>{if(u<1)return{get:()=>{},set:()=>{}};let c=0,o=new Map,r=new Map;const y=(v,T)=>{o.set(v,T),c++,c>u&&(c=0,r=o,o=new Map)};return{get(v){let T=o.get(v);if(T!==void 0)return T;if((T=r.get(v))!==void 0)return y(v,T),T},set(v,T){o.has(v)?o.set(v,T):y(v,T)}}},ho="!",mo=":",hg=mo.length,mg=u=>{const{prefix:c,experimentalParseClassName:o}=u;let r=y=>{const v=[];let T=0,E=0,O=0,C;for(let B=0;BO?C-O:void 0;return{modifiers:v,hasImportantModifier:R,baseClassName:h,maybePostfixModifierPosition:K}};if(c){const y=c+mo,v=r;r=T=>T.startsWith(y)?v(T.substring(y.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:T,maybePostfixModifierPosition:void 0}}if(o){const y=r;r=v=>o({className:v,parseClassName:y})}return r},yg=u=>u.endsWith(ho)?u.substring(0,u.length-1):u.startsWith(ho)?u.substring(1):u,vg=u=>{const c=Object.fromEntries(u.orderSensitiveModifiers.map(r=>[r,!0]));return r=>{if(r.length<=1)return r;const y=[];let v=[];return r.forEach(T=>{T[0]==="["||c[T]?(y.push(...v.sort(),T),v=[]):v.push(T)}),y.push(...v.sort()),y}},gg=u=>({cache:dg(u.cacheSize),parseClassName:mg(u),sortModifiers:vg(u),...cg(u)}),pg=/\s+/,bg=(u,c)=>{const{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:y,sortModifiers:v}=c,T=[],E=u.trim().split(pg);let O="";for(let C=E.length-1;C>=0;C-=1){const H=E[C],{isExternal:h,modifiers:R,hasImportantModifier:K,baseClassName:B,maybePostfixModifierPosition:L}=o(H);if(h){O=H+(O.length>0?" "+O:O);continue}let P=!!L,X=r(P?B.substring(0,L):B);if(!X){if(!P){O=H+(O.length>0?" "+O:O);continue}if(X=r(B),!X){O=H+(O.length>0?" "+O:O);continue}P=!1}const St=v(R).join(":"),st=K?St+ho:St,Tt=st+X;if(T.includes(Tt))continue;T.push(Tt);const at=y(X,P);for(let k=0;k0?" "+O:O)}return O};function Sg(){let u=0,c,o,r="";for(;u{if(typeof u=="string")return u;let c,o="";for(let r=0;rh(H),u());return o=gg(C),r=o.cache.get,y=o.cache.set,v=E,E(O)}function E(O){const C=r(O);if(C)return C;const H=bg(O,o);return y(O,H),H}return function(){return v(Sg.apply(null,arguments))}}const Jt=u=>{const c=o=>o[u]||[];return c.isThemeGetter=!0,c},Ph=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,tm=/^\((?:(\w[\w-]*):)?(.+)\)$/i,zg=/^\d+\/\d+$/,Eg=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Tg=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ag=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Mg=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Og=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,mn=u=>zg.test(u),lt=u=>!!u&&!Number.isNaN(Number(u)),Pa=u=>!!u&&Number.isInteger(Number(u)),no=u=>u.endsWith("%")&<(u.slice(0,-1)),Aa=u=>Eg.test(u),wg=()=>!0,Dg=u=>Tg.test(u)&&!Ag.test(u),em=()=>!1,Cg=u=>Mg.test(u),Ng=u=>Og.test(u),_g=u=>!Q(u)&&!Y(u),Ug=u=>yn(u,nm,em),Q=u=>Ph.test(u),El=u=>yn(u,im,Dg),io=u=>yn(u,jg,lt),Rh=u=>yn(u,am,em),Rg=u=>yn(u,lm,Ng),Hu=u=>yn(u,um,Cg),Y=u=>tm.test(u),mi=u=>vn(u,im),Hg=u=>vn(u,Qg),Hh=u=>vn(u,am),Bg=u=>vn(u,nm),qg=u=>vn(u,lm),Bu=u=>vn(u,um,!0),yn=(u,c,o)=>{const r=Ph.exec(u);return r?r[1]?c(r[1]):o(r[2]):!1},vn=(u,c,o=!1)=>{const r=tm.exec(u);return r?r[1]?c(r[1]):o:!1},am=u=>u==="position"||u==="percentage",lm=u=>u==="image"||u==="url",nm=u=>u==="length"||u==="size"||u==="bg-size",im=u=>u==="length",jg=u=>u==="number",Qg=u=>u==="family-name",um=u=>u==="shadow",Yg=()=>{const u=Jt("color"),c=Jt("font"),o=Jt("text"),r=Jt("font-weight"),y=Jt("tracking"),v=Jt("leading"),T=Jt("breakpoint"),E=Jt("container"),O=Jt("spacing"),C=Jt("radius"),H=Jt("shadow"),h=Jt("inset-shadow"),R=Jt("text-shadow"),K=Jt("drop-shadow"),B=Jt("blur"),L=Jt("perspective"),P=Jt("aspect"),X=Jt("ease"),St=Jt("animate"),st=()=>["auto","avoid","all","avoid-page","page","left","right","column"],Tt=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],at=()=>[...Tt(),Y,Q],k=()=>["auto","hidden","clip","visible","scroll"],At=()=>["auto","contain","none"],q=()=>[Y,Q,O],Ot=()=>[mn,"full","auto",...q()],ue=()=>[Pa,"none","subgrid",Y,Q],Gt=()=>["auto",{span:["full",Pa,Y,Q]},Pa,Y,Q],Dt=()=>[Pa,"auto",Y,Q],kt=()=>["auto","min","max","fr",Y,Q],he=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Bt=()=>["start","end","center","stretch","center-safe","end-safe"],S=()=>["auto",...q()],N=()=>[mn,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...q()],D=()=>[u,Y,Q],ct=()=>[...Tt(),Hh,Rh,{position:[Y,Q]}],et=()=>["no-repeat",{repeat:["","x","y","space","round"]}],wt=()=>["auto","cover","contain",Bg,Ug,{size:[Y,Q]}],dt=()=>[no,mi,El],U=()=>["","none","full",C,Y,Q],Z=()=>["",lt,mi,El],nt=()=>["solid","dashed","dotted","double"],_t=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],gt=()=>[lt,no,Hh,Rh],ht=()=>["","none",B,Y,Q],Ft=()=>["none",lt,Y,Q],Ae=()=>["none",lt,Y,Q],Me=()=>[lt,Y,Q],se=()=>[mn,"full",...q()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Aa],breakpoint:[Aa],color:[wg],container:[Aa],"drop-shadow":[Aa],ease:["in","out","in-out"],font:[_g],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Aa],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Aa],shadow:[Aa],spacing:["px",lt],text:[Aa],"text-shadow":[Aa],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",mn,Q,Y,P]}],container:["container"],columns:[{columns:[lt,Q,Y,E]}],"break-after":[{"break-after":st()}],"break-before":[{"break-before":st()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:at()}],overflow:[{overflow:k()}],"overflow-x":[{"overflow-x":k()}],"overflow-y":[{"overflow-y":k()}],overscroll:[{overscroll:At()}],"overscroll-x":[{"overscroll-x":At()}],"overscroll-y":[{"overscroll-y":At()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Ot()}],"inset-x":[{"inset-x":Ot()}],"inset-y":[{"inset-y":Ot()}],start:[{start:Ot()}],end:[{end:Ot()}],top:[{top:Ot()}],right:[{right:Ot()}],bottom:[{bottom:Ot()}],left:[{left:Ot()}],visibility:["visible","invisible","collapse"],z:[{z:[Pa,"auto",Y,Q]}],basis:[{basis:[mn,"full","auto",E,...q()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[lt,mn,"auto","initial","none",Q]}],grow:[{grow:["",lt,Y,Q]}],shrink:[{shrink:["",lt,Y,Q]}],order:[{order:[Pa,"first","last","none",Y,Q]}],"grid-cols":[{"grid-cols":ue()}],"col-start-end":[{col:Gt()}],"col-start":[{"col-start":Dt()}],"col-end":[{"col-end":Dt()}],"grid-rows":[{"grid-rows":ue()}],"row-start-end":[{row:Gt()}],"row-start":[{"row-start":Dt()}],"row-end":[{"row-end":Dt()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":kt()}],"auto-rows":[{"auto-rows":kt()}],gap:[{gap:q()}],"gap-x":[{"gap-x":q()}],"gap-y":[{"gap-y":q()}],"justify-content":[{justify:[...he(),"normal"]}],"justify-items":[{"justify-items":[...Bt(),"normal"]}],"justify-self":[{"justify-self":["auto",...Bt()]}],"align-content":[{content:["normal",...he()]}],"align-items":[{items:[...Bt(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Bt(),{baseline:["","last"]}]}],"place-content":[{"place-content":he()}],"place-items":[{"place-items":[...Bt(),"baseline"]}],"place-self":[{"place-self":["auto",...Bt()]}],p:[{p:q()}],px:[{px:q()}],py:[{py:q()}],ps:[{ps:q()}],pe:[{pe:q()}],pt:[{pt:q()}],pr:[{pr:q()}],pb:[{pb:q()}],pl:[{pl:q()}],m:[{m:S()}],mx:[{mx:S()}],my:[{my:S()}],ms:[{ms:S()}],me:[{me:S()}],mt:[{mt:S()}],mr:[{mr:S()}],mb:[{mb:S()}],ml:[{ml:S()}],"space-x":[{"space-x":q()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":q()}],"space-y-reverse":["space-y-reverse"],size:[{size:N()}],w:[{w:[E,"screen",...N()]}],"min-w":[{"min-w":[E,"screen","none",...N()]}],"max-w":[{"max-w":[E,"screen","none","prose",{screen:[T]},...N()]}],h:[{h:["screen","lh",...N()]}],"min-h":[{"min-h":["screen","lh","none",...N()]}],"max-h":[{"max-h":["screen","lh",...N()]}],"font-size":[{text:["base",o,mi,El]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Y,io]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",no,Q]}],"font-family":[{font:[Hg,Q,c]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[y,Y,Q]}],"line-clamp":[{"line-clamp":[lt,"none",Y,io]}],leading:[{leading:[v,...q()]}],"list-image":[{"list-image":["none",Y,Q]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Y,Q]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:D()}],"text-color":[{text:D()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...nt(),"wavy"]}],"text-decoration-thickness":[{decoration:[lt,"from-font","auto",Y,El]}],"text-decoration-color":[{decoration:D()}],"underline-offset":[{"underline-offset":[lt,"auto",Y,Q]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:q()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Y,Q]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Y,Q]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ct()}],"bg-repeat":[{bg:et()}],"bg-size":[{bg:wt()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Pa,Y,Q],radial:["",Y,Q],conic:[Pa,Y,Q]},qg,Rg]}],"bg-color":[{bg:D()}],"gradient-from-pos":[{from:dt()}],"gradient-via-pos":[{via:dt()}],"gradient-to-pos":[{to:dt()}],"gradient-from":[{from:D()}],"gradient-via":[{via:D()}],"gradient-to":[{to:D()}],rounded:[{rounded:U()}],"rounded-s":[{"rounded-s":U()}],"rounded-e":[{"rounded-e":U()}],"rounded-t":[{"rounded-t":U()}],"rounded-r":[{"rounded-r":U()}],"rounded-b":[{"rounded-b":U()}],"rounded-l":[{"rounded-l":U()}],"rounded-ss":[{"rounded-ss":U()}],"rounded-se":[{"rounded-se":U()}],"rounded-ee":[{"rounded-ee":U()}],"rounded-es":[{"rounded-es":U()}],"rounded-tl":[{"rounded-tl":U()}],"rounded-tr":[{"rounded-tr":U()}],"rounded-br":[{"rounded-br":U()}],"rounded-bl":[{"rounded-bl":U()}],"border-w":[{border:Z()}],"border-w-x":[{"border-x":Z()}],"border-w-y":[{"border-y":Z()}],"border-w-s":[{"border-s":Z()}],"border-w-e":[{"border-e":Z()}],"border-w-t":[{"border-t":Z()}],"border-w-r":[{"border-r":Z()}],"border-w-b":[{"border-b":Z()}],"border-w-l":[{"border-l":Z()}],"divide-x":[{"divide-x":Z()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Z()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...nt(),"hidden","none"]}],"divide-style":[{divide:[...nt(),"hidden","none"]}],"border-color":[{border:D()}],"border-color-x":[{"border-x":D()}],"border-color-y":[{"border-y":D()}],"border-color-s":[{"border-s":D()}],"border-color-e":[{"border-e":D()}],"border-color-t":[{"border-t":D()}],"border-color-r":[{"border-r":D()}],"border-color-b":[{"border-b":D()}],"border-color-l":[{"border-l":D()}],"divide-color":[{divide:D()}],"outline-style":[{outline:[...nt(),"none","hidden"]}],"outline-offset":[{"outline-offset":[lt,Y,Q]}],"outline-w":[{outline:["",lt,mi,El]}],"outline-color":[{outline:D()}],shadow:[{shadow:["","none",H,Bu,Hu]}],"shadow-color":[{shadow:D()}],"inset-shadow":[{"inset-shadow":["none",h,Bu,Hu]}],"inset-shadow-color":[{"inset-shadow":D()}],"ring-w":[{ring:Z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:D()}],"ring-offset-w":[{"ring-offset":[lt,El]}],"ring-offset-color":[{"ring-offset":D()}],"inset-ring-w":[{"inset-ring":Z()}],"inset-ring-color":[{"inset-ring":D()}],"text-shadow":[{"text-shadow":["none",R,Bu,Hu]}],"text-shadow-color":[{"text-shadow":D()}],opacity:[{opacity:[lt,Y,Q]}],"mix-blend":[{"mix-blend":[..._t(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":_t()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[lt]}],"mask-image-linear-from-pos":[{"mask-linear-from":gt()}],"mask-image-linear-to-pos":[{"mask-linear-to":gt()}],"mask-image-linear-from-color":[{"mask-linear-from":D()}],"mask-image-linear-to-color":[{"mask-linear-to":D()}],"mask-image-t-from-pos":[{"mask-t-from":gt()}],"mask-image-t-to-pos":[{"mask-t-to":gt()}],"mask-image-t-from-color":[{"mask-t-from":D()}],"mask-image-t-to-color":[{"mask-t-to":D()}],"mask-image-r-from-pos":[{"mask-r-from":gt()}],"mask-image-r-to-pos":[{"mask-r-to":gt()}],"mask-image-r-from-color":[{"mask-r-from":D()}],"mask-image-r-to-color":[{"mask-r-to":D()}],"mask-image-b-from-pos":[{"mask-b-from":gt()}],"mask-image-b-to-pos":[{"mask-b-to":gt()}],"mask-image-b-from-color":[{"mask-b-from":D()}],"mask-image-b-to-color":[{"mask-b-to":D()}],"mask-image-l-from-pos":[{"mask-l-from":gt()}],"mask-image-l-to-pos":[{"mask-l-to":gt()}],"mask-image-l-from-color":[{"mask-l-from":D()}],"mask-image-l-to-color":[{"mask-l-to":D()}],"mask-image-x-from-pos":[{"mask-x-from":gt()}],"mask-image-x-to-pos":[{"mask-x-to":gt()}],"mask-image-x-from-color":[{"mask-x-from":D()}],"mask-image-x-to-color":[{"mask-x-to":D()}],"mask-image-y-from-pos":[{"mask-y-from":gt()}],"mask-image-y-to-pos":[{"mask-y-to":gt()}],"mask-image-y-from-color":[{"mask-y-from":D()}],"mask-image-y-to-color":[{"mask-y-to":D()}],"mask-image-radial":[{"mask-radial":[Y,Q]}],"mask-image-radial-from-pos":[{"mask-radial-from":gt()}],"mask-image-radial-to-pos":[{"mask-radial-to":gt()}],"mask-image-radial-from-color":[{"mask-radial-from":D()}],"mask-image-radial-to-color":[{"mask-radial-to":D()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":Tt()}],"mask-image-conic-pos":[{"mask-conic":[lt]}],"mask-image-conic-from-pos":[{"mask-conic-from":gt()}],"mask-image-conic-to-pos":[{"mask-conic-to":gt()}],"mask-image-conic-from-color":[{"mask-conic-from":D()}],"mask-image-conic-to-color":[{"mask-conic-to":D()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ct()}],"mask-repeat":[{mask:et()}],"mask-size":[{mask:wt()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Y,Q]}],filter:[{filter:["","none",Y,Q]}],blur:[{blur:ht()}],brightness:[{brightness:[lt,Y,Q]}],contrast:[{contrast:[lt,Y,Q]}],"drop-shadow":[{"drop-shadow":["","none",K,Bu,Hu]}],"drop-shadow-color":[{"drop-shadow":D()}],grayscale:[{grayscale:["",lt,Y,Q]}],"hue-rotate":[{"hue-rotate":[lt,Y,Q]}],invert:[{invert:["",lt,Y,Q]}],saturate:[{saturate:[lt,Y,Q]}],sepia:[{sepia:["",lt,Y,Q]}],"backdrop-filter":[{"backdrop-filter":["","none",Y,Q]}],"backdrop-blur":[{"backdrop-blur":ht()}],"backdrop-brightness":[{"backdrop-brightness":[lt,Y,Q]}],"backdrop-contrast":[{"backdrop-contrast":[lt,Y,Q]}],"backdrop-grayscale":[{"backdrop-grayscale":["",lt,Y,Q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[lt,Y,Q]}],"backdrop-invert":[{"backdrop-invert":["",lt,Y,Q]}],"backdrop-opacity":[{"backdrop-opacity":[lt,Y,Q]}],"backdrop-saturate":[{"backdrop-saturate":[lt,Y,Q]}],"backdrop-sepia":[{"backdrop-sepia":["",lt,Y,Q]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":q()}],"border-spacing-x":[{"border-spacing-x":q()}],"border-spacing-y":[{"border-spacing-y":q()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Y,Q]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[lt,"initial",Y,Q]}],ease:[{ease:["linear","initial",X,Y,Q]}],delay:[{delay:[lt,Y,Q]}],animate:[{animate:["none",St,Y,Q]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[L,Y,Q]}],"perspective-origin":[{"perspective-origin":at()}],rotate:[{rotate:Ft()}],"rotate-x":[{"rotate-x":Ft()}],"rotate-y":[{"rotate-y":Ft()}],"rotate-z":[{"rotate-z":Ft()}],scale:[{scale:Ae()}],"scale-x":[{"scale-x":Ae()}],"scale-y":[{"scale-y":Ae()}],"scale-z":[{"scale-z":Ae()}],"scale-3d":["scale-3d"],skew:[{skew:Me()}],"skew-x":[{"skew-x":Me()}],"skew-y":[{"skew-y":Me()}],transform:[{transform:[Y,Q,"","none","gpu","cpu"]}],"transform-origin":[{origin:at()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:se()}],"translate-x":[{"translate-x":se()}],"translate-y":[{"translate-y":se()}],"translate-z":[{"translate-z":se()}],"translate-none":["translate-none"],accent:[{accent:D()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:D()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Y,Q]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":q()}],"scroll-mx":[{"scroll-mx":q()}],"scroll-my":[{"scroll-my":q()}],"scroll-ms":[{"scroll-ms":q()}],"scroll-me":[{"scroll-me":q()}],"scroll-mt":[{"scroll-mt":q()}],"scroll-mr":[{"scroll-mr":q()}],"scroll-mb":[{"scroll-mb":q()}],"scroll-ml":[{"scroll-ml":q()}],"scroll-p":[{"scroll-p":q()}],"scroll-px":[{"scroll-px":q()}],"scroll-py":[{"scroll-py":q()}],"scroll-ps":[{"scroll-ps":q()}],"scroll-pe":[{"scroll-pe":q()}],"scroll-pt":[{"scroll-pt":q()}],"scroll-pr":[{"scroll-pr":q()}],"scroll-pb":[{"scroll-pb":q()}],"scroll-pl":[{"scroll-pl":q()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Y,Q]}],fill:[{fill:["none",...D()]}],"stroke-w":[{stroke:[lt,mi,El,io]}],stroke:[{stroke:["none",...D()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Gg=xg(Yg);function Tl(...u){return Gg(Wh(u))}function Xg({className:u,...c}){return I.jsx("div",{"data-slot":"card",className:Tl("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",u),...c})}function Lg({className:u,...c}){return I.jsx("div",{"data-slot":"card-header",className:Tl("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",u),...c})}function Vg({className:u,...c}){return I.jsx("div",{"data-slot":"card-title",className:Tl("leading-none font-semibold",u),...c})}function Zg({className:u,...c}){return I.jsx("div",{"data-slot":"card-description",className:Tl("text-muted-foreground text-sm",u),...c})}function Kg({className:u,...c}){return I.jsx("div",{"data-slot":"card-content",className:Tl("px-6",u),...c})}function Bh(u,c){if(typeof u=="function")return u(c);u!=null&&(u.current=c)}function Jg(...u){return c=>{let o=!1;const r=u.map(y=>{const v=Bh(y,c);return!o&&typeof v=="function"&&(o=!0),v});if(o)return()=>{for(let y=0;y{const{children:v,...T}=r,E=W.Children.toArray(v),O=E.find(Ig);if(O){const C=O.props.children,H=E.map(h=>h===O?W.Children.count(C)>1?W.Children.only(null):W.isValidElement(C)?C.props.children:null:h);return I.jsx(c,{...T,ref:y,children:W.isValidElement(C)?W.cloneElement(C,void 0,H):null})}return I.jsx(c,{...T,ref:y,children:v})});return o.displayName=`${u}.Slot`,o}var Fg=kg("Slot");function Wg(u){const c=W.forwardRef((o,r)=>{const{children:y,...v}=o;if(W.isValidElement(y)){const T=tp(y),E=Pg(v,y.props);return y.type!==W.Fragment&&(E.ref=r?Jg(r,T):T),W.cloneElement(y,E)}return W.Children.count(y)>1?W.Children.only(null):null});return c.displayName=`${u}.SlotClone`,c}var $g=Symbol("radix.slottable");function Ig(u){return W.isValidElement(u)&&typeof u.type=="function"&&"__radixId"in u.type&&u.type.__radixId===$g}function Pg(u,c){const o={...c};for(const r in c){const y=u[r],v=c[r];/^on[A-Z]/.test(r)?y&&v?o[r]=(...E)=>{const O=v(...E);return y(...E),O}:y&&(o[r]=y):r==="style"?o[r]={...y,...v}:r==="className"&&(o[r]=[y,v].filter(Boolean).join(" "))}return{...u,...o}}function tp(u){let c=Object.getOwnPropertyDescriptor(u.props,"ref")?.get,o=c&&"isReactWarning"in c&&c.isReactWarning;return o?u.ref:(c=Object.getOwnPropertyDescriptor(u,"ref")?.get,o=c&&"isReactWarning"in c&&c.isReactWarning,o?u.props.ref:u.props.ref||u.ref)}const qh=u=>typeof u=="boolean"?`${u}`:u===0?"0":u,jh=Wh,ep=(u,c)=>o=>{var r;if(c?.variants==null)return jh(u,o?.class,o?.className);const{variants:y,defaultVariants:v}=c,T=Object.keys(y).map(C=>{const H=o?.[C],h=v?.[C];if(H===null)return null;const R=qh(H)||qh(h);return y[C][R]}),E=o&&Object.entries(o).reduce((C,H)=>{let[h,R]=H;return R===void 0||(C[h]=R),C},{}),O=c==null||(r=c.compoundVariants)===null||r===void 0?void 0:r.reduce((C,H)=>{let{class:h,className:R,...K}=H;return Object.entries(K).every(B=>{let[L,P]=B;return Array.isArray(P)?P.includes({...v,...E}[L]):{...v,...E}[L]===P})?[...C,h,R]:C},[]);return jh(u,T,O,o?.class,o?.className)},ap=ep("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function lp({className:u,variant:c,size:o,asChild:r=!1,...y}){const v=r?Fg:"button";return I.jsx(v,{"data-slot":"button",className:Tl(ap({variant:c,size:o,className:u})),...y})}const ju="autoglue.tokens",yo="autoglue.auth-change";let ia=vo();function vo(){try{const u=localStorage.getItem(ju);return u?JSON.parse(u):null}catch{return null}}function np(u){u?localStorage.setItem(ju,JSON.stringify(u)):localStorage.removeItem(ju)}function ip(u){window.dispatchEvent(new CustomEvent(yo,{detail:u}))}const go={get(){return ia},set(u){ia=u,np(u),ip(u)},reload(){return ia=vo(),ia},isAuthed(){return!!ia?.access_token},getAccessToken(){return ia?.access_token??null},isExpired(u=Math.floor(Date.now()/1e3)){const c=Qh(ia?.access_token);return c!==null?u>=c:!0},willExpireSoon(u=60,c=Math.floor(Date.now()/1e3)){const o=Qh(ia?.access_token);return o!==null?o-c<=u:!0},logout(){go.set(null)},subscribe(u){const c=r=>u(r.detail??null),o=r=>{r.key===ju&&(ia=vo(),u(ia))};return window.addEventListener(yo,c),window.addEventListener("storage",o),()=>{window.removeEventListener(yo,c),window.removeEventListener("storage",o)}}};function Qh(u){if(!u)return null;const c=u.split(".");if(c.length<2)return null;try{const o=JSON.parse(atob(up(c[1])));return(typeof o?.exp=="number"?o.exp:null)??null}catch{return null}}function up(u){return u.replace(/-/g,"+").replace(/_/g,"/")+"==".slice((2-u.length*3%4)%4)}const sp="autoglue.org";localStorage.getItem(sp);const cp="/api/v1";function op(u,c="gsot-auth",o=520,r=640){const y=window.top.outerHeight/2+window.top.screenY-r/2,v=window.top.outerWidth/2+window.top.screenX-o/2;return window.open(u,c,`toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=${o},height=${r},top=${y},left=${v}`)}async function rp(u){const c=new URLSearchParams({mode:"spa",origin:window.location.origin}),o=await fetch(`${cp}/auth/${u}/start?`+c,{method:"POST"});if(!o.ok)throw new Error("Failed to start auth");return(await o.json()).auth_url}const Yh=()=>{const u=xy(),c=zy(),o=W.useMemo(()=>{const y=new URLSearchParams(c.search).get("to")||"/me";try{const v=new URL(y,window.location.origin);return v.origin===window.location.origin?v.pathname+v.search:"/me"}catch{return"/me"}},[c.search]);W.useEffect(()=>{go.get()?.access_token&&u(o,{replace:!0})},[u,o]),W.useEffect(()=>{const y=v=>{if(!(typeof v.data=="object"&&v.data?.type==="gsot:auth"))return;const E=v.data.payload;go.set(E),u(o,{replace:!0})};return window.addEventListener("message",y),()=>window.removeEventListener("message",y)},[u,o]);const r=async y=>{const v=await rp(y);op(v)||alert("Please allow popups to sign in.")};return I.jsx("div",{className:"flex items-center justify-center mx-auto p-4",children:I.jsxs(Xg,{className:"w-full max-w-md",children:[I.jsxs(Lg,{children:[I.jsx(Vg,{className:"text-lg md:text-xl",children:"Sign In"}),I.jsx(Zg,{className:"text-xs md:text-sm",children:"Continue with a provider below to access your account."})]}),I.jsx(Kg,{children:I.jsx("div",{className:"grid gap-4",children:I.jsx("div",{className:Tl("w-full gap-2 flex items-center","justify-between flex-col"),children:I.jsxs(lp,{variant:"outline",className:"w-full gap-2",onClick:()=>r("google"),children:[I.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"0.98em",height:"1em",viewBox:"0 0 256 262","aria-hidden":"true",focusable:"false",children:[I.jsx("path",{fill:"#4285F4",d:"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027"}),I.jsx("path",{fill:"#34A853",d:"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1"}),I.jsx("path",{fill:"#FBBC05",d:"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z"}),I.jsx("path",{fill:"#EB4335",d:"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251"})]}),"Sign in with Google"]})})})})]})})};function fp(){return I.jsxs(Ey,{children:[I.jsx(mh,{path:"/login",element:I.jsx(Yh,{})}),I.jsx(mh,{path:"*",element:I.jsx(Yh,{})})]})}Ny.createRoot(document.getElementById("root")).render(I.jsx(W.StrictMode,{children:I.jsx(Ty,{children:I.jsx(sg,{children:I.jsx(fp,{})})})})); +//# sourceMappingURL=index-CFwByDWI.js.map diff --git a/internal/web/dist/assets/index-CFwByDWI.js.br b/internal/web/dist/assets/index-CFwByDWI.js.br new file mode 100644 index 0000000000000000000000000000000000000000..99e0bd599ad0ec3865babb27a0e10c4cbbd59ad3 GIT binary patch literal 75872 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 aG3dV6MmCg_61JE+H-=u@K>#SO-!Z)YUWq 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 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" ()\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$1) {\n control = x$1;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"\") &&\n (frame = frame.replace(\"\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = workInProgress),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n return lanes & 261888;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n track(element);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n track(element);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$286;\n if (canUseDOM) {\n var isSupported$jscomp$inline_427 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_427) {\n var element$jscomp$inline_428 = document.createElement(\"div\");\n element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_427 =\n \"function\" === typeof element$jscomp$inline_428.oninput;\n }\n JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n } else JSCompiler_inline_result$jscomp$286 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$286 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n globalMostRecentTransitionTime = now();\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n (\"forwards\" === node.memoizedProps.revealOrder ||\n \"backwards\" === node.memoizedProps.revealOrder ||\n \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n \"together\" === node.memoizedProps.revealOrder)\n ) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$60 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n gesture: update.gesture,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$60 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$66) {\n onActionError(actionQueue, node, error$66);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (\n 0 === (renderLanes & 42) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$69 = enqueueUpdate(provider, fiber, lane);\n null !== root$69 &&\n (scheduleUpdateOnFiber(root$69, provider, lane),\n entangleTransitions(root$69, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\n }\n return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$74) {\n setTimeout(function () {\n throw e$74;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 31:\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 4096);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n var nextPrimaryChildren = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextPrimaryChildren },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.sibling = nextProps),\n (workInProgress.child = nextPrimaryChildren),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n }\n var prevState = current.memoizedState;\n if (\n null !== prevState &&\n ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n showFallback\n )),\n (nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = bailoutOffscreenComponent(null, nextProps)));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextPrimaryChildren))\n ) {\n JSCompiler_temp =\n nextPrimaryChildren.nextSibling &&\n nextPrimaryChildren.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n 0 !== nextProps && nextProps !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(nextPrimaryChildren) ||\n renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n isSuspenseInstancePending(nextPrimaryChildren)\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextPrimaryChildren.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (prevState = current.child),\n (digest = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n null !== digest\n ? (nextPrimaryChildren = createWorkInProgress(\n digest,\n nextPrimaryChildren\n ))\n : ((nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2)),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (nextPrimaryChildren = current.child.memoizedState),\n null === nextPrimaryChildren\n ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n : ((showFallback = nextPrimaryChildren.cachePool),\n null !== showFallback\n ? ((prevState = CacheContext._currentValue),\n (showFallback =\n showFallback.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : showFallback))\n : (showFallback = getSuspendedCache()),\n (nextPrimaryChildren = {\n baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n cachePool: showFallback\n })),\n (nextProps.memoizedState = nextPrimaryChildren),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode,\n treeForkCount\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n treeForkCount: treeForkCount\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode),\n (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current,\n shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n push(suspenseStackCursor, suspenseContext);\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode,\n nextProps\n );\n break;\n case \"backwards\":\n case \"unstable_legacy-backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$102 = workInProgress.memoizedState;\n if (null !== state$102) {\n if (null !== state$102.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state$102 = 0 !== (renderLanes & workInProgress.childLanes);\n state$102 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state$102)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state$102) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (props = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (props[internalInstanceKey] = workInProgress),\n (props[internalPropsKey] = current),\n setInitialProperties(props, renderLanes, current),\n markNodeAsHoistable(props),\n (workInProgress.stateNode = props))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (props = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, props.value),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n if (type) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$106 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$106\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$106.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags & 65011712),\n (subtreeFlags |= child$107.flags & 65011712),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n else\n for (child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags),\n (subtreeFlags |= child$107.flags),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \" + + + + +
+ + diff --git a/internal/web/dist/index.html.br b/internal/web/dist/index.html.br new file mode 100644 index 0000000000000000000000000000000000000000..8e39d562721579770636c17f00115ccd26075e8b GIT binary patch literal 212 zcmV;_04x8YU=RRcabP!l*~KH&t6zc2sA9UhM!tH*@f~#YK%D`Sc3MWT0p}?s7T|z4 z)>xVw_|I*%(<6I#e*;D}WJA$>H-a`xuq3nE*1(tGQ;czLGb_2W&JDEV21yKg@!BBm zxgd=&uy#J57Jc)i^RB;YIv|9=mHX`iGs3PRd(k+e()%K66mFaV literal 0 HcmV?d00001 diff --git a/internal/web/dist/index.html.gz b/internal/web/dist/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..d9c494dc449851a44a0c10a3e27800b24c8b150f GIT binary patch literal 326 zcmV-M0lEGkiwFqsoC9e918Ht#Wq2-VbZu+^eUY(F#4rqo_j`(v723cCQrn@RlWu{9 z3d9x?(;CvGB);DD?Ma)W6Cg3=w_|_yFBfOpDVhdg9rdQ#6!XK3v~9`3@@m6a(Sg*n zh_VNgOm)%+pprL_+w7V%v3?q~AIyU(IVxv4o3T;%vIP;w_Walz&N>foB^M(S&`j8KS!&&}uklx7$NK-97E{_rR+{B*Y)X2{uISr2ffV z4X;oSQc+gF^zHp{^SnTRvjR;9LI*(qfzo#M*fh<V?`X@zSX8S0XI Y=V*2j<5Zk#V$*W`FIf2`fDHlw07?O!@&Et; literal 0 HcmV?d00001 diff --git a/internal/web/dist/vite.svg b/internal/web/dist/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/internal/web/dist/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/internal/web/static.go b/internal/web/static.go new file mode 100644 index 0000000..1f7067f --- /dev/null +++ b/internal/web/static.go @@ -0,0 +1,239 @@ +package web + +import ( + "embed" + "io" + "io/fs" + "net/http" + "path" + "path/filepath" + "strings" + "time" +) + +// NOTE: Vite outputs to web/dist with assets in dist/assets. +// If you add more nested folders in the future, include them here too. + +//go:embed dist +var distFS embed.FS + +// spaFileSystem serves embedded dist/ files with SPA fallback to index.html +type spaFileSystem struct { + fs fs.FS +} + +func (s spaFileSystem) Open(name string) (fs.File, error) { + // Normalize, strip leading slash + if strings.HasPrefix(name, "/") { + name = name[1:] + } + // Try exact file + f, err := s.fs.Open(name) + if err == nil { + return f, nil + } + + // If the requested file doesn't exist, fall back to index.html for SPA routes + // BUT only if it's not obviously a static asset extension + ext := strings.ToLower(filepath.Ext(name)) + switch ext { + case ".js", ".css", ".map", ".json", ".txt", ".ico", ".png", ".jpg", ".jpeg", + ".svg", ".webp", ".gif", ".woff", ".woff2", ".ttf", ".otf", ".eot", ".wasm", ".br", ".gz": + return nil, fs.ErrNotExist + } + + return s.fs.Open("index.html") +} + +func newDistFS() (fs.FS, error) { + return fs.Sub(distFS, "dist") +} + +// SPAHandler returns an http.Handler that serves the embedded UI (with caching) +func SPAHandler() (http.Handler, error) { + sub, err := newDistFS() + if err != nil { + return nil, err + } + spa := spaFileSystem{fs: sub} + + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if strings.HasPrefix(r.URL.Path, "/api/") || + r.URL.Path == "/api" || + strings.HasPrefix(r.URL.Path, "/swagger") || + strings.HasPrefix(r.URL.Path, "/debug/pprof") { + http.NotFound(w, r) + return + } + + filePath := strings.TrimPrefix(path.Clean(r.URL.Path), "/") + if filePath == "" { + filePath = "index.html" + } + + // Try compressed variants for assets and HTML + // NOTE: we only change *Content-Encoding*; Content-Type derives from original ext + // Always vary on Accept-Encoding + w.Header().Add("Vary", "Accept-Encoding") + + enc := r.Header.Get("Accept-Encoding") + if tryServeCompressed(w, r, spa, filePath, enc) { + return + } + + // Fallback: normal open (or SPA fallback) + f, err := spa.Open(filePath) + if err != nil { + http.NotFound(w, r) + return + } + defer f.Close() + + if strings.HasSuffix(filePath, ".html") { + w.Header().Set("Cache-Control", "no-cache") + } else { + w.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + } + + info, _ := f.Stat() + modTime := time.Now() + if info != nil { + modTime = info.ModTime() + } + http.ServeContent(w, r, filePath, modTime, file{f}) + }), nil +} + +func tryServeCompressed(w http.ResponseWriter, r *http.Request, spa spaFileSystem, filePath, enc string) bool { + wantsBR := strings.Contains(enc, "br") + wantsGZ := strings.Contains(enc, "gzip") + + type cand struct { + logical string // MIME/type decision uses this (uncompressed name) + physical string // actual file we open (with .br/.gz) + enc string + } + + var cands []cand + + // 1) direct compressed variant of requested path (rare for SPA routes, but cheap to try) + if wantsBR { + cands = append(cands, cand{logical: filePath, physical: filePath + ".br", enc: "br"}) + } + if wantsGZ { + cands = append(cands, cand{logical: filePath, physical: filePath + ".gz", enc: "gzip"}) + } + + // 2) SPA route: fall back to compressed index.html + if filepath.Ext(filePath) == "" { + if wantsBR { + cands = append(cands, cand{logical: "index.html", physical: "index.html.br", enc: "br"}) + } + if wantsGZ { + cands = append(cands, cand{logical: "index.html", physical: "index.html.gz", enc: "gzip"}) + } + } + + for _, c := range cands { + f, err := spa.fs.Open(c.physical) // open EXACT path so we don't accidentally get SPA fallback + if err != nil { + continue + } + defer f.Close() + + // Cache headers + if strings.HasSuffix(c.logical, ".html") { + w.Header().Set("Cache-Control", "no-cache") + } else { + w.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + } + + if ct := mimeByExt(path.Ext(c.logical)); ct != "" { + w.Header().Set("Content-Type", ct) + } + w.Header().Set("Content-Encoding", c.enc) + w.Header().Add("Vary", "Accept-Encoding") + + info, _ := f.Stat() + modTime := time.Now() + if info != nil { + modTime = info.ModTime() + } + + // Serve the precompressed bytes + http.ServeContent(w, r, c.physical, modTime, file{f}) + return true + } + return false +} + +func serveIfExists(w http.ResponseWriter, r *http.Request, spa spaFileSystem, filePath, ext, encoding string) bool { + cf := filePath + ext + f, err := spa.Open(cf) + if err != nil { + return false + } + defer f.Close() + + // Set caching headers + if strings.HasSuffix(filePath, ".html") { + w.Header().Set("Cache-Control", "no-cache") + } else { + w.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + } + // Preserve original content type by extension of *uncompressed* file + if ct := mimeByExt(path.Ext(filePath)); ct != "" { + w.Header().Set("Content-Type", ct) + } + w.Header().Set("Content-Encoding", encoding) + + info, _ := f.Stat() + modTime := time.Now() + if info != nil { + modTime = info.ModTime() + } + + // Serve the compressed bytes as an io.ReadSeeker if possible + http.ServeContent(w, r, cf, modTime, file{f}) + return true +} + +func mimeByExt(ext string) string { + switch strings.ToLower(ext) { + case ".html": + return "text/html; charset=utf-8" + case ".js": + return "application/javascript" + case ".css": + return "text/css; charset=utf-8" + case ".json": + return "application/json" + case ".svg": + return "image/svg+xml" + case ".png": + return "image/png" + case ".jpg", ".jpeg": + return "image/jpeg" + case ".webp": + return "image/webp" + case ".ico": + return "image/x-icon" + case ".woff2": + return "font/woff2" + case ".woff": + return "font/woff" + default: + return "" // let Go sniff if empty + } +} + +// file wraps fs.File to implement io.ReadSeeker if possible (for ServeContent) +type file struct{ fs.File } + +func (f file) Seek(offset int64, whence int) (int64, error) { + if s, ok := f.File.(io.Seeker); ok { + return s.Seek(offset, whence) + } + // Fallback: not seekable + return 0, fs.ErrInvalid +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..f3f17e5 --- /dev/null +++ b/main.go @@ -0,0 +1,37 @@ +package main + +import "github.com/glueops/autoglue/cmd" + +// @title AutoGlue API +// @version 1.0 +// @description API for managing K3s clusters across cloud providers + +// @contact.name GlueOps + +// @BasePath /api/v1 +// @schemes http https +// @host localhost:8080 + +// @securityDefinitions.apikey BearerAuth +// @in header +// @name Authorization +// @description Bearer token authentication + +// @securityDefinitions.apikey ApiKeyAuth +// @in header +// @name X-API-KEY +// @description User API key + +// @securityDefinitions.apikey OrgKeyAuth +// @in header +// @name X-ORG-KEY +// @description Org-level key/secret authentication + +// @securityDefinitions.apikey OrgSecretAuth +// @in header +// @name X-ORG-SECRET +// @description Org-level secret + +func main() { + cmd.Execute() +} diff --git a/openapitools.json b/openapitools.json new file mode 100644 index 0000000..f052220 --- /dev/null +++ b/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "7.17.0" + } +} diff --git a/postgres/Dockerfile b/postgres/Dockerfile new file mode 100644 index 0000000..d7278d0 --- /dev/null +++ b/postgres/Dockerfile @@ -0,0 +1,10 @@ +FROM postgres:latest@sha256:feff5b24fedd610975a1f5e743c51a4b360437f4dc3a11acf740dcd708f413f6 + +RUN cd /var/lib/postgresql/ && \ + openssl req -new -text -passout pass:abcd -subj /CN=localhost -out server.req -keyout privkey.pem && \ + openssl rsa -in privkey.pem -passin pass:abcd -out server.key && \ + openssl req -x509 -in server.req -text -key server.key -out server.crt && \ + chmod 600 server.key && \ + chown postgres:postgres server.key + +CMD ["postgres", "-c", "ssl=on", "-c", "ssl_cert_file=/var/lib/postgresql/server.crt", "-c", "ssl_key_file=/var/lib/postgresql/server.key" ] diff --git a/sdk/go/.gitignore b/sdk/go/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/sdk/go/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/sdk/go/.openapi-generator-ignore b/sdk/go/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/sdk/go/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/sdk/go/.openapi-generator/FILES b/sdk/go/.openapi-generator/FILES new file mode 100644 index 0000000..ea6b4b5 --- /dev/null +++ b/sdk/go/.openapi-generator/FILES @@ -0,0 +1,86 @@ +.gitignore +.travis.yml +README.md +api/openapi.yaml +api_auth.go +api_me.go +api_me_api_keys.go +api_orgs.go +api_servers.go +api_ssh.go +api_taints.go +client.go +configuration.go +docs/AuthAPI.md +docs/DtoAuthStartResponse.md +docs/DtoCreateSSHRequest.md +docs/DtoCreateServerRequest.md +docs/DtoCreateTaintRequest.md +docs/DtoJWK.md +docs/DtoJWKS.md +docs/DtoLogoutRequest.md +docs/DtoRefreshRequest.md +docs/DtoServerResponse.md +docs/DtoSshResponse.md +docs/DtoSshRevealResponse.md +docs/DtoTaintResponse.md +docs/DtoTokenPair.md +docs/DtoUpdateServerRequest.md +docs/DtoUpdateTaintRequest.md +docs/HandlersCreateUserKeyRequest.md +docs/HandlersMeResponse.md +docs/HandlersMemberOut.md +docs/HandlersMemberUpsertReq.md +docs/HandlersOrgCreateReq.md +docs/HandlersOrgKeyCreateReq.md +docs/HandlersOrgKeyCreateResp.md +docs/HandlersOrgUpdateReq.md +docs/HandlersUpdateMeRequest.md +docs/HandlersUserAPIKeyOut.md +docs/MeAPI.md +docs/MeAPIKeysAPI.md +docs/ModelsAPIKey.md +docs/ModelsOrganization.md +docs/ModelsUser.md +docs/ModelsUserEmail.md +docs/OrgsAPI.md +docs/ServersAPI.md +docs/SshAPI.md +docs/TaintsAPI.md +docs/UtilsErrorResponse.md +git_push.sh +go.mod +go.sum +model_dto_auth_start_response.go +model_dto_create_server_request.go +model_dto_create_ssh_request.go +model_dto_create_taint_request.go +model_dto_jwk.go +model_dto_jwks.go +model_dto_logout_request.go +model_dto_refresh_request.go +model_dto_server_response.go +model_dto_ssh_response.go +model_dto_ssh_reveal_response.go +model_dto_taint_response.go +model_dto_token_pair.go +model_dto_update_server_request.go +model_dto_update_taint_request.go +model_handlers_create_user_key_request.go +model_handlers_me_response.go +model_handlers_member_out.go +model_handlers_member_upsert_req.go +model_handlers_org_create_req.go +model_handlers_org_key_create_req.go +model_handlers_org_key_create_resp.go +model_handlers_org_update_req.go +model_handlers_update_me_request.go +model_handlers_user_api_key_out.go +model_models_api_key.go +model_models_organization.go +model_models_user.go +model_models_user_email.go +model_utils_error_response.go +response.go +test/api_taints_test.go +utils.go diff --git a/sdk/go/.openapi-generator/VERSION b/sdk/go/.openapi-generator/VERSION new file mode 100644 index 0000000..6328c54 --- /dev/null +++ b/sdk/go/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.17.0 diff --git a/sdk/go/.travis.yml b/sdk/go/.travis.yml new file mode 100644 index 0000000..f5cb2ce --- /dev/null +++ b/sdk/go/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/sdk/go/README.md b/sdk/go/README.md new file mode 100644 index 0000000..5b00725 --- /dev/null +++ b/sdk/go/README.md @@ -0,0 +1,261 @@ +# Go API client for autoglue + +API for managing K3s clusters across cloud providers + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client. + +- API version: 1.0 +- Package version: 1.0.0 +- Generator version: 7.17.0 +- Build package: org.openapitools.codegen.languages.GoClientCodegen + +## Installation + +Install the following dependencies: + +```sh +go get github.com/stretchr/testify/assert +go get golang.org/x/net/context +``` + +Put the package under your project folder and add the following in import: + +```go +import autoglue "github.com/glueops/autoglue-sdk" +``` + +To use a proxy, set the environment variable `HTTP_PROXY`: + +```go +os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port") +``` + +## Configuration of Server URL + +Default configuration comes with `Servers` field that contains server objects as defined in the OpenAPI specification. + +### Select Server Configuration + +For using other server than the one defined on index 0 set context value `autoglue.ContextServerIndex` of type `int`. + +```go +ctx := context.WithValue(context.Background(), autoglue.ContextServerIndex, 1) +``` + +### Templated Server URL + +Templated server URL is formatted using default variables from configuration or from context value `autoglue.ContextServerVariables` of type `map[string]string`. + +```go +ctx := context.WithValue(context.Background(), autoglue.ContextServerVariables, map[string]string{ + "basePath": "v2", +}) +``` + +Note, enum values are always validated and all unused variables are silently ignored. + +### URLs Configuration per Operation + +Each operation can use different server URL defined using `OperationServers` map in the `Configuration`. +An operation is uniquely identified by `"{classname}Service.{nickname}"` string. +Similar rules for overriding default operation server index and variables applies by using `autoglue.ContextOperationServerIndices` and `autoglue.ContextOperationServerVariables` context maps. + +```go +ctx := context.WithValue(context.Background(), autoglue.ContextOperationServerIndices, map[string]int{ + "{classname}Service.{nickname}": 2, +}) +ctx = context.WithValue(context.Background(), autoglue.ContextOperationServerVariables, map[string]map[string]string{ + "{classname}Service.{nickname}": { + "port": "8443", + }, +}) +``` + +## Documentation for API Endpoints + +All URIs are relative to *http://localhost:8080/api/v1* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AuthAPI* | [**AuthCallback**](docs/AuthAPI.md#authcallback) | **Get** /auth/{provider}/callback | Handle social login callback +*AuthAPI* | [**AuthStart**](docs/AuthAPI.md#authstart) | **Post** /auth/{provider}/start | Begin social login +*AuthAPI* | [**GetJWKS**](docs/AuthAPI.md#getjwks) | **Get** /.well-known/jwks.json | Get JWKS +*AuthAPI* | [**Logout**](docs/AuthAPI.md#logout) | **Post** /auth/logout | Revoke refresh token family (logout everywhere) +*AuthAPI* | [**Refresh**](docs/AuthAPI.md#refresh) | **Post** /auth/refresh | Rotate refresh token +*MeAPI* | [**GetMe**](docs/MeAPI.md#getme) | **Get** /me | Get current user profile +*MeAPI* | [**UpdateMe**](docs/MeAPI.md#updateme) | **Patch** /me | Update current user profile +*MeAPIKeysAPI* | [**CreateUserAPIKey**](docs/MeAPIKeysAPI.md#createuserapikey) | **Post** /me/api-keys | Create a new user API key +*MeAPIKeysAPI* | [**DeleteUserAPIKey**](docs/MeAPIKeysAPI.md#deleteuserapikey) | **Delete** /me/api-keys/{id} | Delete a user API key +*MeAPIKeysAPI* | [**ListUserAPIKeys**](docs/MeAPIKeysAPI.md#listuserapikeys) | **Get** /me/api-keys | List my API keys +*OrgsAPI* | [**AddOrUpdateMember**](docs/OrgsAPI.md#addorupdatemember) | **Post** /orgs/{id}/members | Add or update a member (owner/admin) +*OrgsAPI* | [**CreateOrg**](docs/OrgsAPI.md#createorg) | **Post** /orgs | Create organization +*OrgsAPI* | [**CreateOrgKey**](docs/OrgsAPI.md#createorgkey) | **Post** /orgs/{id}/api-keys | Create org key/secret pair (owner/admin) +*OrgsAPI* | [**DeleteOrg**](docs/OrgsAPI.md#deleteorg) | **Delete** /orgs/{id} | Delete organization (owner) +*OrgsAPI* | [**DeleteOrgKey**](docs/OrgsAPI.md#deleteorgkey) | **Delete** /orgs/{id}/api-keys/{key_id} | Delete org key (owner/admin) +*OrgsAPI* | [**GetOrg**](docs/OrgsAPI.md#getorg) | **Get** /orgs/{id} | Get organization +*OrgsAPI* | [**ListMembers**](docs/OrgsAPI.md#listmembers) | **Get** /orgs/{id}/members | List members in org +*OrgsAPI* | [**ListMyOrgs**](docs/OrgsAPI.md#listmyorgs) | **Get** /orgs | List organizations I belong to +*OrgsAPI* | [**ListOrgKeys**](docs/OrgsAPI.md#listorgkeys) | **Get** /orgs/{id}/api-keys | List org-scoped API keys (no secrets) +*OrgsAPI* | [**RemoveMember**](docs/OrgsAPI.md#removemember) | **Delete** /orgs/{id}/members/{user_id} | Remove a member (owner/admin) +*OrgsAPI* | [**UpdateOrg**](docs/OrgsAPI.md#updateorg) | **Patch** /orgs/{id} | Update organization (owner/admin) +*ServersAPI* | [**CreateServer**](docs/ServersAPI.md#createserver) | **Post** /servers | Create server (org scoped) +*ServersAPI* | [**DeleteServer**](docs/ServersAPI.md#deleteserver) | **Delete** /servers/{id} | Delete server (org scoped) +*ServersAPI* | [**GetServer**](docs/ServersAPI.md#getserver) | **Get** /servers/{id} | Get server by ID (org scoped) +*ServersAPI* | [**ListServers**](docs/ServersAPI.md#listservers) | **Get** /servers | List servers (org scoped) +*ServersAPI* | [**UpdateServer**](docs/ServersAPI.md#updateserver) | **Patch** /servers/{id} | Update server (org scoped) +*SshAPI* | [**CreateSSHKey**](docs/SshAPI.md#createsshkey) | **Post** /ssh | Create ssh keypair (org scoped) +*SshAPI* | [**DeleteSSHKey**](docs/SshAPI.md#deletesshkey) | **Delete** /ssh/{id} | Delete ssh keypair (org scoped) +*SshAPI* | [**DownloadSSHKey**](docs/SshAPI.md#downloadsshkey) | **Get** /ssh/{id}/download | Download ssh key files by ID (org scoped) +*SshAPI* | [**GetSSHKey**](docs/SshAPI.md#getsshkey) | **Get** /ssh/{id} | Get ssh key by ID (org scoped) +*SshAPI* | [**ListPublicSshKeys**](docs/SshAPI.md#listpublicsshkeys) | **Get** /ssh | List ssh keys (org scoped) +*TaintsAPI* | [**CreateTaint**](docs/TaintsAPI.md#createtaint) | **Post** /taints | Create node taint (org scoped) +*TaintsAPI* | [**DeleteTaint**](docs/TaintsAPI.md#deletetaint) | **Delete** /taints/{id} | Delete taint (org scoped) +*TaintsAPI* | [**GetTaint**](docs/TaintsAPI.md#gettaint) | **Get** /taints/{id} | Get node taint by ID (org scoped) +*TaintsAPI* | [**ListTaints**](docs/TaintsAPI.md#listtaints) | **Get** /taints | List node pool taints (org scoped) +*TaintsAPI* | [**UpdateTaint**](docs/TaintsAPI.md#updatetaint) | **Patch** /taints/{id} | Update node taint (org scoped) + + +## Documentation For Models + + - [DtoAuthStartResponse](docs/DtoAuthStartResponse.md) + - [DtoCreateSSHRequest](docs/DtoCreateSSHRequest.md) + - [DtoCreateServerRequest](docs/DtoCreateServerRequest.md) + - [DtoCreateTaintRequest](docs/DtoCreateTaintRequest.md) + - [DtoJWK](docs/DtoJWK.md) + - [DtoJWKS](docs/DtoJWKS.md) + - [DtoLogoutRequest](docs/DtoLogoutRequest.md) + - [DtoRefreshRequest](docs/DtoRefreshRequest.md) + - [DtoServerResponse](docs/DtoServerResponse.md) + - [DtoSshResponse](docs/DtoSshResponse.md) + - [DtoSshRevealResponse](docs/DtoSshRevealResponse.md) + - [DtoTaintResponse](docs/DtoTaintResponse.md) + - [DtoTokenPair](docs/DtoTokenPair.md) + - [DtoUpdateServerRequest](docs/DtoUpdateServerRequest.md) + - [DtoUpdateTaintRequest](docs/DtoUpdateTaintRequest.md) + - [HandlersCreateUserKeyRequest](docs/HandlersCreateUserKeyRequest.md) + - [HandlersMeResponse](docs/HandlersMeResponse.md) + - [HandlersMemberOut](docs/HandlersMemberOut.md) + - [HandlersMemberUpsertReq](docs/HandlersMemberUpsertReq.md) + - [HandlersOrgCreateReq](docs/HandlersOrgCreateReq.md) + - [HandlersOrgKeyCreateReq](docs/HandlersOrgKeyCreateReq.md) + - [HandlersOrgKeyCreateResp](docs/HandlersOrgKeyCreateResp.md) + - [HandlersOrgUpdateReq](docs/HandlersOrgUpdateReq.md) + - [HandlersUpdateMeRequest](docs/HandlersUpdateMeRequest.md) + - [HandlersUserAPIKeyOut](docs/HandlersUserAPIKeyOut.md) + - [ModelsAPIKey](docs/ModelsAPIKey.md) + - [ModelsOrganization](docs/ModelsOrganization.md) + - [ModelsUser](docs/ModelsUser.md) + - [ModelsUserEmail](docs/ModelsUserEmail.md) + - [UtilsErrorResponse](docs/UtilsErrorResponse.md) + + +## Documentation For Authorization + + +Authentication schemes defined for the API: +### ApiKeyAuth + +- **Type**: API key +- **API key parameter name**: X-API-KEY +- **Location**: HTTP header + +Note, each API key must be added to a map of `map[string]APIKey` where the key is: ApiKeyAuth and passed in as the auth context for each request. + +Example + +```go +auth := context.WithValue( + context.Background(), + autoglue.ContextAPIKeys, + map[string]autoglue.APIKey{ + "ApiKeyAuth": {Key: "API_KEY_STRING"}, + }, + ) +r, err := client.Service.Operation(auth, args) +``` + +### BearerAuth + +- **Type**: API key +- **API key parameter name**: Authorization +- **Location**: HTTP header + +Note, each API key must be added to a map of `map[string]APIKey` where the key is: BearerAuth and passed in as the auth context for each request. + +Example + +```go +auth := context.WithValue( + context.Background(), + autoglue.ContextAPIKeys, + map[string]autoglue.APIKey{ + "BearerAuth": {Key: "API_KEY_STRING"}, + }, + ) +r, err := client.Service.Operation(auth, args) +``` + +### OrgKeyAuth + +- **Type**: API key +- **API key parameter name**: X-ORG-KEY +- **Location**: HTTP header + +Note, each API key must be added to a map of `map[string]APIKey` where the key is: OrgKeyAuth and passed in as the auth context for each request. + +Example + +```go +auth := context.WithValue( + context.Background(), + autoglue.ContextAPIKeys, + map[string]autoglue.APIKey{ + "OrgKeyAuth": {Key: "API_KEY_STRING"}, + }, + ) +r, err := client.Service.Operation(auth, args) +``` + +### OrgSecretAuth + +- **Type**: API key +- **API key parameter name**: X-ORG-SECRET +- **Location**: HTTP header + +Note, each API key must be added to a map of `map[string]APIKey` where the key is: OrgSecretAuth and passed in as the auth context for each request. + +Example + +```go +auth := context.WithValue( + context.Background(), + autoglue.ContextAPIKeys, + map[string]autoglue.APIKey{ + "OrgSecretAuth": {Key: "API_KEY_STRING"}, + }, + ) +r, err := client.Service.Operation(auth, args) +``` + + +## Documentation for Utility Methods + +Due to the fact that model structure members are all pointers, this package contains +a number of utility functions to easily obtain pointers to values of basic types. +Each of these functions takes a value of the given basic type and returns a pointer to it: + +* `PtrBool` +* `PtrInt` +* `PtrInt32` +* `PtrInt64` +* `PtrFloat` +* `PtrFloat32` +* `PtrFloat64` +* `PtrString` +* `PtrTime` + +## Author + + + diff --git a/sdk/go/api/openapi.yaml b/sdk/go/api/openapi.yaml new file mode 100644 index 0000000..f17ac27 --- /dev/null +++ b/sdk/go/api/openapi.yaml @@ -0,0 +1,2086 @@ +openapi: 3.0.1 +info: + contact: + name: GlueOps + description: API for managing K3s clusters across cloud providers + title: AutoGlue API + version: "1.0" +servers: +- url: http://localhost:8080/api/v1 +- url: https://localhost:8080/api/v1 +paths: + /.well-known/jwks.json: + get: + description: Returns the JSON Web Key Set for token verification + operationId: getJWKS + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.JWKS" + description: OK + summary: Get JWKS + tags: + - Auth + /auth/logout: + post: + operationId: Logout + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/dto.LogoutRequest" + description: Refresh token + required: true + responses: + "204": + content: {} + description: No Content + summary: Revoke refresh token family (logout everywhere) + tags: + - Auth + x-codegen-request-body-name: body + /auth/refresh: + post: + operationId: Refresh + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/dto.RefreshRequest" + description: Refresh token + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.TokenPair" + description: OK + summary: Rotate refresh token + tags: + - Auth + x-codegen-request-body-name: body + /auth/{provider}/callback: + get: + operationId: AuthCallback + parameters: + - description: google|github + in: path + name: provider + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.TokenPair" + description: OK + summary: Handle social login callback + tags: + - Auth + /auth/{provider}/start: + post: + description: Returns provider authorization URL for the frontend to redirect + operationId: AuthStart + parameters: + - description: google|github + in: path + name: provider + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.AuthStartResponse" + description: OK + summary: Begin social login + tags: + - Auth + /me: + get: + operationId: GetMe + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.meResponse" + description: OK + security: + - BearerAuth: [] + - ApiKeyAuth: [] + summary: Get current user profile + tags: + - Me + patch: + operationId: UpdateMe + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.updateMeRequest" + description: Patch profile + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/models.User" + description: OK + security: + - BearerAuth: [] + - ApiKeyAuth: [] + summary: Update current user profile + tags: + - Me + x-codegen-request-body-name: body + /me/api-keys: + get: + operationId: ListUserAPIKeys + responses: + "200": + content: + application/json: + schema: + items: + $ref: "#/components/schemas/handlers.userAPIKeyOut" + type: array + description: OK + security: + - BearerAuth: [] + - ApiKeyAuth: [] + summary: List my API keys + tags: + - Me / API Keys + post: + description: Returns the plaintext key once. Store it securely on the client + side. + operationId: CreateUserAPIKey + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.createUserKeyRequest" + description: Key options + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.userAPIKeyOut" + description: Created + security: + - BearerAuth: [] + - ApiKeyAuth: [] + summary: Create a new user API key + tags: + - Me / API Keys + x-codegen-request-body-name: body + /me/api-keys/{id}: + delete: + operationId: DeleteUserAPIKey + parameters: + - description: Key ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "204": + content: {} + description: No Content + security: + - BearerAuth: [] + summary: Delete a user API key + tags: + - Me / API Keys + /orgs: + get: + operationId: listMyOrgs + responses: + "200": + content: + application/json: + schema: + items: + $ref: "#/components/schemas/models.Organization" + type: array + description: OK + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + security: + - BearerAuth: [] + summary: List organizations I belong to + tags: + - Orgs + post: + operationId: createOrg + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.orgCreateReq" + description: Org payload + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/models.Organization" + description: Created + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Conflict + security: + - BearerAuth: [] + summary: Create organization + tags: + - Orgs + x-codegen-request-body-name: body + /orgs/{id}: + delete: + operationId: deleteOrg + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "204": + content: {} + description: Deleted + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Not Found + security: + - BearerAuth: [] + summary: Delete organization (owner) + tags: + - Orgs + get: + operationId: getOrg + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/models.Organization" + description: OK + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Not Found + security: + - BearerAuth: [] + summary: Get organization + tags: + - Orgs + patch: + operationId: updateOrg + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.orgUpdateReq" + description: Update payload + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/models.Organization" + description: OK + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Not Found + security: + - BearerAuth: [] + summary: Update organization (owner/admin) + tags: + - Orgs + x-codegen-request-body-name: body + /orgs/{id}/api-keys: + get: + operationId: listOrgKeys + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + items: + $ref: "#/components/schemas/models.APIKey" + type: array + description: OK + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + security: + - BearerAuth: [] + summary: List org-scoped API keys (no secrets) + tags: + - Orgs + post: + operationId: createOrgKey + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.orgKeyCreateReq" + description: Key name + optional expiry + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.orgKeyCreateResp" + description: Created + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + security: + - BearerAuth: [] + summary: Create org key/secret pair (owner/admin) + tags: + - Orgs + x-codegen-request-body-name: body + /orgs/{id}/api-keys/{key_id}: + delete: + operationId: deleteOrgKey + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + - description: Key ID (UUID) + in: path + name: key_id + required: true + schema: + type: string + responses: + "204": + content: {} + description: Deleted + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + security: + - BearerAuth: [] + summary: Delete org key (owner/admin) + tags: + - Orgs + /orgs/{id}/members: + get: + operationId: listMembers + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + items: + $ref: "#/components/schemas/handlers.memberOut" + type: array + description: OK + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + security: + - BearerAuth: [] + summary: List members in org + tags: + - Orgs + post: + operationId: addOrUpdateMember + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.memberUpsertReq" + description: User & role + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/handlers.memberOut" + description: OK + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + security: + - BearerAuth: [] + summary: Add or update a member (owner/admin) + tags: + - Orgs + x-codegen-request-body-name: body + /orgs/{id}/members/{user_id}: + delete: + operationId: removeMember + parameters: + - description: Org ID (UUID) + in: path + name: id + required: true + schema: + type: string + - description: User ID (UUID) + in: path + name: user_id + required: true + schema: + type: string + responses: + "204": + content: {} + description: Removed + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/utils.ErrorResponse" + description: Unauthorized + security: + - BearerAuth: [] + summary: Remove a member (owner/admin) + tags: + - Orgs + /servers: + get: + description: "Returns servers for the organization in X-Org-ID. Optional filters:\ + \ status, role." + operationId: ListServers + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: Filter by status (pending|provisioning|ready|failed) + in: query + name: status + schema: + type: string + - description: Filter by role + in: query + name: role + schema: + type: string + responses: + "200": + content: + application/json: + schema: + items: + $ref: "#/components/schemas/dto.ServerResponse" + type: array + description: OK + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: failed to list servers + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: List servers (org scoped) + tags: + - Servers + post: + description: Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id + belongs to the org. + operationId: CreateServer + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/dto.CreateServerRequest" + description: Server payload + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.ServerResponse" + description: Created + "400": + content: + application/json: + schema: + type: string + description: invalid json / missing fields / invalid status / invalid ssh_key_id + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: create failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Create server (org scoped) + tags: + - Servers + x-codegen-request-body-name: body + /servers/{id}: + delete: + description: Permanently deletes the server. + operationId: DeleteServer + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: Server ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "204": + content: + application/json: + schema: + type: string + description: No Content + "400": + content: + application/json: + schema: + type: string + description: invalid id + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: delete failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Delete server (org scoped) + tags: + - Servers + get: + description: Returns one server in the given organization. + operationId: GetServer + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: Server ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.ServerResponse" + description: OK + "400": + content: + application/json: + schema: + type: string + description: invalid id + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "404": + content: + application/json: + schema: + type: string + description: not found + "500": + content: + application/json: + schema: + type: string + description: fetch failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Get server by ID (org scoped) + tags: + - Servers + patch: + description: Partially update fields; changing ssh_key_id validates ownership. + operationId: UpdateServer + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: Server ID (UUID) + in: path + name: id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/dto.UpdateServerRequest" + description: Fields to update + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.ServerResponse" + description: OK + "400": + content: + application/json: + schema: + type: string + description: invalid id / invalid json / invalid status / invalid ssh_key_id + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "404": + content: + application/json: + schema: + type: string + description: not found + "500": + content: + application/json: + schema: + type: string + description: update failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Update server (org scoped) + tags: + - Servers + x-codegen-request-body-name: body + /ssh: + get: + description: Returns ssh keys for the organization in X-Org-ID. + operationId: ListPublicSshKeys + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + responses: + "200": + content: + application/json: + schema: + items: + $ref: "#/components/schemas/dto.SshResponse" + type: array + description: OK + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: failed to list keys + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: List ssh keys (org scoped) + tags: + - Ssh + post: + description: "Generates an RSA or ED25519 keypair, saves it, and returns metadata.\ + \ For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores\ + \ bits." + operationId: CreateSSHKey + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/dto.CreateSSHRequest" + description: Key generation options + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.SshResponse" + description: Created + "400": + content: + application/json: + schema: + type: string + description: invalid json / invalid bits + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: generation/create failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Create ssh keypair (org scoped) + tags: + - Ssh + x-codegen-request-body-name: body + /ssh/{id}: + delete: + description: Permanently deletes a keypair. + operationId: DeleteSSHKey + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: SSH Key ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "204": + content: + application/json: + schema: + type: string + description: No Content + "400": + content: + application/json: + schema: + type: string + description: invalid id + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: delete failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Delete ssh keypair (org scoped) + tags: + - Ssh + get: + description: Returns public key fields. Append `?reveal=true` to include the + private key PEM. + operationId: GetSSHKey + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: SSH Key ID (UUID) + in: path + name: id + required: true + schema: + type: string + - description: Reveal private key PEM + in: query + name: reveal + schema: + type: boolean + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.SshRevealResponse" + description: When reveal=true + "400": + content: + application/json: + schema: + type: string + description: invalid id + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "404": + content: + application/json: + schema: + type: string + description: not found + "500": + content: + application/json: + schema: + type: string + description: fetch failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Get ssh key by ID (org scoped) + tags: + - Ssh + /ssh/{id}/download: + get: + description: Download `part=public|private|both` of the keypair. `both` returns + a zip file. + operationId: DownloadSSHKey + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + required: true + schema: + type: string + - description: SSH Key ID (UUID) + in: path + name: id + required: true + schema: + type: string + - description: Which part to download + in: query + name: part + required: true + schema: + enum: + - public + - private + - both + type: string + responses: + "200": + content: + application/json: + schema: + type: string + description: file content + "400": + content: + application/json: + schema: + type: string + description: invalid id / invalid part + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "404": + content: + application/json: + schema: + type: string + description: not found + "500": + content: + application/json: + schema: + type: string + description: download failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Download ssh key files by ID (org scoped) + tags: + - Ssh + /taints: + get: + description: "Returns node taints for the organization in X-Org-ID. Filters:\ + \ `key`, `value`, and `q` (key contains). Add `include=node_pools` to include\ + \ linked node pools." + operationId: ListTaints + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: Exact key + in: query + name: key + schema: + type: string + - description: Exact value + in: query + name: value + schema: + type: string + - description: key contains (case-insensitive) + in: query + name: q + schema: + type: string + responses: + "200": + content: + application/json: + schema: + items: + $ref: "#/components/schemas/dto.TaintResponse" + type: array + description: OK + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: failed to list node taints + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: List node pool taints (org scoped) + tags: + - Taints + post: + description: Creates a taint. + operationId: CreateTaint + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/dto.CreateTaintRequest" + description: Taint payload + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.TaintResponse" + description: Created + "400": + content: + application/json: + schema: + type: string + description: invalid json / missing fields / invalid node_pool_ids + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: create failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Create node taint (org scoped) + tags: + - Taints + x-codegen-request-body-name: body + /taints/{id}: + delete: + description: Permanently deletes the taint. + operationId: DeleteTaint + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: Node Taint ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "204": + content: + application/json: + schema: + type: string + description: No Content + "400": + content: + application/json: + schema: + type: string + description: invalid id + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "500": + content: + application/json: + schema: + type: string + description: delete failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Delete taint (org scoped) + tags: + - Taints + get: + operationId: GetTaint + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: Node Taint ID (UUID) + in: path + name: id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.TaintResponse" + description: OK + "400": + content: + application/json: + schema: + type: string + description: invalid id + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "404": + content: + application/json: + schema: + type: string + description: not found + "500": + content: + application/json: + schema: + type: string + description: fetch failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Get node taint by ID (org scoped) + tags: + - Taints + patch: + description: Partially update taint fields. + operationId: UpdateTaint + parameters: + - description: Organization UUID + in: header + name: X-Org-ID + schema: + type: string + - description: Node Taint ID (UUID) + in: path + name: id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/dto.UpdateTaintRequest" + description: Fields to update + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/dto.TaintResponse" + description: OK + "400": + content: + application/json: + schema: + type: string + description: invalid id / invalid json + "401": + content: + application/json: + schema: + type: string + description: Unauthorized + "403": + content: + application/json: + schema: + type: string + description: organization required + "404": + content: + application/json: + schema: + type: string + description: not found + "500": + content: + application/json: + schema: + type: string + description: update failed + security: + - BearerAuth: [] + - OrgKeyAuth: [] + - OrgSecretAuth: [] + summary: Update node taint (org scoped) + tags: + - Taints + x-codegen-request-body-name: body +components: + schemas: + dto.AuthStartResponse: + example: + auth_url: https://accounts.google.com/o/oauth2/v2/auth?client_id=... + properties: + auth_url: + example: https://accounts.google.com/o/oauth2/v2/auth?client_id=... + type: string + type: object + dto.CreateSSHRequest: + properties: + bits: + description: Only for RSA + type: integer + comment: + example: deploy@autoglue + type: string + name: + type: string + type: + description: '"rsa" (default) or "ed25519"' + type: string + type: object + dto.CreateServerRequest: + properties: + hostname: + type: string + private_ip_address: + type: string + public_ip_address: + type: string + role: + example: master|worker|bastion + type: string + ssh_key_id: + type: string + ssh_user: + type: string + status: + example: pending|provisioning|ready|failed + type: string + type: object + dto.CreateTaintRequest: + properties: + effect: + type: string + key: + type: string + value: + type: string + type: object + dto.JWK: + example: + kty: RSA + e: AQAB + use: sig + kid: 7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345 + x: x + alg: RS256 + "n": "n" + properties: + alg: + example: RS256 + type: string + e: + example: AQAB + type: string + kid: + example: 7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345 + type: string + kty: + example: RSA + type: string + "n": + type: string + use: + example: sig + type: string + x: + type: string + type: object + dto.JWKS: + example: + keys: + - kty: RSA + e: AQAB + use: sig + kid: 7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345 + x: x + alg: RS256 + "n": "n" + - kty: RSA + e: AQAB + use: sig + kid: 7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345 + x: x + alg: RS256 + "n": "n" + properties: + keys: + items: + $ref: "#/components/schemas/dto.JWK" + type: array + type: object + dto.LogoutRequest: + properties: + refresh_token: + example: m0l9o8rT3t0V8d3eFf... + type: string + type: object + dto.RefreshRequest: + properties: + refresh_token: + example: m0l9o8rT3t0V8d3eFf... + type: string + type: object + dto.ServerResponse: + example: + hostname: hostname + public_ip_address: public_ip_address + role: role + updated_at: updated_at + ssh_key_id: ssh_key_id + organization_id: organization_id + created_at: created_at + private_ip_address: private_ip_address + id: id + ssh_user: ssh_user + status: status + properties: + created_at: + type: string + hostname: + type: string + id: + type: string + organization_id: + type: string + private_ip_address: + type: string + public_ip_address: + type: string + role: + type: string + ssh_key_id: + type: string + ssh_user: + type: string + status: + type: string + updated_at: + type: string + type: object + dto.SshResponse: + example: + public_key: public_key + updated_at: updated_at + organization_id: organization_id + fingerprint: fingerprint + name: name + created_at: created_at + id: id + properties: + created_at: + type: string + fingerprint: + type: string + id: + type: string + name: + type: string + organization_id: + type: string + public_key: + type: string + updated_at: + type: string + type: object + dto.SshRevealResponse: + example: + public_key: public_key + updated_at: updated_at + organization_id: organization_id + fingerprint: fingerprint + name: name + created_at: created_at + private_key: private_key + id: id + properties: + created_at: + type: string + fingerprint: + type: string + id: + type: string + name: + type: string + organization_id: + type: string + private_key: + type: string + public_key: + type: string + updated_at: + type: string + type: object + dto.TaintResponse: + example: + effect: effect + id: id + value: value + key: key + properties: + effect: + type: string + id: + type: string + key: + type: string + value: + type: string + type: object + dto.TokenPair: + example: + access_token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ij... + refresh_token: m0l9o8rT3t0V8d3eFf.... + token_type: Bearer + expires_in: 3600 + properties: + access_token: + example: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ij... + type: string + expires_in: + example: 3600 + type: integer + refresh_token: + example: m0l9o8rT3t0V8d3eFf.... + type: string + token_type: + example: Bearer + type: string + type: object + dto.UpdateServerRequest: + properties: + hostname: + type: string + private_ip_address: + type: string + public_ip_address: + type: string + role: + example: master|worker|bastion + type: string + ssh_key_id: + type: string + ssh_user: + type: string + status: + example: pending|provisioning|ready|failed + type: string + type: object + dto.UpdateTaintRequest: + properties: + effect: + type: string + key: + type: string + value: + type: string + type: object + handlers.createUserKeyRequest: + properties: + expires_in_hours: + description: optional TTL + type: integer + name: + type: string + type: object + handlers.meResponse: + example: + emails: + - is_primary: true + updated_at: 2000-01-23T04:56:07.000+00:00 + user_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + created_at: 2000-01-23T04:56:07.000+00:00 + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + is_verified: true + user: + avatar_url: avatar_url + updated_at: 2000-01-23T04:56:07.000+00:00 + is_disabled: true + created_at: 2000-01-23T04:56:07.000+00:00 + primary_email: primary_email + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + display_name: display_name + email: email + - is_primary: true + updated_at: 2000-01-23T04:56:07.000+00:00 + user_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + created_at: 2000-01-23T04:56:07.000+00:00 + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + is_verified: true + user: + avatar_url: avatar_url + updated_at: 2000-01-23T04:56:07.000+00:00 + is_disabled: true + created_at: 2000-01-23T04:56:07.000+00:00 + primary_email: primary_email + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + display_name: display_name + email: email + avatar_url: avatar_url + updated_at: 2000-01-23T04:56:07.000+00:00 + is_disabled: true + organizations: + - updated_at: 2000-01-23T04:56:07.000+00:00 + domain: domain + name: name + created_at: 2000-01-23T04:56:07.000+00:00 + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + - updated_at: 2000-01-23T04:56:07.000+00:00 + domain: domain + name: name + created_at: 2000-01-23T04:56:07.000+00:00 + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + created_at: 2000-01-23T04:56:07.000+00:00 + primary_email: primary_email + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + display_name: display_name + properties: + avatar_url: + type: string + created_at: + format: date-time + type: string + display_name: + type: string + emails: + items: + $ref: "#/components/schemas/models.UserEmail" + type: array + id: + description: "example: 3fa85f64-5717-4562-b3fc-2c963f66afa6" + format: uuid + type: string + is_disabled: + type: boolean + organizations: + items: + $ref: "#/components/schemas/models.Organization" + type: array + primary_email: + type: string + updated_at: + format: date-time + type: string + type: object + handlers.memberOut: + example: + role: role + user_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + email: email + properties: + email: + type: string + role: + description: owner/admin/member + type: string + user_id: + format: uuid + type: string + type: object + handlers.memberUpsertReq: + properties: + role: + example: member + type: string + user_id: + format: uuid + type: string + type: object + handlers.orgCreateReq: + properties: + domain: + example: acme.com + type: string + name: + example: Acme Corp + type: string + type: object + handlers.orgKeyCreateReq: + properties: + expires_in_hours: + example: 720 + type: integer + name: + example: automation-bot + type: string + type: object + handlers.orgKeyCreateResp: + example: + org_key: org_key + expires_at: expires_at + scope: scope + name: name + created_at: created_at + id: id + org_secret: org_secret + properties: + created_at: + type: string + expires_at: + type: string + id: + type: string + name: + type: string + org_key: + description: "shown once:" + type: string + org_secret: + description: "shown once:" + type: string + scope: + description: '"org"' + type: string + type: object + handlers.orgUpdateReq: + properties: + domain: + type: string + name: + type: string + type: object + handlers.updateMeRequest: + properties: + display_name: + type: string + type: object + handlers.userAPIKeyOut: + example: + last_used_at: last_used_at + expires_at: expires_at + plain: plain + scope: scope + name: name + created_at: created_at + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + properties: + created_at: + type: string + expires_at: + type: string + id: + format: uuid + type: string + last_used_at: + type: string + name: + type: string + plain: + description: "Shown only on create:" + type: string + scope: + description: '"user"' + type: string + type: object + models.APIKey: + example: + last_used_at: 2000-01-23T04:56:07.000+00:00 + expires_at: 2000-01-23T04:56:07.000+00:00 + updated_at: 2000-01-23T04:56:07.000+00:00 + user_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + org_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + prefix: prefix + scope: scope + name: name + created_at: 2000-01-23T04:56:07.000+00:00 + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + revoked: true + properties: + created_at: + format: date-time + type: string + expires_at: + format: date-time + type: string + id: + format: uuid + type: string + last_used_at: + format: date-time + type: string + name: + type: string + org_id: + format: uuid + type: string + prefix: + type: string + revoked: + type: boolean + scope: + type: string + updated_at: + format: date-time + type: string + user_id: + format: uuid + type: string + type: object + models.Organization: + example: + updated_at: 2000-01-23T04:56:07.000+00:00 + domain: domain + name: name + created_at: 2000-01-23T04:56:07.000+00:00 + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + properties: + created_at: + format: date-time + type: string + domain: + type: string + id: + description: "example: 3fa85f64-5717-4562-b3fc-2c963f66afa6" + format: uuid + type: string + name: + type: string + updated_at: + format: date-time + type: string + type: object + models.User: + example: + avatar_url: avatar_url + updated_at: 2000-01-23T04:56:07.000+00:00 + is_disabled: true + created_at: 2000-01-23T04:56:07.000+00:00 + primary_email: primary_email + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + display_name: display_name + properties: + avatar_url: + type: string + created_at: + format: date-time + type: string + display_name: + type: string + id: + description: "example: 3fa85f64-5717-4562-b3fc-2c963f66afa6" + format: uuid + type: string + is_disabled: + type: boolean + primary_email: + type: string + updated_at: + format: date-time + type: string + type: object + models.UserEmail: + example: + is_primary: true + updated_at: 2000-01-23T04:56:07.000+00:00 + user_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + created_at: 2000-01-23T04:56:07.000+00:00 + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + is_verified: true + user: + avatar_url: avatar_url + updated_at: 2000-01-23T04:56:07.000+00:00 + is_disabled: true + created_at: 2000-01-23T04:56:07.000+00:00 + primary_email: primary_email + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + display_name: display_name + email: email + properties: + created_at: + format: date-time + type: string + email: + type: string + id: + description: "example: 3fa85f64-5717-4562-b3fc-2c963f66afa6" + format: uuid + type: string + is_primary: + type: boolean + is_verified: + type: boolean + updated_at: + format: date-time + type: string + user: + $ref: "#/components/schemas/models.User" + user_id: + format: uuid + type: string + type: object + utils.ErrorResponse: + example: + code: code + message: message + properties: + code: + description: |- + A machine-readable error code, e.g. "validation_error" + example: validation_error + type: string + message: + description: |- + Human-readable message + example: slug is required + type: string + type: object + securitySchemes: + ApiKeyAuth: + description: User API key + in: header + name: X-API-KEY + type: apiKey + BearerAuth: + description: Bearer token authentication + in: header + name: Authorization + type: apiKey + OrgKeyAuth: + description: Org-level key/secret authentication + in: header + name: X-ORG-KEY + type: apiKey + OrgSecretAuth: + description: Org-level secret + in: header + name: X-ORG-SECRET + type: apiKey +x-original-swagger-version: "2.0" diff --git a/sdk/go/api_auth.go b/sdk/go/api_auth.go new file mode 100644 index 0000000..1f706b3 --- /dev/null +++ b/sdk/go/api_auth.go @@ -0,0 +1,537 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// AuthAPIService AuthAPI service +type AuthAPIService service + +type ApiAuthCallbackRequest struct { + ctx context.Context + ApiService *AuthAPIService + provider string +} + +func (r ApiAuthCallbackRequest) Execute() (*DtoTokenPair, *http.Response, error) { + return r.ApiService.AuthCallbackExecute(r) +} + +/* +AuthCallback Handle social login callback + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param provider google|github + @return ApiAuthCallbackRequest +*/ +func (a *AuthAPIService) AuthCallback(ctx context.Context, provider string) ApiAuthCallbackRequest { + return ApiAuthCallbackRequest{ + ApiService: a, + ctx: ctx, + provider: provider, + } +} + +// Execute executes the request +// +// @return DtoTokenPair +func (a *AuthAPIService) AuthCallbackExecute(r ApiAuthCallbackRequest) (*DtoTokenPair, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoTokenPair + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "AuthAPIService.AuthCallback") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/auth/{provider}/callback" + localVarPath = strings.Replace(localVarPath, "{"+"provider"+"}", url.PathEscape(parameterValueToString(r.provider, "provider")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiAuthStartRequest struct { + ctx context.Context + ApiService *AuthAPIService + provider string +} + +func (r ApiAuthStartRequest) Execute() (*DtoAuthStartResponse, *http.Response, error) { + return r.ApiService.AuthStartExecute(r) +} + +/* +AuthStart Begin social login + +Returns provider authorization URL for the frontend to redirect + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param provider google|github + @return ApiAuthStartRequest +*/ +func (a *AuthAPIService) AuthStart(ctx context.Context, provider string) ApiAuthStartRequest { + return ApiAuthStartRequest{ + ApiService: a, + ctx: ctx, + provider: provider, + } +} + +// Execute executes the request +// +// @return DtoAuthStartResponse +func (a *AuthAPIService) AuthStartExecute(r ApiAuthStartRequest) (*DtoAuthStartResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoAuthStartResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "AuthAPIService.AuthStart") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/auth/{provider}/start" + localVarPath = strings.Replace(localVarPath, "{"+"provider"+"}", url.PathEscape(parameterValueToString(r.provider, "provider")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiGetJWKSRequest struct { + ctx context.Context + ApiService *AuthAPIService +} + +func (r ApiGetJWKSRequest) Execute() (*DtoJWKS, *http.Response, error) { + return r.ApiService.GetJWKSExecute(r) +} + +/* +GetJWKS Get JWKS + +Returns the JSON Web Key Set for token verification + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiGetJWKSRequest +*/ +func (a *AuthAPIService) GetJWKS(ctx context.Context) ApiGetJWKSRequest { + return ApiGetJWKSRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return DtoJWKS +func (a *AuthAPIService) GetJWKSExecute(r ApiGetJWKSRequest) (*DtoJWKS, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoJWKS + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "AuthAPIService.GetJWKS") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/.well-known/jwks.json" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiLogoutRequest struct { + ctx context.Context + ApiService *AuthAPIService + body *DtoLogoutRequest +} + +// Refresh token +func (r ApiLogoutRequest) Body(body DtoLogoutRequest) ApiLogoutRequest { + r.body = &body + return r +} + +func (r ApiLogoutRequest) Execute() (*http.Response, error) { + return r.ApiService.LogoutExecute(r) +} + +/* +Logout Revoke refresh token family (logout everywhere) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiLogoutRequest +*/ +func (a *AuthAPIService) Logout(ctx context.Context) ApiLogoutRequest { + return ApiLogoutRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +func (a *AuthAPIService) LogoutExecute(r ApiLogoutRequest) (*http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "AuthAPIService.Logout") + if err != nil { + return nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/auth/logout" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.body + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + +type ApiRefreshRequest struct { + ctx context.Context + ApiService *AuthAPIService + body *DtoRefreshRequest +} + +// Refresh token +func (r ApiRefreshRequest) Body(body DtoRefreshRequest) ApiRefreshRequest { + r.body = &body + return r +} + +func (r ApiRefreshRequest) Execute() (*DtoTokenPair, *http.Response, error) { + return r.ApiService.RefreshExecute(r) +} + +/* +Refresh Rotate refresh token + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiRefreshRequest +*/ +func (a *AuthAPIService) Refresh(ctx context.Context) ApiRefreshRequest { + return ApiRefreshRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return DtoTokenPair +func (a *AuthAPIService) RefreshExecute(r ApiRefreshRequest) (*DtoTokenPair, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoTokenPair + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "AuthAPIService.Refresh") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/auth/refresh" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.body + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/sdk/go/api_me.go b/sdk/go/api_me.go new file mode 100644 index 0000000..71d8769 --- /dev/null +++ b/sdk/go/api_me.go @@ -0,0 +1,286 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" +) + +// MeAPIService MeAPI service +type MeAPIService service + +type ApiGetMeRequest struct { + ctx context.Context + ApiService *MeAPIService +} + +func (r ApiGetMeRequest) Execute() (*HandlersMeResponse, *http.Response, error) { + return r.ApiService.GetMeExecute(r) +} + +/* +GetMe Get current user profile + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiGetMeRequest +*/ +func (a *MeAPIService) GetMe(ctx context.Context) ApiGetMeRequest { + return ApiGetMeRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return HandlersMeResponse +func (a *MeAPIService) GetMeExecute(r ApiGetMeRequest) (*HandlersMeResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *HandlersMeResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "MeAPIService.GetMe") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/me" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["ApiKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-API-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiUpdateMeRequest struct { + ctx context.Context + ApiService *MeAPIService + body *HandlersUpdateMeRequest +} + +// Patch profile +func (r ApiUpdateMeRequest) Body(body HandlersUpdateMeRequest) ApiUpdateMeRequest { + r.body = &body + return r +} + +func (r ApiUpdateMeRequest) Execute() (*ModelsUser, *http.Response, error) { + return r.ApiService.UpdateMeExecute(r) +} + +/* +UpdateMe Update current user profile + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiUpdateMeRequest +*/ +func (a *MeAPIService) UpdateMe(ctx context.Context) ApiUpdateMeRequest { + return ApiUpdateMeRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return ModelsUser +func (a *MeAPIService) UpdateMeExecute(r ApiUpdateMeRequest) (*ModelsUser, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPatch + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *ModelsUser + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "MeAPIService.UpdateMe") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/me" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["ApiKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-API-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/sdk/go/api_me_api_keys.go b/sdk/go/api_me_api_keys.go new file mode 100644 index 0000000..5b84de3 --- /dev/null +++ b/sdk/go/api_me_api_keys.go @@ -0,0 +1,393 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// MeAPIKeysAPIService MeAPIKeysAPI service +type MeAPIKeysAPIService service + +type ApiCreateUserAPIKeyRequest struct { + ctx context.Context + ApiService *MeAPIKeysAPIService + body *HandlersCreateUserKeyRequest +} + +// Key options +func (r ApiCreateUserAPIKeyRequest) Body(body HandlersCreateUserKeyRequest) ApiCreateUserAPIKeyRequest { + r.body = &body + return r +} + +func (r ApiCreateUserAPIKeyRequest) Execute() (*HandlersUserAPIKeyOut, *http.Response, error) { + return r.ApiService.CreateUserAPIKeyExecute(r) +} + +/* +CreateUserAPIKey Create a new user API key + +Returns the plaintext key once. Store it securely on the client side. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCreateUserAPIKeyRequest +*/ +func (a *MeAPIKeysAPIService) CreateUserAPIKey(ctx context.Context) ApiCreateUserAPIKeyRequest { + return ApiCreateUserAPIKeyRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return HandlersUserAPIKeyOut +func (a *MeAPIKeysAPIService) CreateUserAPIKeyExecute(r ApiCreateUserAPIKeyRequest) (*HandlersUserAPIKeyOut, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *HandlersUserAPIKeyOut + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "MeAPIKeysAPIService.CreateUserAPIKey") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/me/api-keys" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["ApiKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-API-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiDeleteUserAPIKeyRequest struct { + ctx context.Context + ApiService *MeAPIKeysAPIService + id string +} + +func (r ApiDeleteUserAPIKeyRequest) Execute() (*http.Response, error) { + return r.ApiService.DeleteUserAPIKeyExecute(r) +} + +/* +DeleteUserAPIKey Delete a user API key + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Key ID (UUID) + @return ApiDeleteUserAPIKeyRequest +*/ +func (a *MeAPIKeysAPIService) DeleteUserAPIKey(ctx context.Context, id string) ApiDeleteUserAPIKeyRequest { + return ApiDeleteUserAPIKeyRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +func (a *MeAPIKeysAPIService) DeleteUserAPIKeyExecute(r ApiDeleteUserAPIKeyRequest) (*http.Response, error) { + var ( + localVarHTTPMethod = http.MethodDelete + localVarPostBody interface{} + formFiles []formFile + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "MeAPIKeysAPIService.DeleteUserAPIKey") + if err != nil { + return nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/me/api-keys/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + +type ApiListUserAPIKeysRequest struct { + ctx context.Context + ApiService *MeAPIKeysAPIService +} + +func (r ApiListUserAPIKeysRequest) Execute() ([]HandlersUserAPIKeyOut, *http.Response, error) { + return r.ApiService.ListUserAPIKeysExecute(r) +} + +/* +ListUserAPIKeys List my API keys + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiListUserAPIKeysRequest +*/ +func (a *MeAPIKeysAPIService) ListUserAPIKeys(ctx context.Context) ApiListUserAPIKeysRequest { + return ApiListUserAPIKeysRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return []HandlersUserAPIKeyOut +func (a *MeAPIKeysAPIService) ListUserAPIKeysExecute(r ApiListUserAPIKeysRequest) ([]HandlersUserAPIKeyOut, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue []HandlersUserAPIKeyOut + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "MeAPIKeysAPIService.ListUserAPIKeys") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/me/api-keys" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["ApiKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-API-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/sdk/go/api_orgs.go b/sdk/go/api_orgs.go new file mode 100644 index 0000000..6e97fcb --- /dev/null +++ b/sdk/go/api_orgs.go @@ -0,0 +1,1476 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// OrgsAPIService OrgsAPI service +type OrgsAPIService service + +type ApiAddOrUpdateMemberRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string + body *HandlersMemberUpsertReq +} + +// User & role +func (r ApiAddOrUpdateMemberRequest) Body(body HandlersMemberUpsertReq) ApiAddOrUpdateMemberRequest { + r.body = &body + return r +} + +func (r ApiAddOrUpdateMemberRequest) Execute() (*HandlersMemberOut, *http.Response, error) { + return r.ApiService.AddOrUpdateMemberExecute(r) +} + +/* +AddOrUpdateMember Add or update a member (owner/admin) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @return ApiAddOrUpdateMemberRequest +*/ +func (a *OrgsAPIService) AddOrUpdateMember(ctx context.Context, id string) ApiAddOrUpdateMemberRequest { + return ApiAddOrUpdateMemberRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return HandlersMemberOut +func (a *OrgsAPIService) AddOrUpdateMemberExecute(r ApiAddOrUpdateMemberRequest) (*HandlersMemberOut, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *HandlersMemberOut + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.AddOrUpdateMember") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}/members" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiCreateOrgRequest struct { + ctx context.Context + ApiService *OrgsAPIService + body *HandlersOrgCreateReq +} + +// Org payload +func (r ApiCreateOrgRequest) Body(body HandlersOrgCreateReq) ApiCreateOrgRequest { + r.body = &body + return r +} + +func (r ApiCreateOrgRequest) Execute() (*ModelsOrganization, *http.Response, error) { + return r.ApiService.CreateOrgExecute(r) +} + +/* +CreateOrg Create organization + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCreateOrgRequest +*/ +func (a *OrgsAPIService) CreateOrg(ctx context.Context) ApiCreateOrgRequest { + return ApiCreateOrgRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return ModelsOrganization +func (a *OrgsAPIService) CreateOrgExecute(r ApiCreateOrgRequest) (*ModelsOrganization, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *ModelsOrganization + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.CreateOrg") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 409 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiCreateOrgKeyRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string + body *HandlersOrgKeyCreateReq +} + +// Key name + optional expiry +func (r ApiCreateOrgKeyRequest) Body(body HandlersOrgKeyCreateReq) ApiCreateOrgKeyRequest { + r.body = &body + return r +} + +func (r ApiCreateOrgKeyRequest) Execute() (*HandlersOrgKeyCreateResp, *http.Response, error) { + return r.ApiService.CreateOrgKeyExecute(r) +} + +/* +CreateOrgKey Create org key/secret pair (owner/admin) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @return ApiCreateOrgKeyRequest +*/ +func (a *OrgsAPIService) CreateOrgKey(ctx context.Context, id string) ApiCreateOrgKeyRequest { + return ApiCreateOrgKeyRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return HandlersOrgKeyCreateResp +func (a *OrgsAPIService) CreateOrgKeyExecute(r ApiCreateOrgKeyRequest) (*HandlersOrgKeyCreateResp, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *HandlersOrgKeyCreateResp + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.CreateOrgKey") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}/api-keys" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiDeleteOrgRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string +} + +func (r ApiDeleteOrgRequest) Execute() (*http.Response, error) { + return r.ApiService.DeleteOrgExecute(r) +} + +/* +DeleteOrg Delete organization (owner) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @return ApiDeleteOrgRequest +*/ +func (a *OrgsAPIService) DeleteOrg(ctx context.Context, id string) ApiDeleteOrgRequest { + return ApiDeleteOrgRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +func (a *OrgsAPIService) DeleteOrgExecute(r ApiDeleteOrgRequest) (*http.Response, error) { + var ( + localVarHTTPMethod = http.MethodDelete + localVarPostBody interface{} + formFiles []formFile + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.DeleteOrg") + if err != nil { + return nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + +type ApiDeleteOrgKeyRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string + keyId string +} + +func (r ApiDeleteOrgKeyRequest) Execute() (*http.Response, error) { + return r.ApiService.DeleteOrgKeyExecute(r) +} + +/* +DeleteOrgKey Delete org key (owner/admin) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @param keyId Key ID (UUID) + @return ApiDeleteOrgKeyRequest +*/ +func (a *OrgsAPIService) DeleteOrgKey(ctx context.Context, id string, keyId string) ApiDeleteOrgKeyRequest { + return ApiDeleteOrgKeyRequest{ + ApiService: a, + ctx: ctx, + id: id, + keyId: keyId, + } +} + +// Execute executes the request +func (a *OrgsAPIService) DeleteOrgKeyExecute(r ApiDeleteOrgKeyRequest) (*http.Response, error) { + var ( + localVarHTTPMethod = http.MethodDelete + localVarPostBody interface{} + formFiles []formFile + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.DeleteOrgKey") + if err != nil { + return nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}/api-keys/{key_id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + localVarPath = strings.Replace(localVarPath, "{"+"key_id"+"}", url.PathEscape(parameterValueToString(r.keyId, "keyId")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + +type ApiGetOrgRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string +} + +func (r ApiGetOrgRequest) Execute() (*ModelsOrganization, *http.Response, error) { + return r.ApiService.GetOrgExecute(r) +} + +/* +GetOrg Get organization + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @return ApiGetOrgRequest +*/ +func (a *OrgsAPIService) GetOrg(ctx context.Context, id string) ApiGetOrgRequest { + return ApiGetOrgRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return ModelsOrganization +func (a *OrgsAPIService) GetOrgExecute(r ApiGetOrgRequest) (*ModelsOrganization, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *ModelsOrganization + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.GetOrg") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiListMembersRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string +} + +func (r ApiListMembersRequest) Execute() ([]HandlersMemberOut, *http.Response, error) { + return r.ApiService.ListMembersExecute(r) +} + +/* +ListMembers List members in org + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @return ApiListMembersRequest +*/ +func (a *OrgsAPIService) ListMembers(ctx context.Context, id string) ApiListMembersRequest { + return ApiListMembersRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return []HandlersMemberOut +func (a *OrgsAPIService) ListMembersExecute(r ApiListMembersRequest) ([]HandlersMemberOut, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue []HandlersMemberOut + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.ListMembers") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}/members" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiListMyOrgsRequest struct { + ctx context.Context + ApiService *OrgsAPIService +} + +func (r ApiListMyOrgsRequest) Execute() ([]ModelsOrganization, *http.Response, error) { + return r.ApiService.ListMyOrgsExecute(r) +} + +/* +ListMyOrgs List organizations I belong to + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiListMyOrgsRequest +*/ +func (a *OrgsAPIService) ListMyOrgs(ctx context.Context) ApiListMyOrgsRequest { + return ApiListMyOrgsRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return []ModelsOrganization +func (a *OrgsAPIService) ListMyOrgsExecute(r ApiListMyOrgsRequest) ([]ModelsOrganization, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue []ModelsOrganization + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.ListMyOrgs") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiListOrgKeysRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string +} + +func (r ApiListOrgKeysRequest) Execute() ([]ModelsAPIKey, *http.Response, error) { + return r.ApiService.ListOrgKeysExecute(r) +} + +/* +ListOrgKeys List org-scoped API keys (no secrets) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @return ApiListOrgKeysRequest +*/ +func (a *OrgsAPIService) ListOrgKeys(ctx context.Context, id string) ApiListOrgKeysRequest { + return ApiListOrgKeysRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return []ModelsAPIKey +func (a *OrgsAPIService) ListOrgKeysExecute(r ApiListOrgKeysRequest) ([]ModelsAPIKey, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue []ModelsAPIKey + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.ListOrgKeys") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}/api-keys" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiRemoveMemberRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string + userId string +} + +func (r ApiRemoveMemberRequest) Execute() (*http.Response, error) { + return r.ApiService.RemoveMemberExecute(r) +} + +/* +RemoveMember Remove a member (owner/admin) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @param userId User ID (UUID) + @return ApiRemoveMemberRequest +*/ +func (a *OrgsAPIService) RemoveMember(ctx context.Context, id string, userId string) ApiRemoveMemberRequest { + return ApiRemoveMemberRequest{ + ApiService: a, + ctx: ctx, + id: id, + userId: userId, + } +} + +// Execute executes the request +func (a *OrgsAPIService) RemoveMemberExecute(r ApiRemoveMemberRequest) (*http.Response, error) { + var ( + localVarHTTPMethod = http.MethodDelete + localVarPostBody interface{} + formFiles []formFile + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.RemoveMember") + if err != nil { + return nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}/members/{user_id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + localVarPath = strings.Replace(localVarPath, "{"+"user_id"+"}", url.PathEscape(parameterValueToString(r.userId, "userId")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + +type ApiUpdateOrgRequest struct { + ctx context.Context + ApiService *OrgsAPIService + id string + body *HandlersOrgUpdateReq +} + +// Update payload +func (r ApiUpdateOrgRequest) Body(body HandlersOrgUpdateReq) ApiUpdateOrgRequest { + r.body = &body + return r +} + +func (r ApiUpdateOrgRequest) Execute() (*ModelsOrganization, *http.Response, error) { + return r.ApiService.UpdateOrgExecute(r) +} + +/* +UpdateOrg Update organization (owner/admin) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Org ID (UUID) + @return ApiUpdateOrgRequest +*/ +func (a *OrgsAPIService) UpdateOrg(ctx context.Context, id string) ApiUpdateOrgRequest { + return ApiUpdateOrgRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return ModelsOrganization +func (a *OrgsAPIService) UpdateOrgExecute(r ApiUpdateOrgRequest) (*ModelsOrganization, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPatch + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *ModelsOrganization + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrgsAPIService.UpdateOrg") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/orgs/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v UtilsErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/sdk/go/api_servers.go b/sdk/go/api_servers.go new file mode 100644 index 0000000..7bdb5c9 --- /dev/null +++ b/sdk/go/api_servers.go @@ -0,0 +1,1065 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// ServersAPIService ServersAPI service +type ServersAPIService service + +type ApiCreateServerRequest struct { + ctx context.Context + ApiService *ServersAPIService + body *DtoCreateServerRequest + xOrgID *string +} + +// Server payload +func (r ApiCreateServerRequest) Body(body DtoCreateServerRequest) ApiCreateServerRequest { + r.body = &body + return r +} + +// Organization UUID +func (r ApiCreateServerRequest) XOrgID(xOrgID string) ApiCreateServerRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiCreateServerRequest) Execute() (*DtoServerResponse, *http.Response, error) { + return r.ApiService.CreateServerExecute(r) +} + +/* +CreateServer Create server (org scoped) + +Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id belongs to the org. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCreateServerRequest +*/ +func (a *ServersAPIService) CreateServer(ctx context.Context) ApiCreateServerRequest { + return ApiCreateServerRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return DtoServerResponse +func (a *ServersAPIService) CreateServerExecute(r ApiCreateServerRequest) (*DtoServerResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoServerResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ServersAPIService.CreateServer") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/servers" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiDeleteServerRequest struct { + ctx context.Context + ApiService *ServersAPIService + id string + xOrgID *string +} + +// Organization UUID +func (r ApiDeleteServerRequest) XOrgID(xOrgID string) ApiDeleteServerRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiDeleteServerRequest) Execute() (string, *http.Response, error) { + return r.ApiService.DeleteServerExecute(r) +} + +/* +DeleteServer Delete server (org scoped) + +Permanently deletes the server. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Server ID (UUID) + @return ApiDeleteServerRequest +*/ +func (a *ServersAPIService) DeleteServer(ctx context.Context, id string) ApiDeleteServerRequest { + return ApiDeleteServerRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return string +func (a *ServersAPIService) DeleteServerExecute(r ApiDeleteServerRequest) (string, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodDelete + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue string + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ServersAPIService.DeleteServer") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/servers/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiGetServerRequest struct { + ctx context.Context + ApiService *ServersAPIService + id string + xOrgID *string +} + +// Organization UUID +func (r ApiGetServerRequest) XOrgID(xOrgID string) ApiGetServerRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiGetServerRequest) Execute() (*DtoServerResponse, *http.Response, error) { + return r.ApiService.GetServerExecute(r) +} + +/* +GetServer Get server by ID (org scoped) + +Returns one server in the given organization. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Server ID (UUID) + @return ApiGetServerRequest +*/ +func (a *ServersAPIService) GetServer(ctx context.Context, id string) ApiGetServerRequest { + return ApiGetServerRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return DtoServerResponse +func (a *ServersAPIService) GetServerExecute(r ApiGetServerRequest) (*DtoServerResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoServerResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ServersAPIService.GetServer") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/servers/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiListServersRequest struct { + ctx context.Context + ApiService *ServersAPIService + xOrgID *string + status *string + role *string +} + +// Organization UUID +func (r ApiListServersRequest) XOrgID(xOrgID string) ApiListServersRequest { + r.xOrgID = &xOrgID + return r +} + +// Filter by status (pending|provisioning|ready|failed) +func (r ApiListServersRequest) Status(status string) ApiListServersRequest { + r.status = &status + return r +} + +// Filter by role +func (r ApiListServersRequest) Role(role string) ApiListServersRequest { + r.role = &role + return r +} + +func (r ApiListServersRequest) Execute() ([]DtoServerResponse, *http.Response, error) { + return r.ApiService.ListServersExecute(r) +} + +/* +ListServers List servers (org scoped) + +Returns servers for the organization in X-Org-ID. Optional filters: status, role. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiListServersRequest +*/ +func (a *ServersAPIService) ListServers(ctx context.Context) ApiListServersRequest { + return ApiListServersRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return []DtoServerResponse +func (a *ServersAPIService) ListServersExecute(r ApiListServersRequest) ([]DtoServerResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue []DtoServerResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ServersAPIService.ListServers") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/servers" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.status != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "status", r.status, "", "") + } + if r.role != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "role", r.role, "", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiUpdateServerRequest struct { + ctx context.Context + ApiService *ServersAPIService + id string + body *DtoUpdateServerRequest + xOrgID *string +} + +// Fields to update +func (r ApiUpdateServerRequest) Body(body DtoUpdateServerRequest) ApiUpdateServerRequest { + r.body = &body + return r +} + +// Organization UUID +func (r ApiUpdateServerRequest) XOrgID(xOrgID string) ApiUpdateServerRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiUpdateServerRequest) Execute() (*DtoServerResponse, *http.Response, error) { + return r.ApiService.UpdateServerExecute(r) +} + +/* +UpdateServer Update server (org scoped) + +Partially update fields; changing ssh_key_id validates ownership. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Server ID (UUID) + @return ApiUpdateServerRequest +*/ +func (a *ServersAPIService) UpdateServer(ctx context.Context, id string) ApiUpdateServerRequest { + return ApiUpdateServerRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return DtoServerResponse +func (a *ServersAPIService) UpdateServerExecute(r ApiUpdateServerRequest) (*DtoServerResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPatch + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoServerResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ServersAPIService.UpdateServer") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/servers/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/sdk/go/api_ssh.go b/sdk/go/api_ssh.go new file mode 100644 index 0000000..1d37090 --- /dev/null +++ b/sdk/go/api_ssh.go @@ -0,0 +1,1055 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// SshAPIService SshAPI service +type SshAPIService service + +type ApiCreateSSHKeyRequest struct { + ctx context.Context + ApiService *SshAPIService + body *DtoCreateSSHRequest + xOrgID *string +} + +// Key generation options +func (r ApiCreateSSHKeyRequest) Body(body DtoCreateSSHRequest) ApiCreateSSHKeyRequest { + r.body = &body + return r +} + +// Organization UUID +func (r ApiCreateSSHKeyRequest) XOrgID(xOrgID string) ApiCreateSSHKeyRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiCreateSSHKeyRequest) Execute() (*DtoSshResponse, *http.Response, error) { + return r.ApiService.CreateSSHKeyExecute(r) +} + +/* +CreateSSHKey Create ssh keypair (org scoped) + +Generates an RSA or ED25519 keypair, saves it, and returns metadata. For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores bits. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCreateSSHKeyRequest +*/ +func (a *SshAPIService) CreateSSHKey(ctx context.Context) ApiCreateSSHKeyRequest { + return ApiCreateSSHKeyRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return DtoSshResponse +func (a *SshAPIService) CreateSSHKeyExecute(r ApiCreateSSHKeyRequest) (*DtoSshResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoSshResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "SshAPIService.CreateSSHKey") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/ssh" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiDeleteSSHKeyRequest struct { + ctx context.Context + ApiService *SshAPIService + id string + xOrgID *string +} + +// Organization UUID +func (r ApiDeleteSSHKeyRequest) XOrgID(xOrgID string) ApiDeleteSSHKeyRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiDeleteSSHKeyRequest) Execute() (string, *http.Response, error) { + return r.ApiService.DeleteSSHKeyExecute(r) +} + +/* +DeleteSSHKey Delete ssh keypair (org scoped) + +Permanently deletes a keypair. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id SSH Key ID (UUID) + @return ApiDeleteSSHKeyRequest +*/ +func (a *SshAPIService) DeleteSSHKey(ctx context.Context, id string) ApiDeleteSSHKeyRequest { + return ApiDeleteSSHKeyRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return string +func (a *SshAPIService) DeleteSSHKeyExecute(r ApiDeleteSSHKeyRequest) (string, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodDelete + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue string + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "SshAPIService.DeleteSSHKey") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/ssh/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiDownloadSSHKeyRequest struct { + ctx context.Context + ApiService *SshAPIService + xOrgID *string + id string + part *string +} + +// Organization UUID +func (r ApiDownloadSSHKeyRequest) XOrgID(xOrgID string) ApiDownloadSSHKeyRequest { + r.xOrgID = &xOrgID + return r +} + +// Which part to download +func (r ApiDownloadSSHKeyRequest) Part(part string) ApiDownloadSSHKeyRequest { + r.part = &part + return r +} + +func (r ApiDownloadSSHKeyRequest) Execute() (string, *http.Response, error) { + return r.ApiService.DownloadSSHKeyExecute(r) +} + +/* +DownloadSSHKey Download ssh key files by ID (org scoped) + +Download `part=public|private|both` of the keypair. `both` returns a zip file. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id SSH Key ID (UUID) + @return ApiDownloadSSHKeyRequest +*/ +func (a *SshAPIService) DownloadSSHKey(ctx context.Context, id string) ApiDownloadSSHKeyRequest { + return ApiDownloadSSHKeyRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return string +func (a *SshAPIService) DownloadSSHKeyExecute(r ApiDownloadSSHKeyRequest) (string, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue string + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "SshAPIService.DownloadSSHKey") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/ssh/{id}/download" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.xOrgID == nil { + return localVarReturnValue, nil, reportError("xOrgID is required and must be specified") + } + if r.part == nil { + return localVarReturnValue, nil, reportError("part is required and must be specified") + } + + parameterAddToHeaderOrQuery(localVarQueryParams, "part", r.part, "", "") + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiGetSSHKeyRequest struct { + ctx context.Context + ApiService *SshAPIService + id string + xOrgID *string + reveal *bool +} + +// Organization UUID +func (r ApiGetSSHKeyRequest) XOrgID(xOrgID string) ApiGetSSHKeyRequest { + r.xOrgID = &xOrgID + return r +} + +// Reveal private key PEM +func (r ApiGetSSHKeyRequest) Reveal(reveal bool) ApiGetSSHKeyRequest { + r.reveal = &reveal + return r +} + +func (r ApiGetSSHKeyRequest) Execute() (*DtoSshRevealResponse, *http.Response, error) { + return r.ApiService.GetSSHKeyExecute(r) +} + +/* +GetSSHKey Get ssh key by ID (org scoped) + +Returns public key fields. Append `?reveal=true` to include the private key PEM. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id SSH Key ID (UUID) + @return ApiGetSSHKeyRequest +*/ +func (a *SshAPIService) GetSSHKey(ctx context.Context, id string) ApiGetSSHKeyRequest { + return ApiGetSSHKeyRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return DtoSshRevealResponse +func (a *SshAPIService) GetSSHKeyExecute(r ApiGetSSHKeyRequest) (*DtoSshRevealResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoSshRevealResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "SshAPIService.GetSSHKey") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/ssh/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.reveal != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "reveal", r.reveal, "", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiListPublicSshKeysRequest struct { + ctx context.Context + ApiService *SshAPIService + xOrgID *string +} + +// Organization UUID +func (r ApiListPublicSshKeysRequest) XOrgID(xOrgID string) ApiListPublicSshKeysRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiListPublicSshKeysRequest) Execute() ([]DtoSshResponse, *http.Response, error) { + return r.ApiService.ListPublicSshKeysExecute(r) +} + +/* +ListPublicSshKeys List ssh keys (org scoped) + +Returns ssh keys for the organization in X-Org-ID. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiListPublicSshKeysRequest +*/ +func (a *SshAPIService) ListPublicSshKeys(ctx context.Context) ApiListPublicSshKeysRequest { + return ApiListPublicSshKeysRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return []DtoSshResponse +func (a *SshAPIService) ListPublicSshKeysExecute(r ApiListPublicSshKeysRequest) ([]DtoSshResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue []DtoSshResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "SshAPIService.ListPublicSshKeys") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/ssh" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/sdk/go/api_taints.go b/sdk/go/api_taints.go new file mode 100644 index 0000000..2190b8d --- /dev/null +++ b/sdk/go/api_taints.go @@ -0,0 +1,1073 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// TaintsAPIService TaintsAPI service +type TaintsAPIService service + +type ApiCreateTaintRequest struct { + ctx context.Context + ApiService *TaintsAPIService + body *DtoCreateTaintRequest + xOrgID *string +} + +// Taint payload +func (r ApiCreateTaintRequest) Body(body DtoCreateTaintRequest) ApiCreateTaintRequest { + r.body = &body + return r +} + +// Organization UUID +func (r ApiCreateTaintRequest) XOrgID(xOrgID string) ApiCreateTaintRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiCreateTaintRequest) Execute() (*DtoTaintResponse, *http.Response, error) { + return r.ApiService.CreateTaintExecute(r) +} + +/* +CreateTaint Create node taint (org scoped) + +Creates a taint. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCreateTaintRequest +*/ +func (a *TaintsAPIService) CreateTaint(ctx context.Context) ApiCreateTaintRequest { + return ApiCreateTaintRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return DtoTaintResponse +func (a *TaintsAPIService) CreateTaintExecute(r ApiCreateTaintRequest) (*DtoTaintResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoTaintResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "TaintsAPIService.CreateTaint") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/taints" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiDeleteTaintRequest struct { + ctx context.Context + ApiService *TaintsAPIService + id string + xOrgID *string +} + +// Organization UUID +func (r ApiDeleteTaintRequest) XOrgID(xOrgID string) ApiDeleteTaintRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiDeleteTaintRequest) Execute() (string, *http.Response, error) { + return r.ApiService.DeleteTaintExecute(r) +} + +/* +DeleteTaint Delete taint (org scoped) + +Permanently deletes the taint. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Node Taint ID (UUID) + @return ApiDeleteTaintRequest +*/ +func (a *TaintsAPIService) DeleteTaint(ctx context.Context, id string) ApiDeleteTaintRequest { + return ApiDeleteTaintRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return string +func (a *TaintsAPIService) DeleteTaintExecute(r ApiDeleteTaintRequest) (string, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodDelete + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue string + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "TaintsAPIService.DeleteTaint") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/taints/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiGetTaintRequest struct { + ctx context.Context + ApiService *TaintsAPIService + id string + xOrgID *string +} + +// Organization UUID +func (r ApiGetTaintRequest) XOrgID(xOrgID string) ApiGetTaintRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiGetTaintRequest) Execute() (*DtoTaintResponse, *http.Response, error) { + return r.ApiService.GetTaintExecute(r) +} + +/* +GetTaint Get node taint by ID (org scoped) + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Node Taint ID (UUID) + @return ApiGetTaintRequest +*/ +func (a *TaintsAPIService) GetTaint(ctx context.Context, id string) ApiGetTaintRequest { + return ApiGetTaintRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return DtoTaintResponse +func (a *TaintsAPIService) GetTaintExecute(r ApiGetTaintRequest) (*DtoTaintResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoTaintResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "TaintsAPIService.GetTaint") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/taints/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiListTaintsRequest struct { + ctx context.Context + ApiService *TaintsAPIService + xOrgID *string + key *string + value *string + q *string +} + +// Organization UUID +func (r ApiListTaintsRequest) XOrgID(xOrgID string) ApiListTaintsRequest { + r.xOrgID = &xOrgID + return r +} + +// Exact key +func (r ApiListTaintsRequest) Key(key string) ApiListTaintsRequest { + r.key = &key + return r +} + +// Exact value +func (r ApiListTaintsRequest) Value(value string) ApiListTaintsRequest { + r.value = &value + return r +} + +// key contains (case-insensitive) +func (r ApiListTaintsRequest) Q(q string) ApiListTaintsRequest { + r.q = &q + return r +} + +func (r ApiListTaintsRequest) Execute() ([]DtoTaintResponse, *http.Response, error) { + return r.ApiService.ListTaintsExecute(r) +} + +/* +ListTaints List node pool taints (org scoped) + +Returns node taints for the organization in X-Org-ID. Filters: `key`, `value`, and `q` (key contains). Add `include=node_pools` to include linked node pools. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiListTaintsRequest +*/ +func (a *TaintsAPIService) ListTaints(ctx context.Context) ApiListTaintsRequest { + return ApiListTaintsRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return []DtoTaintResponse +func (a *TaintsAPIService) ListTaintsExecute(r ApiListTaintsRequest) ([]DtoTaintResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue []DtoTaintResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "TaintsAPIService.ListTaints") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/taints" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.key != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "key", r.key, "", "") + } + if r.value != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "value", r.value, "", "") + } + if r.q != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "q", r.q, "", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiUpdateTaintRequest struct { + ctx context.Context + ApiService *TaintsAPIService + id string + body *DtoUpdateTaintRequest + xOrgID *string +} + +// Fields to update +func (r ApiUpdateTaintRequest) Body(body DtoUpdateTaintRequest) ApiUpdateTaintRequest { + r.body = &body + return r +} + +// Organization UUID +func (r ApiUpdateTaintRequest) XOrgID(xOrgID string) ApiUpdateTaintRequest { + r.xOrgID = &xOrgID + return r +} + +func (r ApiUpdateTaintRequest) Execute() (*DtoTaintResponse, *http.Response, error) { + return r.ApiService.UpdateTaintExecute(r) +} + +/* +UpdateTaint Update node taint (org scoped) + +Partially update taint fields. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id Node Taint ID (UUID) + @return ApiUpdateTaintRequest +*/ +func (a *TaintsAPIService) UpdateTaint(ctx context.Context, id string) ApiUpdateTaintRequest { + return ApiUpdateTaintRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return DtoTaintResponse +func (a *TaintsAPIService) UpdateTaintExecute(r ApiUpdateTaintRequest) (*DtoTaintResponse, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPatch + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *DtoTaintResponse + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "TaintsAPIService.UpdateTaint") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/taints/{id}" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.body == nil { + return localVarReturnValue, nil, reportError("body is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + if r.xOrgID != nil { + parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Org-ID", r.xOrgID, "", "") + } + // body params + localVarPostBody = r.body + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgKeyAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-KEY"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["OrgSecretAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["X-ORG-SECRET"] = key + } + } + } + if r.ctx != nil { + // API Key Authentication + if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok { + if apiKey, ok := auth["BearerAuth"]; ok { + var key string + if apiKey.Prefix != "" { + key = apiKey.Prefix + " " + apiKey.Key + } else { + key = apiKey.Key + } + localVarHeaderParams["Authorization"] = key + } + } + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 500 { + var v string + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/sdk/go/client.go b/sdk/go/client.go new file mode 100644 index 0000000..dc0c0c6 --- /dev/null +++ b/sdk/go/client.go @@ -0,0 +1,673 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "context" + "encoding/json" + "encoding/xml" + "errors" + "fmt" + "io" + "log" + "mime/multipart" + "net/http" + "net/http/httputil" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "time" + "unicode/utf8" +) + +var ( + JsonCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?json)`) + XmlCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?xml)`) + queryParamSplit = regexp.MustCompile(`(^|&)([^&]+)`) + queryDescape = strings.NewReplacer("%5B", "[", "%5D", "]") +) + +// APIClient manages communication with the AutoGlue API API v1.0 +// In most cases there should be only one, shared, APIClient. +type APIClient struct { + cfg *Configuration + common service // Reuse a single struct instead of allocating one for each service on the heap. + + // API Services + + AuthAPI *AuthAPIService + + MeAPI *MeAPIService + + MeAPIKeysAPI *MeAPIKeysAPIService + + OrgsAPI *OrgsAPIService + + ServersAPI *ServersAPIService + + SshAPI *SshAPIService + + TaintsAPI *TaintsAPIService +} + +type service struct { + client *APIClient +} + +// NewAPIClient creates a new API client. Requires a userAgent string describing your application. +// optionally a custom http.Client to allow for advanced features such as caching. +func NewAPIClient(cfg *Configuration) *APIClient { + if cfg.HTTPClient == nil { + cfg.HTTPClient = http.DefaultClient + } + + c := &APIClient{} + c.cfg = cfg + c.common.client = c + + // API Services + c.AuthAPI = (*AuthAPIService)(&c.common) + c.MeAPI = (*MeAPIService)(&c.common) + c.MeAPIKeysAPI = (*MeAPIKeysAPIService)(&c.common) + c.OrgsAPI = (*OrgsAPIService)(&c.common) + c.ServersAPI = (*ServersAPIService)(&c.common) + c.SshAPI = (*SshAPIService)(&c.common) + c.TaintsAPI = (*TaintsAPIService)(&c.common) + + return c +} + +func atoi(in string) (int, error) { + return strconv.Atoi(in) +} + +// selectHeaderContentType select a content type from the available list. +func selectHeaderContentType(contentTypes []string) string { + if len(contentTypes) == 0 { + return "" + } + if contains(contentTypes, "application/json") { + return "application/json" + } + return contentTypes[0] // use the first content type specified in 'consumes' +} + +// selectHeaderAccept join all accept types and return +func selectHeaderAccept(accepts []string) string { + if len(accepts) == 0 { + return "" + } + + if contains(accepts, "application/json") { + return "application/json" + } + + return strings.Join(accepts, ",") +} + +// contains is a case insensitive match, finding needle in a haystack +func contains(haystack []string, needle string) bool { + for _, a := range haystack { + if strings.EqualFold(a, needle) { + return true + } + } + return false +} + +// Verify optional parameters are of the correct type. +func typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return fmt.Errorf("expected %s to be of type %s but received %s", name, expected, reflect.TypeOf(obj).String()) + } + return nil +} + +func parameterValueToString(obj interface{}, key string) string { + if reflect.TypeOf(obj).Kind() != reflect.Ptr { + if actualObj, ok := obj.(interface{ GetActualInstanceValue() interface{} }); ok { + return fmt.Sprintf("%v", actualObj.GetActualInstanceValue()) + } + + return fmt.Sprintf("%v", obj) + } + var param, ok = obj.(MappedNullable) + if !ok { + return "" + } + dataMap, err := param.ToMap() + if err != nil { + return "" + } + return fmt.Sprintf("%v", dataMap[key]) +} + +// parameterAddToHeaderOrQuery adds the provided object to the request header or url query +// supporting deep object syntax +func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) { + var v = reflect.ValueOf(obj) + var value = "" + if v == reflect.ValueOf(nil) { + value = "null" + } else { + switch v.Kind() { + case reflect.Invalid: + value = "invalid" + + case reflect.Struct: + if t, ok := obj.(MappedNullable); ok { + dataMap, err := t.ToMap() + if err != nil { + return + } + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType) + return + } + if t, ok := obj.(time.Time); ok { + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType) + return + } + value = v.Type().String() + " value" + case reflect.Slice: + var indValue = reflect.ValueOf(obj) + if indValue == reflect.ValueOf(nil) { + return + } + var lenIndValue = indValue.Len() + for i := 0; i < lenIndValue; i++ { + var arrayValue = indValue.Index(i) + var keyPrefixForCollectionType = keyPrefix + if style == "deepObject" { + keyPrefixForCollectionType = keyPrefix + "[" + strconv.Itoa(i) + "]" + } + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefixForCollectionType, arrayValue.Interface(), style, collectionType) + } + return + + case reflect.Map: + var indValue = reflect.ValueOf(obj) + if indValue == reflect.ValueOf(nil) { + return + } + iter := indValue.MapRange() + for iter.Next() { + k, v := iter.Key(), iter.Value() + parameterAddToHeaderOrQuery(headerOrQueryParams, fmt.Sprintf("%s[%s]", keyPrefix, k.String()), v.Interface(), style, collectionType) + } + return + + case reflect.Interface: + fallthrough + case reflect.Ptr: + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, v.Elem().Interface(), style, collectionType) + return + + case reflect.Int, reflect.Int8, reflect.Int16, + reflect.Int32, reflect.Int64: + value = strconv.FormatInt(v.Int(), 10) + case reflect.Uint, reflect.Uint8, reflect.Uint16, + reflect.Uint32, reflect.Uint64, reflect.Uintptr: + value = strconv.FormatUint(v.Uint(), 10) + case reflect.Float32, reflect.Float64: + value = strconv.FormatFloat(v.Float(), 'g', -1, 32) + case reflect.Bool: + value = strconv.FormatBool(v.Bool()) + case reflect.String: + value = v.String() + default: + value = v.Type().String() + " value" + } + } + + switch valuesMap := headerOrQueryParams.(type) { + case url.Values: + if collectionType == "csv" && valuesMap.Get(keyPrefix) != "" { + valuesMap.Set(keyPrefix, valuesMap.Get(keyPrefix)+","+value) + } else { + valuesMap.Add(keyPrefix, value) + } + break + case map[string]string: + valuesMap[keyPrefix] = value + break + } +} + +// helper for converting interface{} parameters to json strings +func parameterToJson(obj interface{}) (string, error) { + jsonBuf, err := json.Marshal(obj) + if err != nil { + return "", err + } + return string(jsonBuf), err +} + +// callAPI do the request. +func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + return resp, err +} + +// Allow modification of underlying config for alternate implementations and testing +// Caution: modifying the configuration while live can cause data races and potentially unwanted behavior +func (c *APIClient) GetConfig() *Configuration { + return c.cfg +} + +type formFile struct { + fileBytes []byte + fileName string + formFileName string +} + +// prepareRequest build the request +func (c *APIClient) prepareRequest( + ctx context.Context, + path string, method string, + postBody interface{}, + headerParams map[string]string, + queryParams url.Values, + formParams url.Values, + formFiles []formFile) (localVarRequest *http.Request, err error) { + + var body *bytes.Buffer + + // Detect postBody type and post. + if postBody != nil { + contentType := headerParams["Content-Type"] + if contentType == "" { + contentType = detectContentType(postBody) + headerParams["Content-Type"] = contentType + } + + body, err = setBody(postBody, contentType) + if err != nil { + return nil, err + } + } + + // add form parameters and file if available. + if strings.HasPrefix(headerParams["Content-Type"], "multipart/form-data") && len(formParams) > 0 || (len(formFiles) > 0) { + if body != nil { + return nil, errors.New("Cannot specify postBody and multipart form at the same time.") + } + body = &bytes.Buffer{} + w := multipart.NewWriter(body) + + for k, v := range formParams { + for _, iv := range v { + if strings.HasPrefix(k, "@") { // file + err = addFile(w, k[1:], iv) + if err != nil { + return nil, err + } + } else { // form value + w.WriteField(k, iv) + } + } + } + for _, formFile := range formFiles { + if len(formFile.fileBytes) > 0 && formFile.fileName != "" { + w.Boundary() + part, err := w.CreateFormFile(formFile.formFileName, filepath.Base(formFile.fileName)) + if err != nil { + return nil, err + } + _, err = part.Write(formFile.fileBytes) + if err != nil { + return nil, err + } + } + } + + // Set the Boundary in the Content-Type + headerParams["Content-Type"] = w.FormDataContentType() + + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + w.Close() + } + + if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 { + if body != nil { + return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.") + } + body = &bytes.Buffer{} + body.WriteString(formParams.Encode()) + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + } + + // Setup path and query parameters + url, err := url.Parse(path) + if err != nil { + return nil, err + } + + // Override request host, if applicable + if c.cfg.Host != "" { + url.Host = c.cfg.Host + } + + // Override request scheme, if applicable + if c.cfg.Scheme != "" { + url.Scheme = c.cfg.Scheme + } + + // Adding Query Param + query := url.Query() + for k, v := range queryParams { + for _, iv := range v { + query.Add(k, iv) + } + } + + // Encode the parameters. + url.RawQuery = queryParamSplit.ReplaceAllStringFunc(query.Encode(), func(s string) string { + pieces := strings.Split(s, "=") + pieces[0] = queryDescape.Replace(pieces[0]) + return strings.Join(pieces, "=") + }) + + // Generate a new request + if body != nil { + localVarRequest, err = http.NewRequest(method, url.String(), body) + } else { + localVarRequest, err = http.NewRequest(method, url.String(), nil) + } + if err != nil { + return nil, err + } + + // add header parameters, if any + if len(headerParams) > 0 { + headers := http.Header{} + for h, v := range headerParams { + headers[h] = []string{v} + } + localVarRequest.Header = headers + } + + // Add the user agent to the request. + localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent) + + if ctx != nil { + // add context to the request + localVarRequest = localVarRequest.WithContext(ctx) + + // Walk through any authentication. + + } + + for header, value := range c.cfg.DefaultHeader { + localVarRequest.Header.Add(header, value) + } + return localVarRequest, nil +} + +func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { + if len(b) == 0 { + return nil + } + if s, ok := v.(*string); ok { + *s = string(b) + return nil + } + if f, ok := v.(*os.File); ok { + f, err = os.CreateTemp("", "HttpClientFile") + if err != nil { + return + } + _, err = f.Write(b) + if err != nil { + return + } + _, err = f.Seek(0, io.SeekStart) + return + } + if f, ok := v.(**os.File); ok { + *f, err = os.CreateTemp("", "HttpClientFile") + if err != nil { + return + } + _, err = (*f).Write(b) + if err != nil { + return + } + _, err = (*f).Seek(0, io.SeekStart) + return + } + if XmlCheck.MatchString(contentType) { + if err = xml.Unmarshal(b, v); err != nil { + return err + } + return nil + } + if JsonCheck.MatchString(contentType) { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { + return err + } + } else { + return errors.New("Unknown type with GetActualInstance but no unmarshalObj.UnmarshalJSON defined") + } + } else if err = json.Unmarshal(b, v); err != nil { // simple model + return err + } + return nil + } + return errors.New("undefined response type") +} + +// Add a file to the multipart request +func addFile(w *multipart.Writer, fieldName, path string) error { + file, err := os.Open(filepath.Clean(path)) + if err != nil { + return err + } + err = file.Close() + if err != nil { + return err + } + + part, err := w.CreateFormFile(fieldName, filepath.Base(path)) + if err != nil { + return err + } + _, err = io.Copy(part, file) + + return err +} + +// Set request body from an interface{} +func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) { + if bodyBuf == nil { + bodyBuf = &bytes.Buffer{} + } + + if reader, ok := body.(io.Reader); ok { + _, err = bodyBuf.ReadFrom(reader) + } else if fp, ok := body.(*os.File); ok { + _, err = bodyBuf.ReadFrom(fp) + } else if b, ok := body.([]byte); ok { + _, err = bodyBuf.Write(b) + } else if s, ok := body.(string); ok { + _, err = bodyBuf.WriteString(s) + } else if s, ok := body.(*string); ok { + _, err = bodyBuf.WriteString(*s) + } else if JsonCheck.MatchString(contentType) { + err = json.NewEncoder(bodyBuf).Encode(body) + } else if XmlCheck.MatchString(contentType) { + var bs []byte + bs, err = xml.Marshal(body) + if err == nil { + bodyBuf.Write(bs) + } + } + + if err != nil { + return nil, err + } + + if bodyBuf.Len() == 0 { + err = fmt.Errorf("invalid body type %s\n", contentType) + return nil, err + } + return bodyBuf, nil +} + +// detectContentType method is used to figure out `Request.Body` content type for request header +func detectContentType(body interface{}) string { + contentType := "text/plain; charset=utf-8" + kind := reflect.TypeOf(body).Kind() + + switch kind { + case reflect.Struct, reflect.Map, reflect.Ptr: + contentType = "application/json; charset=utf-8" + case reflect.String: + contentType = "text/plain; charset=utf-8" + default: + if b, ok := body.([]byte); ok { + contentType = http.DetectContentType(b) + } else if kind == reflect.Slice { + contentType = "application/json; charset=utf-8" + } + } + + return contentType +} + +// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go +type cacheControl map[string]string + +func parseCacheControl(headers http.Header) cacheControl { + cc := cacheControl{} + ccHeader := headers.Get("Cache-Control") + for _, part := range strings.Split(ccHeader, ",") { + part = strings.Trim(part, " ") + if part == "" { + continue + } + if strings.ContainsRune(part, '=') { + keyval := strings.Split(part, "=") + cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") + } else { + cc[part] = "" + } + } + return cc +} + +// CacheExpires helper function to determine remaining time before repeating a request. +func CacheExpires(r *http.Response) time.Time { + // Figure out when the cache expires. + var expires time.Time + now, err := time.Parse(time.RFC1123, r.Header.Get("date")) + if err != nil { + return time.Now() + } + respCacheControl := parseCacheControl(r.Header) + + if maxAge, ok := respCacheControl["max-age"]; ok { + lifetime, err := time.ParseDuration(maxAge + "s") + if err != nil { + expires = now + } else { + expires = now.Add(lifetime) + } + } else { + expiresHeader := r.Header.Get("Expires") + if expiresHeader != "" { + expires, err = time.Parse(time.RFC1123, expiresHeader) + if err != nil { + expires = now + } + } + } + return expires +} + +func strlen(s string) int { + return utf8.RuneCountInString(s) +} + +// GenericOpenAPIError Provides access to the body, error and model on returned errors. +type GenericOpenAPIError struct { + body []byte + error string + model interface{} +} + +// Error returns non-empty string if there was an error. +func (e GenericOpenAPIError) Error() string { + return e.error +} + +// Body returns the raw bytes of the response +func (e GenericOpenAPIError) Body() []byte { + return e.body +} + +// Model returns the unpacked model of the error +func (e GenericOpenAPIError) Model() interface{} { + return e.model +} + +// format error message using title and detail when model implements rfc7807 +func formatErrorMessage(status string, v interface{}) string { + str := "" + metaValue := reflect.ValueOf(v).Elem() + + if metaValue.Kind() == reflect.Struct { + field := metaValue.FieldByName("Title") + if field != (reflect.Value{}) { + str = fmt.Sprintf("%s", field.Interface()) + } + + field = metaValue.FieldByName("Detail") + if field != (reflect.Value{}) { + str = fmt.Sprintf("%s (%s)", str, field.Interface()) + } + } + + return strings.TrimSpace(fmt.Sprintf("%s %s", status, str)) +} diff --git a/sdk/go/configuration.go b/sdk/go/configuration.go new file mode 100644 index 0000000..2a6776d --- /dev/null +++ b/sdk/go/configuration.go @@ -0,0 +1,221 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "context" + "fmt" + "net/http" + "strings" +) + +// contextKeys are used to identify the type of value in the context. +// Since these are string, it is possible to get a short description of the +// context key for logging and debugging using key.String(). + +type contextKey string + +func (c contextKey) String() string { + return "auth " + string(c) +} + +var ( + // ContextAPIKeys takes a string apikey as authentication for the request + ContextAPIKeys = contextKey("apiKeys") + + // ContextServerIndex uses a server configuration from the index. + ContextServerIndex = contextKey("serverIndex") + + // ContextOperationServerIndices uses a server configuration from the index mapping. + ContextOperationServerIndices = contextKey("serverOperationIndices") + + // ContextServerVariables overrides a server configuration variables. + ContextServerVariables = contextKey("serverVariables") + + // ContextOperationServerVariables overrides a server configuration variables using operation specific values. + ContextOperationServerVariables = contextKey("serverOperationVariables") +) + +// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth +type BasicAuth struct { + UserName string `json:"userName,omitempty"` + Password string `json:"password,omitempty"` +} + +// APIKey provides API key based authentication to a request passed via context using ContextAPIKey +type APIKey struct { + Key string + Prefix string +} + +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + URL string + Description string + Variables map[string]ServerVariable +} + +// ServerConfigurations stores multiple ServerConfiguration items +type ServerConfigurations []ServerConfiguration + +// Configuration stores the configuration of the API client +type Configuration struct { + Host string `json:"host,omitempty"` + Scheme string `json:"scheme,omitempty"` + DefaultHeader map[string]string `json:"defaultHeader,omitempty"` + UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` + Servers ServerConfigurations + OperationServers map[string]ServerConfigurations + HTTPClient *http.Client +} + +// NewConfiguration returns a new Configuration object +func NewConfiguration() *Configuration { + cfg := &Configuration{ + DefaultHeader: make(map[string]string), + UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, + Servers: ServerConfigurations{ + { + URL: "http://localhost:8080/api/v1", + Description: "No description provided", + }, + { + URL: "https://localhost:8080/api/v1", + Description: "No description provided", + }, + }, + OperationServers: map[string]ServerConfigurations{}, + } + return cfg +} + +// AddDefaultHeader adds a new HTTP header to the default header in the request +func (c *Configuration) AddDefaultHeader(key string, value string) { + c.DefaultHeader[key] = value +} + +// URL formats template on a index using given variables +func (sc ServerConfigurations) URL(index int, variables map[string]string) (string, error) { + if index < 0 || len(sc) <= index { + return "", fmt.Errorf("index %v out of range %v", index, len(sc)-1) + } + server := sc[index] + url := server.URL + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("the variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} + +// ServerURL returns URL based on server settings +func (c *Configuration) ServerURL(index int, variables map[string]string) (string, error) { + return c.Servers.URL(index, variables) +} + +func getServerIndex(ctx context.Context) (int, error) { + si := ctx.Value(ContextServerIndex) + if si != nil { + if index, ok := si.(int); ok { + return index, nil + } + return 0, reportError("Invalid type %T should be int", si) + } + return 0, nil +} + +func getServerOperationIndex(ctx context.Context, endpoint string) (int, error) { + osi := ctx.Value(ContextOperationServerIndices) + if osi != nil { + if operationIndices, ok := osi.(map[string]int); !ok { + return 0, reportError("Invalid type %T should be map[string]int", osi) + } else { + index, ok := operationIndices[endpoint] + if ok { + return index, nil + } + } + } + return getServerIndex(ctx) +} + +func getServerVariables(ctx context.Context) (map[string]string, error) { + sv := ctx.Value(ContextServerVariables) + if sv != nil { + if variables, ok := sv.(map[string]string); ok { + return variables, nil + } + return nil, reportError("ctx value of ContextServerVariables has invalid type %T should be map[string]string", sv) + } + return nil, nil +} + +func getServerOperationVariables(ctx context.Context, endpoint string) (map[string]string, error) { + osv := ctx.Value(ContextOperationServerVariables) + if osv != nil { + if operationVariables, ok := osv.(map[string]map[string]string); !ok { + return nil, reportError("ctx value of ContextOperationServerVariables has invalid type %T should be map[string]map[string]string", osv) + } else { + variables, ok := operationVariables[endpoint] + if ok { + return variables, nil + } + } + } + return getServerVariables(ctx) +} + +// ServerURLWithContext returns a new server URL given an endpoint +func (c *Configuration) ServerURLWithContext(ctx context.Context, endpoint string) (string, error) { + sc, ok := c.OperationServers[endpoint] + if !ok { + sc = c.Servers + } + + if ctx == nil { + return sc.URL(0, nil) + } + + index, err := getServerOperationIndex(ctx, endpoint) + if err != nil { + return "", err + } + + variables, err := getServerOperationVariables(ctx, endpoint) + if err != nil { + return "", err + } + + return sc.URL(index, variables) +} diff --git a/sdk/go/docs/AuthAPI.md b/sdk/go/docs/AuthAPI.md new file mode 100644 index 0000000..b3b905a --- /dev/null +++ b/sdk/go/docs/AuthAPI.md @@ -0,0 +1,338 @@ +# \AuthAPI + +All URIs are relative to *http://localhost:8080/api/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**AuthCallback**](AuthAPI.md#AuthCallback) | **Get** /auth/{provider}/callback | Handle social login callback +[**AuthStart**](AuthAPI.md#AuthStart) | **Post** /auth/{provider}/start | Begin social login +[**GetJWKS**](AuthAPI.md#GetJWKS) | **Get** /.well-known/jwks.json | Get JWKS +[**Logout**](AuthAPI.md#Logout) | **Post** /auth/logout | Revoke refresh token family (logout everywhere) +[**Refresh**](AuthAPI.md#Refresh) | **Post** /auth/refresh | Rotate refresh token + + + +## AuthCallback + +> DtoTokenPair AuthCallback(ctx, provider).Execute() + +Handle social login callback + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + provider := "provider_example" // string | google|github + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.AuthAPI.AuthCallback(context.Background(), provider).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `AuthAPI.AuthCallback``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `AuthCallback`: DtoTokenPair + fmt.Fprintf(os.Stdout, "Response from `AuthAPI.AuthCallback`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**provider** | **string** | google|github | + +### Other Parameters + +Other parameters are passed through a pointer to a apiAuthCallbackRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + +### Return type + +[**DtoTokenPair**](DtoTokenPair.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## AuthStart + +> DtoAuthStartResponse AuthStart(ctx, provider).Execute() + +Begin social login + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + provider := "provider_example" // string | google|github + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.AuthAPI.AuthStart(context.Background(), provider).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `AuthAPI.AuthStart``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `AuthStart`: DtoAuthStartResponse + fmt.Fprintf(os.Stdout, "Response from `AuthAPI.AuthStart`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**provider** | **string** | google|github | + +### Other Parameters + +Other parameters are passed through a pointer to a apiAuthStartRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + +### Return type + +[**DtoAuthStartResponse**](DtoAuthStartResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## GetJWKS + +> DtoJWKS GetJWKS(ctx).Execute() + +Get JWKS + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.AuthAPI.GetJWKS(context.Background()).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `AuthAPI.GetJWKS``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetJWKS`: DtoJWKS + fmt.Fprintf(os.Stdout, "Response from `AuthAPI.GetJWKS`: %v\n", resp) +} +``` + +### Path Parameters + +This endpoint does not need any parameter. + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetJWKSRequest struct via the builder pattern + + +### Return type + +[**DtoJWKS**](DtoJWKS.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## Logout + +> Logout(ctx).Body(body).Execute() + +Revoke refresh token family (logout everywhere) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + body := *openapiclient.NewDtoLogoutRequest() // DtoLogoutRequest | Refresh token + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + r, err := apiClient.AuthAPI.Logout(context.Background()).Body(body).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `AuthAPI.Logout``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiLogoutRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**DtoLogoutRequest**](DtoLogoutRequest.md) | Refresh token | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## Refresh + +> DtoTokenPair Refresh(ctx).Body(body).Execute() + +Rotate refresh token + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + body := *openapiclient.NewDtoRefreshRequest() // DtoRefreshRequest | Refresh token + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.AuthAPI.Refresh(context.Background()).Body(body).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `AuthAPI.Refresh``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `Refresh`: DtoTokenPair + fmt.Fprintf(os.Stdout, "Response from `AuthAPI.Refresh`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiRefreshRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**DtoRefreshRequest**](DtoRefreshRequest.md) | Refresh token | + +### Return type + +[**DtoTokenPair**](DtoTokenPair.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/sdk/go/docs/DtoAuthStartResponse.md b/sdk/go/docs/DtoAuthStartResponse.md new file mode 100644 index 0000000..4a47ef6 --- /dev/null +++ b/sdk/go/docs/DtoAuthStartResponse.md @@ -0,0 +1,56 @@ +# DtoAuthStartResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**AuthUrl** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoAuthStartResponse + +`func NewDtoAuthStartResponse() *DtoAuthStartResponse` + +NewDtoAuthStartResponse instantiates a new DtoAuthStartResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoAuthStartResponseWithDefaults + +`func NewDtoAuthStartResponseWithDefaults() *DtoAuthStartResponse` + +NewDtoAuthStartResponseWithDefaults instantiates a new DtoAuthStartResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetAuthUrl + +`func (o *DtoAuthStartResponse) GetAuthUrl() string` + +GetAuthUrl returns the AuthUrl field if non-nil, zero value otherwise. + +### GetAuthUrlOk + +`func (o *DtoAuthStartResponse) GetAuthUrlOk() (*string, bool)` + +GetAuthUrlOk returns a tuple with the AuthUrl field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAuthUrl + +`func (o *DtoAuthStartResponse) SetAuthUrl(v string)` + +SetAuthUrl sets AuthUrl field to given value. + +### HasAuthUrl + +`func (o *DtoAuthStartResponse) HasAuthUrl() bool` + +HasAuthUrl returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoCreateSSHRequest.md b/sdk/go/docs/DtoCreateSSHRequest.md new file mode 100644 index 0000000..03a4894 --- /dev/null +++ b/sdk/go/docs/DtoCreateSSHRequest.md @@ -0,0 +1,134 @@ +# DtoCreateSSHRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Bits** | Pointer to **int32** | Only for RSA | [optional] +**Comment** | Pointer to **string** | | [optional] +**Name** | Pointer to **string** | | [optional] +**Type** | Pointer to **string** | \"rsa\" (default) or \"ed25519\" | [optional] + +## Methods + +### NewDtoCreateSSHRequest + +`func NewDtoCreateSSHRequest() *DtoCreateSSHRequest` + +NewDtoCreateSSHRequest instantiates a new DtoCreateSSHRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoCreateSSHRequestWithDefaults + +`func NewDtoCreateSSHRequestWithDefaults() *DtoCreateSSHRequest` + +NewDtoCreateSSHRequestWithDefaults instantiates a new DtoCreateSSHRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetBits + +`func (o *DtoCreateSSHRequest) GetBits() int32` + +GetBits returns the Bits field if non-nil, zero value otherwise. + +### GetBitsOk + +`func (o *DtoCreateSSHRequest) GetBitsOk() (*int32, bool)` + +GetBitsOk returns a tuple with the Bits field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetBits + +`func (o *DtoCreateSSHRequest) SetBits(v int32)` + +SetBits sets Bits field to given value. + +### HasBits + +`func (o *DtoCreateSSHRequest) HasBits() bool` + +HasBits returns a boolean if a field has been set. + +### GetComment + +`func (o *DtoCreateSSHRequest) GetComment() string` + +GetComment returns the Comment field if non-nil, zero value otherwise. + +### GetCommentOk + +`func (o *DtoCreateSSHRequest) GetCommentOk() (*string, bool)` + +GetCommentOk returns a tuple with the Comment field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetComment + +`func (o *DtoCreateSSHRequest) SetComment(v string)` + +SetComment sets Comment field to given value. + +### HasComment + +`func (o *DtoCreateSSHRequest) HasComment() bool` + +HasComment returns a boolean if a field has been set. + +### GetName + +`func (o *DtoCreateSSHRequest) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *DtoCreateSSHRequest) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *DtoCreateSSHRequest) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *DtoCreateSSHRequest) HasName() bool` + +HasName returns a boolean if a field has been set. + +### GetType + +`func (o *DtoCreateSSHRequest) GetType() string` + +GetType returns the Type field if non-nil, zero value otherwise. + +### GetTypeOk + +`func (o *DtoCreateSSHRequest) GetTypeOk() (*string, bool)` + +GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetType + +`func (o *DtoCreateSSHRequest) SetType(v string)` + +SetType sets Type field to given value. + +### HasType + +`func (o *DtoCreateSSHRequest) HasType() bool` + +HasType returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoCreateServerRequest.md b/sdk/go/docs/DtoCreateServerRequest.md new file mode 100644 index 0000000..05acfb2 --- /dev/null +++ b/sdk/go/docs/DtoCreateServerRequest.md @@ -0,0 +1,212 @@ +# DtoCreateServerRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Hostname** | Pointer to **string** | | [optional] +**PrivateIpAddress** | Pointer to **string** | | [optional] +**PublicIpAddress** | Pointer to **string** | | [optional] +**Role** | Pointer to **string** | | [optional] +**SshKeyId** | Pointer to **string** | | [optional] +**SshUser** | Pointer to **string** | | [optional] +**Status** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoCreateServerRequest + +`func NewDtoCreateServerRequest() *DtoCreateServerRequest` + +NewDtoCreateServerRequest instantiates a new DtoCreateServerRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoCreateServerRequestWithDefaults + +`func NewDtoCreateServerRequestWithDefaults() *DtoCreateServerRequest` + +NewDtoCreateServerRequestWithDefaults instantiates a new DtoCreateServerRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetHostname + +`func (o *DtoCreateServerRequest) GetHostname() string` + +GetHostname returns the Hostname field if non-nil, zero value otherwise. + +### GetHostnameOk + +`func (o *DtoCreateServerRequest) GetHostnameOk() (*string, bool)` + +GetHostnameOk returns a tuple with the Hostname field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetHostname + +`func (o *DtoCreateServerRequest) SetHostname(v string)` + +SetHostname sets Hostname field to given value. + +### HasHostname + +`func (o *DtoCreateServerRequest) HasHostname() bool` + +HasHostname returns a boolean if a field has been set. + +### GetPrivateIpAddress + +`func (o *DtoCreateServerRequest) GetPrivateIpAddress() string` + +GetPrivateIpAddress returns the PrivateIpAddress field if non-nil, zero value otherwise. + +### GetPrivateIpAddressOk + +`func (o *DtoCreateServerRequest) GetPrivateIpAddressOk() (*string, bool)` + +GetPrivateIpAddressOk returns a tuple with the PrivateIpAddress field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPrivateIpAddress + +`func (o *DtoCreateServerRequest) SetPrivateIpAddress(v string)` + +SetPrivateIpAddress sets PrivateIpAddress field to given value. + +### HasPrivateIpAddress + +`func (o *DtoCreateServerRequest) HasPrivateIpAddress() bool` + +HasPrivateIpAddress returns a boolean if a field has been set. + +### GetPublicIpAddress + +`func (o *DtoCreateServerRequest) GetPublicIpAddress() string` + +GetPublicIpAddress returns the PublicIpAddress field if non-nil, zero value otherwise. + +### GetPublicIpAddressOk + +`func (o *DtoCreateServerRequest) GetPublicIpAddressOk() (*string, bool)` + +GetPublicIpAddressOk returns a tuple with the PublicIpAddress field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPublicIpAddress + +`func (o *DtoCreateServerRequest) SetPublicIpAddress(v string)` + +SetPublicIpAddress sets PublicIpAddress field to given value. + +### HasPublicIpAddress + +`func (o *DtoCreateServerRequest) HasPublicIpAddress() bool` + +HasPublicIpAddress returns a boolean if a field has been set. + +### GetRole + +`func (o *DtoCreateServerRequest) GetRole() string` + +GetRole returns the Role field if non-nil, zero value otherwise. + +### GetRoleOk + +`func (o *DtoCreateServerRequest) GetRoleOk() (*string, bool)` + +GetRoleOk returns a tuple with the Role field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRole + +`func (o *DtoCreateServerRequest) SetRole(v string)` + +SetRole sets Role field to given value. + +### HasRole + +`func (o *DtoCreateServerRequest) HasRole() bool` + +HasRole returns a boolean if a field has been set. + +### GetSshKeyId + +`func (o *DtoCreateServerRequest) GetSshKeyId() string` + +GetSshKeyId returns the SshKeyId field if non-nil, zero value otherwise. + +### GetSshKeyIdOk + +`func (o *DtoCreateServerRequest) GetSshKeyIdOk() (*string, bool)` + +GetSshKeyIdOk returns a tuple with the SshKeyId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSshKeyId + +`func (o *DtoCreateServerRequest) SetSshKeyId(v string)` + +SetSshKeyId sets SshKeyId field to given value. + +### HasSshKeyId + +`func (o *DtoCreateServerRequest) HasSshKeyId() bool` + +HasSshKeyId returns a boolean if a field has been set. + +### GetSshUser + +`func (o *DtoCreateServerRequest) GetSshUser() string` + +GetSshUser returns the SshUser field if non-nil, zero value otherwise. + +### GetSshUserOk + +`func (o *DtoCreateServerRequest) GetSshUserOk() (*string, bool)` + +GetSshUserOk returns a tuple with the SshUser field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSshUser + +`func (o *DtoCreateServerRequest) SetSshUser(v string)` + +SetSshUser sets SshUser field to given value. + +### HasSshUser + +`func (o *DtoCreateServerRequest) HasSshUser() bool` + +HasSshUser returns a boolean if a field has been set. + +### GetStatus + +`func (o *DtoCreateServerRequest) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *DtoCreateServerRequest) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *DtoCreateServerRequest) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *DtoCreateServerRequest) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoCreateTaintRequest.md b/sdk/go/docs/DtoCreateTaintRequest.md new file mode 100644 index 0000000..78367b4 --- /dev/null +++ b/sdk/go/docs/DtoCreateTaintRequest.md @@ -0,0 +1,108 @@ +# DtoCreateTaintRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Effect** | Pointer to **string** | | [optional] +**Key** | Pointer to **string** | | [optional] +**Value** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoCreateTaintRequest + +`func NewDtoCreateTaintRequest() *DtoCreateTaintRequest` + +NewDtoCreateTaintRequest instantiates a new DtoCreateTaintRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoCreateTaintRequestWithDefaults + +`func NewDtoCreateTaintRequestWithDefaults() *DtoCreateTaintRequest` + +NewDtoCreateTaintRequestWithDefaults instantiates a new DtoCreateTaintRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetEffect + +`func (o *DtoCreateTaintRequest) GetEffect() string` + +GetEffect returns the Effect field if non-nil, zero value otherwise. + +### GetEffectOk + +`func (o *DtoCreateTaintRequest) GetEffectOk() (*string, bool)` + +GetEffectOk returns a tuple with the Effect field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetEffect + +`func (o *DtoCreateTaintRequest) SetEffect(v string)` + +SetEffect sets Effect field to given value. + +### HasEffect + +`func (o *DtoCreateTaintRequest) HasEffect() bool` + +HasEffect returns a boolean if a field has been set. + +### GetKey + +`func (o *DtoCreateTaintRequest) GetKey() string` + +GetKey returns the Key field if non-nil, zero value otherwise. + +### GetKeyOk + +`func (o *DtoCreateTaintRequest) GetKeyOk() (*string, bool)` + +GetKeyOk returns a tuple with the Key field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetKey + +`func (o *DtoCreateTaintRequest) SetKey(v string)` + +SetKey sets Key field to given value. + +### HasKey + +`func (o *DtoCreateTaintRequest) HasKey() bool` + +HasKey returns a boolean if a field has been set. + +### GetValue + +`func (o *DtoCreateTaintRequest) GetValue() string` + +GetValue returns the Value field if non-nil, zero value otherwise. + +### GetValueOk + +`func (o *DtoCreateTaintRequest) GetValueOk() (*string, bool)` + +GetValueOk returns a tuple with the Value field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetValue + +`func (o *DtoCreateTaintRequest) SetValue(v string)` + +SetValue sets Value field to given value. + +### HasValue + +`func (o *DtoCreateTaintRequest) HasValue() bool` + +HasValue returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoJWK.md b/sdk/go/docs/DtoJWK.md new file mode 100644 index 0000000..bbfca3e --- /dev/null +++ b/sdk/go/docs/DtoJWK.md @@ -0,0 +1,212 @@ +# DtoJWK + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Alg** | Pointer to **string** | | [optional] +**E** | Pointer to **string** | | [optional] +**Kid** | Pointer to **string** | | [optional] +**Kty** | Pointer to **string** | | [optional] +**N** | Pointer to **string** | | [optional] +**Use** | Pointer to **string** | | [optional] +**X** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoJWK + +`func NewDtoJWK() *DtoJWK` + +NewDtoJWK instantiates a new DtoJWK object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoJWKWithDefaults + +`func NewDtoJWKWithDefaults() *DtoJWK` + +NewDtoJWKWithDefaults instantiates a new DtoJWK object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetAlg + +`func (o *DtoJWK) GetAlg() string` + +GetAlg returns the Alg field if non-nil, zero value otherwise. + +### GetAlgOk + +`func (o *DtoJWK) GetAlgOk() (*string, bool)` + +GetAlgOk returns a tuple with the Alg field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAlg + +`func (o *DtoJWK) SetAlg(v string)` + +SetAlg sets Alg field to given value. + +### HasAlg + +`func (o *DtoJWK) HasAlg() bool` + +HasAlg returns a boolean if a field has been set. + +### GetE + +`func (o *DtoJWK) GetE() string` + +GetE returns the E field if non-nil, zero value otherwise. + +### GetEOk + +`func (o *DtoJWK) GetEOk() (*string, bool)` + +GetEOk returns a tuple with the E field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetE + +`func (o *DtoJWK) SetE(v string)` + +SetE sets E field to given value. + +### HasE + +`func (o *DtoJWK) HasE() bool` + +HasE returns a boolean if a field has been set. + +### GetKid + +`func (o *DtoJWK) GetKid() string` + +GetKid returns the Kid field if non-nil, zero value otherwise. + +### GetKidOk + +`func (o *DtoJWK) GetKidOk() (*string, bool)` + +GetKidOk returns a tuple with the Kid field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetKid + +`func (o *DtoJWK) SetKid(v string)` + +SetKid sets Kid field to given value. + +### HasKid + +`func (o *DtoJWK) HasKid() bool` + +HasKid returns a boolean if a field has been set. + +### GetKty + +`func (o *DtoJWK) GetKty() string` + +GetKty returns the Kty field if non-nil, zero value otherwise. + +### GetKtyOk + +`func (o *DtoJWK) GetKtyOk() (*string, bool)` + +GetKtyOk returns a tuple with the Kty field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetKty + +`func (o *DtoJWK) SetKty(v string)` + +SetKty sets Kty field to given value. + +### HasKty + +`func (o *DtoJWK) HasKty() bool` + +HasKty returns a boolean if a field has been set. + +### GetN + +`func (o *DtoJWK) GetN() string` + +GetN returns the N field if non-nil, zero value otherwise. + +### GetNOk + +`func (o *DtoJWK) GetNOk() (*string, bool)` + +GetNOk returns a tuple with the N field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetN + +`func (o *DtoJWK) SetN(v string)` + +SetN sets N field to given value. + +### HasN + +`func (o *DtoJWK) HasN() bool` + +HasN returns a boolean if a field has been set. + +### GetUse + +`func (o *DtoJWK) GetUse() string` + +GetUse returns the Use field if non-nil, zero value otherwise. + +### GetUseOk + +`func (o *DtoJWK) GetUseOk() (*string, bool)` + +GetUseOk returns a tuple with the Use field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUse + +`func (o *DtoJWK) SetUse(v string)` + +SetUse sets Use field to given value. + +### HasUse + +`func (o *DtoJWK) HasUse() bool` + +HasUse returns a boolean if a field has been set. + +### GetX + +`func (o *DtoJWK) GetX() string` + +GetX returns the X field if non-nil, zero value otherwise. + +### GetXOk + +`func (o *DtoJWK) GetXOk() (*string, bool)` + +GetXOk returns a tuple with the X field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetX + +`func (o *DtoJWK) SetX(v string)` + +SetX sets X field to given value. + +### HasX + +`func (o *DtoJWK) HasX() bool` + +HasX returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoJWKS.md b/sdk/go/docs/DtoJWKS.md new file mode 100644 index 0000000..9efce4d --- /dev/null +++ b/sdk/go/docs/DtoJWKS.md @@ -0,0 +1,56 @@ +# DtoJWKS + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Keys** | Pointer to [**[]DtoJWK**](DtoJWK.md) | | [optional] + +## Methods + +### NewDtoJWKS + +`func NewDtoJWKS() *DtoJWKS` + +NewDtoJWKS instantiates a new DtoJWKS object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoJWKSWithDefaults + +`func NewDtoJWKSWithDefaults() *DtoJWKS` + +NewDtoJWKSWithDefaults instantiates a new DtoJWKS object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetKeys + +`func (o *DtoJWKS) GetKeys() []DtoJWK` + +GetKeys returns the Keys field if non-nil, zero value otherwise. + +### GetKeysOk + +`func (o *DtoJWKS) GetKeysOk() (*[]DtoJWK, bool)` + +GetKeysOk returns a tuple with the Keys field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetKeys + +`func (o *DtoJWKS) SetKeys(v []DtoJWK)` + +SetKeys sets Keys field to given value. + +### HasKeys + +`func (o *DtoJWKS) HasKeys() bool` + +HasKeys returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoLogoutRequest.md b/sdk/go/docs/DtoLogoutRequest.md new file mode 100644 index 0000000..05af9bd --- /dev/null +++ b/sdk/go/docs/DtoLogoutRequest.md @@ -0,0 +1,56 @@ +# DtoLogoutRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**RefreshToken** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoLogoutRequest + +`func NewDtoLogoutRequest() *DtoLogoutRequest` + +NewDtoLogoutRequest instantiates a new DtoLogoutRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoLogoutRequestWithDefaults + +`func NewDtoLogoutRequestWithDefaults() *DtoLogoutRequest` + +NewDtoLogoutRequestWithDefaults instantiates a new DtoLogoutRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetRefreshToken + +`func (o *DtoLogoutRequest) GetRefreshToken() string` + +GetRefreshToken returns the RefreshToken field if non-nil, zero value otherwise. + +### GetRefreshTokenOk + +`func (o *DtoLogoutRequest) GetRefreshTokenOk() (*string, bool)` + +GetRefreshTokenOk returns a tuple with the RefreshToken field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRefreshToken + +`func (o *DtoLogoutRequest) SetRefreshToken(v string)` + +SetRefreshToken sets RefreshToken field to given value. + +### HasRefreshToken + +`func (o *DtoLogoutRequest) HasRefreshToken() bool` + +HasRefreshToken returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoRefreshRequest.md b/sdk/go/docs/DtoRefreshRequest.md new file mode 100644 index 0000000..2c95a50 --- /dev/null +++ b/sdk/go/docs/DtoRefreshRequest.md @@ -0,0 +1,56 @@ +# DtoRefreshRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**RefreshToken** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoRefreshRequest + +`func NewDtoRefreshRequest() *DtoRefreshRequest` + +NewDtoRefreshRequest instantiates a new DtoRefreshRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoRefreshRequestWithDefaults + +`func NewDtoRefreshRequestWithDefaults() *DtoRefreshRequest` + +NewDtoRefreshRequestWithDefaults instantiates a new DtoRefreshRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetRefreshToken + +`func (o *DtoRefreshRequest) GetRefreshToken() string` + +GetRefreshToken returns the RefreshToken field if non-nil, zero value otherwise. + +### GetRefreshTokenOk + +`func (o *DtoRefreshRequest) GetRefreshTokenOk() (*string, bool)` + +GetRefreshTokenOk returns a tuple with the RefreshToken field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRefreshToken + +`func (o *DtoRefreshRequest) SetRefreshToken(v string)` + +SetRefreshToken sets RefreshToken field to given value. + +### HasRefreshToken + +`func (o *DtoRefreshRequest) HasRefreshToken() bool` + +HasRefreshToken returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoServerResponse.md b/sdk/go/docs/DtoServerResponse.md new file mode 100644 index 0000000..259bd8f --- /dev/null +++ b/sdk/go/docs/DtoServerResponse.md @@ -0,0 +1,316 @@ +# DtoServerResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedAt** | Pointer to **string** | | [optional] +**Hostname** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | | [optional] +**OrganizationId** | Pointer to **string** | | [optional] +**PrivateIpAddress** | Pointer to **string** | | [optional] +**PublicIpAddress** | Pointer to **string** | | [optional] +**Role** | Pointer to **string** | | [optional] +**SshKeyId** | Pointer to **string** | | [optional] +**SshUser** | Pointer to **string** | | [optional] +**Status** | Pointer to **string** | | [optional] +**UpdatedAt** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoServerResponse + +`func NewDtoServerResponse() *DtoServerResponse` + +NewDtoServerResponse instantiates a new DtoServerResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoServerResponseWithDefaults + +`func NewDtoServerResponseWithDefaults() *DtoServerResponse` + +NewDtoServerResponseWithDefaults instantiates a new DtoServerResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCreatedAt + +`func (o *DtoServerResponse) GetCreatedAt() string` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *DtoServerResponse) GetCreatedAtOk() (*string, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *DtoServerResponse) SetCreatedAt(v string)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *DtoServerResponse) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetHostname + +`func (o *DtoServerResponse) GetHostname() string` + +GetHostname returns the Hostname field if non-nil, zero value otherwise. + +### GetHostnameOk + +`func (o *DtoServerResponse) GetHostnameOk() (*string, bool)` + +GetHostnameOk returns a tuple with the Hostname field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetHostname + +`func (o *DtoServerResponse) SetHostname(v string)` + +SetHostname sets Hostname field to given value. + +### HasHostname + +`func (o *DtoServerResponse) HasHostname() bool` + +HasHostname returns a boolean if a field has been set. + +### GetId + +`func (o *DtoServerResponse) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *DtoServerResponse) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *DtoServerResponse) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *DtoServerResponse) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetOrganizationId + +`func (o *DtoServerResponse) GetOrganizationId() string` + +GetOrganizationId returns the OrganizationId field if non-nil, zero value otherwise. + +### GetOrganizationIdOk + +`func (o *DtoServerResponse) GetOrganizationIdOk() (*string, bool)` + +GetOrganizationIdOk returns a tuple with the OrganizationId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOrganizationId + +`func (o *DtoServerResponse) SetOrganizationId(v string)` + +SetOrganizationId sets OrganizationId field to given value. + +### HasOrganizationId + +`func (o *DtoServerResponse) HasOrganizationId() bool` + +HasOrganizationId returns a boolean if a field has been set. + +### GetPrivateIpAddress + +`func (o *DtoServerResponse) GetPrivateIpAddress() string` + +GetPrivateIpAddress returns the PrivateIpAddress field if non-nil, zero value otherwise. + +### GetPrivateIpAddressOk + +`func (o *DtoServerResponse) GetPrivateIpAddressOk() (*string, bool)` + +GetPrivateIpAddressOk returns a tuple with the PrivateIpAddress field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPrivateIpAddress + +`func (o *DtoServerResponse) SetPrivateIpAddress(v string)` + +SetPrivateIpAddress sets PrivateIpAddress field to given value. + +### HasPrivateIpAddress + +`func (o *DtoServerResponse) HasPrivateIpAddress() bool` + +HasPrivateIpAddress returns a boolean if a field has been set. + +### GetPublicIpAddress + +`func (o *DtoServerResponse) GetPublicIpAddress() string` + +GetPublicIpAddress returns the PublicIpAddress field if non-nil, zero value otherwise. + +### GetPublicIpAddressOk + +`func (o *DtoServerResponse) GetPublicIpAddressOk() (*string, bool)` + +GetPublicIpAddressOk returns a tuple with the PublicIpAddress field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPublicIpAddress + +`func (o *DtoServerResponse) SetPublicIpAddress(v string)` + +SetPublicIpAddress sets PublicIpAddress field to given value. + +### HasPublicIpAddress + +`func (o *DtoServerResponse) HasPublicIpAddress() bool` + +HasPublicIpAddress returns a boolean if a field has been set. + +### GetRole + +`func (o *DtoServerResponse) GetRole() string` + +GetRole returns the Role field if non-nil, zero value otherwise. + +### GetRoleOk + +`func (o *DtoServerResponse) GetRoleOk() (*string, bool)` + +GetRoleOk returns a tuple with the Role field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRole + +`func (o *DtoServerResponse) SetRole(v string)` + +SetRole sets Role field to given value. + +### HasRole + +`func (o *DtoServerResponse) HasRole() bool` + +HasRole returns a boolean if a field has been set. + +### GetSshKeyId + +`func (o *DtoServerResponse) GetSshKeyId() string` + +GetSshKeyId returns the SshKeyId field if non-nil, zero value otherwise. + +### GetSshKeyIdOk + +`func (o *DtoServerResponse) GetSshKeyIdOk() (*string, bool)` + +GetSshKeyIdOk returns a tuple with the SshKeyId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSshKeyId + +`func (o *DtoServerResponse) SetSshKeyId(v string)` + +SetSshKeyId sets SshKeyId field to given value. + +### HasSshKeyId + +`func (o *DtoServerResponse) HasSshKeyId() bool` + +HasSshKeyId returns a boolean if a field has been set. + +### GetSshUser + +`func (o *DtoServerResponse) GetSshUser() string` + +GetSshUser returns the SshUser field if non-nil, zero value otherwise. + +### GetSshUserOk + +`func (o *DtoServerResponse) GetSshUserOk() (*string, bool)` + +GetSshUserOk returns a tuple with the SshUser field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSshUser + +`func (o *DtoServerResponse) SetSshUser(v string)` + +SetSshUser sets SshUser field to given value. + +### HasSshUser + +`func (o *DtoServerResponse) HasSshUser() bool` + +HasSshUser returns a boolean if a field has been set. + +### GetStatus + +`func (o *DtoServerResponse) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *DtoServerResponse) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *DtoServerResponse) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *DtoServerResponse) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + +### GetUpdatedAt + +`func (o *DtoServerResponse) GetUpdatedAt() string` + +GetUpdatedAt returns the UpdatedAt field if non-nil, zero value otherwise. + +### GetUpdatedAtOk + +`func (o *DtoServerResponse) GetUpdatedAtOk() (*string, bool)` + +GetUpdatedAtOk returns a tuple with the UpdatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUpdatedAt + +`func (o *DtoServerResponse) SetUpdatedAt(v string)` + +SetUpdatedAt sets UpdatedAt field to given value. + +### HasUpdatedAt + +`func (o *DtoServerResponse) HasUpdatedAt() bool` + +HasUpdatedAt returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoSshResponse.md b/sdk/go/docs/DtoSshResponse.md new file mode 100644 index 0000000..5ae8b88 --- /dev/null +++ b/sdk/go/docs/DtoSshResponse.md @@ -0,0 +1,212 @@ +# DtoSshResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedAt** | Pointer to **string** | | [optional] +**Fingerprint** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | | [optional] +**Name** | Pointer to **string** | | [optional] +**OrganizationId** | Pointer to **string** | | [optional] +**PublicKey** | Pointer to **string** | | [optional] +**UpdatedAt** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoSshResponse + +`func NewDtoSshResponse() *DtoSshResponse` + +NewDtoSshResponse instantiates a new DtoSshResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoSshResponseWithDefaults + +`func NewDtoSshResponseWithDefaults() *DtoSshResponse` + +NewDtoSshResponseWithDefaults instantiates a new DtoSshResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCreatedAt + +`func (o *DtoSshResponse) GetCreatedAt() string` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *DtoSshResponse) GetCreatedAtOk() (*string, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *DtoSshResponse) SetCreatedAt(v string)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *DtoSshResponse) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetFingerprint + +`func (o *DtoSshResponse) GetFingerprint() string` + +GetFingerprint returns the Fingerprint field if non-nil, zero value otherwise. + +### GetFingerprintOk + +`func (o *DtoSshResponse) GetFingerprintOk() (*string, bool)` + +GetFingerprintOk returns a tuple with the Fingerprint field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetFingerprint + +`func (o *DtoSshResponse) SetFingerprint(v string)` + +SetFingerprint sets Fingerprint field to given value. + +### HasFingerprint + +`func (o *DtoSshResponse) HasFingerprint() bool` + +HasFingerprint returns a boolean if a field has been set. + +### GetId + +`func (o *DtoSshResponse) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *DtoSshResponse) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *DtoSshResponse) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *DtoSshResponse) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetName + +`func (o *DtoSshResponse) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *DtoSshResponse) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *DtoSshResponse) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *DtoSshResponse) HasName() bool` + +HasName returns a boolean if a field has been set. + +### GetOrganizationId + +`func (o *DtoSshResponse) GetOrganizationId() string` + +GetOrganizationId returns the OrganizationId field if non-nil, zero value otherwise. + +### GetOrganizationIdOk + +`func (o *DtoSshResponse) GetOrganizationIdOk() (*string, bool)` + +GetOrganizationIdOk returns a tuple with the OrganizationId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOrganizationId + +`func (o *DtoSshResponse) SetOrganizationId(v string)` + +SetOrganizationId sets OrganizationId field to given value. + +### HasOrganizationId + +`func (o *DtoSshResponse) HasOrganizationId() bool` + +HasOrganizationId returns a boolean if a field has been set. + +### GetPublicKey + +`func (o *DtoSshResponse) GetPublicKey() string` + +GetPublicKey returns the PublicKey field if non-nil, zero value otherwise. + +### GetPublicKeyOk + +`func (o *DtoSshResponse) GetPublicKeyOk() (*string, bool)` + +GetPublicKeyOk returns a tuple with the PublicKey field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPublicKey + +`func (o *DtoSshResponse) SetPublicKey(v string)` + +SetPublicKey sets PublicKey field to given value. + +### HasPublicKey + +`func (o *DtoSshResponse) HasPublicKey() bool` + +HasPublicKey returns a boolean if a field has been set. + +### GetUpdatedAt + +`func (o *DtoSshResponse) GetUpdatedAt() string` + +GetUpdatedAt returns the UpdatedAt field if non-nil, zero value otherwise. + +### GetUpdatedAtOk + +`func (o *DtoSshResponse) GetUpdatedAtOk() (*string, bool)` + +GetUpdatedAtOk returns a tuple with the UpdatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUpdatedAt + +`func (o *DtoSshResponse) SetUpdatedAt(v string)` + +SetUpdatedAt sets UpdatedAt field to given value. + +### HasUpdatedAt + +`func (o *DtoSshResponse) HasUpdatedAt() bool` + +HasUpdatedAt returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoSshRevealResponse.md b/sdk/go/docs/DtoSshRevealResponse.md new file mode 100644 index 0000000..9a196c4 --- /dev/null +++ b/sdk/go/docs/DtoSshRevealResponse.md @@ -0,0 +1,238 @@ +# DtoSshRevealResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedAt** | Pointer to **string** | | [optional] +**Fingerprint** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | | [optional] +**Name** | Pointer to **string** | | [optional] +**OrganizationId** | Pointer to **string** | | [optional] +**PrivateKey** | Pointer to **string** | | [optional] +**PublicKey** | Pointer to **string** | | [optional] +**UpdatedAt** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoSshRevealResponse + +`func NewDtoSshRevealResponse() *DtoSshRevealResponse` + +NewDtoSshRevealResponse instantiates a new DtoSshRevealResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoSshRevealResponseWithDefaults + +`func NewDtoSshRevealResponseWithDefaults() *DtoSshRevealResponse` + +NewDtoSshRevealResponseWithDefaults instantiates a new DtoSshRevealResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCreatedAt + +`func (o *DtoSshRevealResponse) GetCreatedAt() string` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *DtoSshRevealResponse) GetCreatedAtOk() (*string, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *DtoSshRevealResponse) SetCreatedAt(v string)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *DtoSshRevealResponse) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetFingerprint + +`func (o *DtoSshRevealResponse) GetFingerprint() string` + +GetFingerprint returns the Fingerprint field if non-nil, zero value otherwise. + +### GetFingerprintOk + +`func (o *DtoSshRevealResponse) GetFingerprintOk() (*string, bool)` + +GetFingerprintOk returns a tuple with the Fingerprint field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetFingerprint + +`func (o *DtoSshRevealResponse) SetFingerprint(v string)` + +SetFingerprint sets Fingerprint field to given value. + +### HasFingerprint + +`func (o *DtoSshRevealResponse) HasFingerprint() bool` + +HasFingerprint returns a boolean if a field has been set. + +### GetId + +`func (o *DtoSshRevealResponse) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *DtoSshRevealResponse) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *DtoSshRevealResponse) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *DtoSshRevealResponse) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetName + +`func (o *DtoSshRevealResponse) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *DtoSshRevealResponse) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *DtoSshRevealResponse) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *DtoSshRevealResponse) HasName() bool` + +HasName returns a boolean if a field has been set. + +### GetOrganizationId + +`func (o *DtoSshRevealResponse) GetOrganizationId() string` + +GetOrganizationId returns the OrganizationId field if non-nil, zero value otherwise. + +### GetOrganizationIdOk + +`func (o *DtoSshRevealResponse) GetOrganizationIdOk() (*string, bool)` + +GetOrganizationIdOk returns a tuple with the OrganizationId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOrganizationId + +`func (o *DtoSshRevealResponse) SetOrganizationId(v string)` + +SetOrganizationId sets OrganizationId field to given value. + +### HasOrganizationId + +`func (o *DtoSshRevealResponse) HasOrganizationId() bool` + +HasOrganizationId returns a boolean if a field has been set. + +### GetPrivateKey + +`func (o *DtoSshRevealResponse) GetPrivateKey() string` + +GetPrivateKey returns the PrivateKey field if non-nil, zero value otherwise. + +### GetPrivateKeyOk + +`func (o *DtoSshRevealResponse) GetPrivateKeyOk() (*string, bool)` + +GetPrivateKeyOk returns a tuple with the PrivateKey field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPrivateKey + +`func (o *DtoSshRevealResponse) SetPrivateKey(v string)` + +SetPrivateKey sets PrivateKey field to given value. + +### HasPrivateKey + +`func (o *DtoSshRevealResponse) HasPrivateKey() bool` + +HasPrivateKey returns a boolean if a field has been set. + +### GetPublicKey + +`func (o *DtoSshRevealResponse) GetPublicKey() string` + +GetPublicKey returns the PublicKey field if non-nil, zero value otherwise. + +### GetPublicKeyOk + +`func (o *DtoSshRevealResponse) GetPublicKeyOk() (*string, bool)` + +GetPublicKeyOk returns a tuple with the PublicKey field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPublicKey + +`func (o *DtoSshRevealResponse) SetPublicKey(v string)` + +SetPublicKey sets PublicKey field to given value. + +### HasPublicKey + +`func (o *DtoSshRevealResponse) HasPublicKey() bool` + +HasPublicKey returns a boolean if a field has been set. + +### GetUpdatedAt + +`func (o *DtoSshRevealResponse) GetUpdatedAt() string` + +GetUpdatedAt returns the UpdatedAt field if non-nil, zero value otherwise. + +### GetUpdatedAtOk + +`func (o *DtoSshRevealResponse) GetUpdatedAtOk() (*string, bool)` + +GetUpdatedAtOk returns a tuple with the UpdatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUpdatedAt + +`func (o *DtoSshRevealResponse) SetUpdatedAt(v string)` + +SetUpdatedAt sets UpdatedAt field to given value. + +### HasUpdatedAt + +`func (o *DtoSshRevealResponse) HasUpdatedAt() bool` + +HasUpdatedAt returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoTaintResponse.md b/sdk/go/docs/DtoTaintResponse.md new file mode 100644 index 0000000..172857a --- /dev/null +++ b/sdk/go/docs/DtoTaintResponse.md @@ -0,0 +1,134 @@ +# DtoTaintResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Effect** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | | [optional] +**Key** | Pointer to **string** | | [optional] +**Value** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoTaintResponse + +`func NewDtoTaintResponse() *DtoTaintResponse` + +NewDtoTaintResponse instantiates a new DtoTaintResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoTaintResponseWithDefaults + +`func NewDtoTaintResponseWithDefaults() *DtoTaintResponse` + +NewDtoTaintResponseWithDefaults instantiates a new DtoTaintResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetEffect + +`func (o *DtoTaintResponse) GetEffect() string` + +GetEffect returns the Effect field if non-nil, zero value otherwise. + +### GetEffectOk + +`func (o *DtoTaintResponse) GetEffectOk() (*string, bool)` + +GetEffectOk returns a tuple with the Effect field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetEffect + +`func (o *DtoTaintResponse) SetEffect(v string)` + +SetEffect sets Effect field to given value. + +### HasEffect + +`func (o *DtoTaintResponse) HasEffect() bool` + +HasEffect returns a boolean if a field has been set. + +### GetId + +`func (o *DtoTaintResponse) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *DtoTaintResponse) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *DtoTaintResponse) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *DtoTaintResponse) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetKey + +`func (o *DtoTaintResponse) GetKey() string` + +GetKey returns the Key field if non-nil, zero value otherwise. + +### GetKeyOk + +`func (o *DtoTaintResponse) GetKeyOk() (*string, bool)` + +GetKeyOk returns a tuple with the Key field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetKey + +`func (o *DtoTaintResponse) SetKey(v string)` + +SetKey sets Key field to given value. + +### HasKey + +`func (o *DtoTaintResponse) HasKey() bool` + +HasKey returns a boolean if a field has been set. + +### GetValue + +`func (o *DtoTaintResponse) GetValue() string` + +GetValue returns the Value field if non-nil, zero value otherwise. + +### GetValueOk + +`func (o *DtoTaintResponse) GetValueOk() (*string, bool)` + +GetValueOk returns a tuple with the Value field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetValue + +`func (o *DtoTaintResponse) SetValue(v string)` + +SetValue sets Value field to given value. + +### HasValue + +`func (o *DtoTaintResponse) HasValue() bool` + +HasValue returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoTokenPair.md b/sdk/go/docs/DtoTokenPair.md new file mode 100644 index 0000000..4325a37 --- /dev/null +++ b/sdk/go/docs/DtoTokenPair.md @@ -0,0 +1,134 @@ +# DtoTokenPair + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**AccessToken** | Pointer to **string** | | [optional] +**ExpiresIn** | Pointer to **int32** | | [optional] +**RefreshToken** | Pointer to **string** | | [optional] +**TokenType** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoTokenPair + +`func NewDtoTokenPair() *DtoTokenPair` + +NewDtoTokenPair instantiates a new DtoTokenPair object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoTokenPairWithDefaults + +`func NewDtoTokenPairWithDefaults() *DtoTokenPair` + +NewDtoTokenPairWithDefaults instantiates a new DtoTokenPair object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetAccessToken + +`func (o *DtoTokenPair) GetAccessToken() string` + +GetAccessToken returns the AccessToken field if non-nil, zero value otherwise. + +### GetAccessTokenOk + +`func (o *DtoTokenPair) GetAccessTokenOk() (*string, bool)` + +GetAccessTokenOk returns a tuple with the AccessToken field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAccessToken + +`func (o *DtoTokenPair) SetAccessToken(v string)` + +SetAccessToken sets AccessToken field to given value. + +### HasAccessToken + +`func (o *DtoTokenPair) HasAccessToken() bool` + +HasAccessToken returns a boolean if a field has been set. + +### GetExpiresIn + +`func (o *DtoTokenPair) GetExpiresIn() int32` + +GetExpiresIn returns the ExpiresIn field if non-nil, zero value otherwise. + +### GetExpiresInOk + +`func (o *DtoTokenPair) GetExpiresInOk() (*int32, bool)` + +GetExpiresInOk returns a tuple with the ExpiresIn field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetExpiresIn + +`func (o *DtoTokenPair) SetExpiresIn(v int32)` + +SetExpiresIn sets ExpiresIn field to given value. + +### HasExpiresIn + +`func (o *DtoTokenPair) HasExpiresIn() bool` + +HasExpiresIn returns a boolean if a field has been set. + +### GetRefreshToken + +`func (o *DtoTokenPair) GetRefreshToken() string` + +GetRefreshToken returns the RefreshToken field if non-nil, zero value otherwise. + +### GetRefreshTokenOk + +`func (o *DtoTokenPair) GetRefreshTokenOk() (*string, bool)` + +GetRefreshTokenOk returns a tuple with the RefreshToken field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRefreshToken + +`func (o *DtoTokenPair) SetRefreshToken(v string)` + +SetRefreshToken sets RefreshToken field to given value. + +### HasRefreshToken + +`func (o *DtoTokenPair) HasRefreshToken() bool` + +HasRefreshToken returns a boolean if a field has been set. + +### GetTokenType + +`func (o *DtoTokenPair) GetTokenType() string` + +GetTokenType returns the TokenType field if non-nil, zero value otherwise. + +### GetTokenTypeOk + +`func (o *DtoTokenPair) GetTokenTypeOk() (*string, bool)` + +GetTokenTypeOk returns a tuple with the TokenType field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetTokenType + +`func (o *DtoTokenPair) SetTokenType(v string)` + +SetTokenType sets TokenType field to given value. + +### HasTokenType + +`func (o *DtoTokenPair) HasTokenType() bool` + +HasTokenType returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoUpdateServerRequest.md b/sdk/go/docs/DtoUpdateServerRequest.md new file mode 100644 index 0000000..3fc17b7 --- /dev/null +++ b/sdk/go/docs/DtoUpdateServerRequest.md @@ -0,0 +1,212 @@ +# DtoUpdateServerRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Hostname** | Pointer to **string** | | [optional] +**PrivateIpAddress** | Pointer to **string** | | [optional] +**PublicIpAddress** | Pointer to **string** | | [optional] +**Role** | Pointer to **string** | | [optional] +**SshKeyId** | Pointer to **string** | | [optional] +**SshUser** | Pointer to **string** | | [optional] +**Status** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoUpdateServerRequest + +`func NewDtoUpdateServerRequest() *DtoUpdateServerRequest` + +NewDtoUpdateServerRequest instantiates a new DtoUpdateServerRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoUpdateServerRequestWithDefaults + +`func NewDtoUpdateServerRequestWithDefaults() *DtoUpdateServerRequest` + +NewDtoUpdateServerRequestWithDefaults instantiates a new DtoUpdateServerRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetHostname + +`func (o *DtoUpdateServerRequest) GetHostname() string` + +GetHostname returns the Hostname field if non-nil, zero value otherwise. + +### GetHostnameOk + +`func (o *DtoUpdateServerRequest) GetHostnameOk() (*string, bool)` + +GetHostnameOk returns a tuple with the Hostname field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetHostname + +`func (o *DtoUpdateServerRequest) SetHostname(v string)` + +SetHostname sets Hostname field to given value. + +### HasHostname + +`func (o *DtoUpdateServerRequest) HasHostname() bool` + +HasHostname returns a boolean if a field has been set. + +### GetPrivateIpAddress + +`func (o *DtoUpdateServerRequest) GetPrivateIpAddress() string` + +GetPrivateIpAddress returns the PrivateIpAddress field if non-nil, zero value otherwise. + +### GetPrivateIpAddressOk + +`func (o *DtoUpdateServerRequest) GetPrivateIpAddressOk() (*string, bool)` + +GetPrivateIpAddressOk returns a tuple with the PrivateIpAddress field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPrivateIpAddress + +`func (o *DtoUpdateServerRequest) SetPrivateIpAddress(v string)` + +SetPrivateIpAddress sets PrivateIpAddress field to given value. + +### HasPrivateIpAddress + +`func (o *DtoUpdateServerRequest) HasPrivateIpAddress() bool` + +HasPrivateIpAddress returns a boolean if a field has been set. + +### GetPublicIpAddress + +`func (o *DtoUpdateServerRequest) GetPublicIpAddress() string` + +GetPublicIpAddress returns the PublicIpAddress field if non-nil, zero value otherwise. + +### GetPublicIpAddressOk + +`func (o *DtoUpdateServerRequest) GetPublicIpAddressOk() (*string, bool)` + +GetPublicIpAddressOk returns a tuple with the PublicIpAddress field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPublicIpAddress + +`func (o *DtoUpdateServerRequest) SetPublicIpAddress(v string)` + +SetPublicIpAddress sets PublicIpAddress field to given value. + +### HasPublicIpAddress + +`func (o *DtoUpdateServerRequest) HasPublicIpAddress() bool` + +HasPublicIpAddress returns a boolean if a field has been set. + +### GetRole + +`func (o *DtoUpdateServerRequest) GetRole() string` + +GetRole returns the Role field if non-nil, zero value otherwise. + +### GetRoleOk + +`func (o *DtoUpdateServerRequest) GetRoleOk() (*string, bool)` + +GetRoleOk returns a tuple with the Role field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRole + +`func (o *DtoUpdateServerRequest) SetRole(v string)` + +SetRole sets Role field to given value. + +### HasRole + +`func (o *DtoUpdateServerRequest) HasRole() bool` + +HasRole returns a boolean if a field has been set. + +### GetSshKeyId + +`func (o *DtoUpdateServerRequest) GetSshKeyId() string` + +GetSshKeyId returns the SshKeyId field if non-nil, zero value otherwise. + +### GetSshKeyIdOk + +`func (o *DtoUpdateServerRequest) GetSshKeyIdOk() (*string, bool)` + +GetSshKeyIdOk returns a tuple with the SshKeyId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSshKeyId + +`func (o *DtoUpdateServerRequest) SetSshKeyId(v string)` + +SetSshKeyId sets SshKeyId field to given value. + +### HasSshKeyId + +`func (o *DtoUpdateServerRequest) HasSshKeyId() bool` + +HasSshKeyId returns a boolean if a field has been set. + +### GetSshUser + +`func (o *DtoUpdateServerRequest) GetSshUser() string` + +GetSshUser returns the SshUser field if non-nil, zero value otherwise. + +### GetSshUserOk + +`func (o *DtoUpdateServerRequest) GetSshUserOk() (*string, bool)` + +GetSshUserOk returns a tuple with the SshUser field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSshUser + +`func (o *DtoUpdateServerRequest) SetSshUser(v string)` + +SetSshUser sets SshUser field to given value. + +### HasSshUser + +`func (o *DtoUpdateServerRequest) HasSshUser() bool` + +HasSshUser returns a boolean if a field has been set. + +### GetStatus + +`func (o *DtoUpdateServerRequest) GetStatus() string` + +GetStatus returns the Status field if non-nil, zero value otherwise. + +### GetStatusOk + +`func (o *DtoUpdateServerRequest) GetStatusOk() (*string, bool)` + +GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetStatus + +`func (o *DtoUpdateServerRequest) SetStatus(v string)` + +SetStatus sets Status field to given value. + +### HasStatus + +`func (o *DtoUpdateServerRequest) HasStatus() bool` + +HasStatus returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/DtoUpdateTaintRequest.md b/sdk/go/docs/DtoUpdateTaintRequest.md new file mode 100644 index 0000000..e726d23 --- /dev/null +++ b/sdk/go/docs/DtoUpdateTaintRequest.md @@ -0,0 +1,108 @@ +# DtoUpdateTaintRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Effect** | Pointer to **string** | | [optional] +**Key** | Pointer to **string** | | [optional] +**Value** | Pointer to **string** | | [optional] + +## Methods + +### NewDtoUpdateTaintRequest + +`func NewDtoUpdateTaintRequest() *DtoUpdateTaintRequest` + +NewDtoUpdateTaintRequest instantiates a new DtoUpdateTaintRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewDtoUpdateTaintRequestWithDefaults + +`func NewDtoUpdateTaintRequestWithDefaults() *DtoUpdateTaintRequest` + +NewDtoUpdateTaintRequestWithDefaults instantiates a new DtoUpdateTaintRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetEffect + +`func (o *DtoUpdateTaintRequest) GetEffect() string` + +GetEffect returns the Effect field if non-nil, zero value otherwise. + +### GetEffectOk + +`func (o *DtoUpdateTaintRequest) GetEffectOk() (*string, bool)` + +GetEffectOk returns a tuple with the Effect field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetEffect + +`func (o *DtoUpdateTaintRequest) SetEffect(v string)` + +SetEffect sets Effect field to given value. + +### HasEffect + +`func (o *DtoUpdateTaintRequest) HasEffect() bool` + +HasEffect returns a boolean if a field has been set. + +### GetKey + +`func (o *DtoUpdateTaintRequest) GetKey() string` + +GetKey returns the Key field if non-nil, zero value otherwise. + +### GetKeyOk + +`func (o *DtoUpdateTaintRequest) GetKeyOk() (*string, bool)` + +GetKeyOk returns a tuple with the Key field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetKey + +`func (o *DtoUpdateTaintRequest) SetKey(v string)` + +SetKey sets Key field to given value. + +### HasKey + +`func (o *DtoUpdateTaintRequest) HasKey() bool` + +HasKey returns a boolean if a field has been set. + +### GetValue + +`func (o *DtoUpdateTaintRequest) GetValue() string` + +GetValue returns the Value field if non-nil, zero value otherwise. + +### GetValueOk + +`func (o *DtoUpdateTaintRequest) GetValueOk() (*string, bool)` + +GetValueOk returns a tuple with the Value field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetValue + +`func (o *DtoUpdateTaintRequest) SetValue(v string)` + +SetValue sets Value field to given value. + +### HasValue + +`func (o *DtoUpdateTaintRequest) HasValue() bool` + +HasValue returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersCreateUserKeyRequest.md b/sdk/go/docs/HandlersCreateUserKeyRequest.md new file mode 100644 index 0000000..0564e49 --- /dev/null +++ b/sdk/go/docs/HandlersCreateUserKeyRequest.md @@ -0,0 +1,82 @@ +# HandlersCreateUserKeyRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ExpiresInHours** | Pointer to **int32** | optional TTL | [optional] +**Name** | Pointer to **string** | | [optional] + +## Methods + +### NewHandlersCreateUserKeyRequest + +`func NewHandlersCreateUserKeyRequest() *HandlersCreateUserKeyRequest` + +NewHandlersCreateUserKeyRequest instantiates a new HandlersCreateUserKeyRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersCreateUserKeyRequestWithDefaults + +`func NewHandlersCreateUserKeyRequestWithDefaults() *HandlersCreateUserKeyRequest` + +NewHandlersCreateUserKeyRequestWithDefaults instantiates a new HandlersCreateUserKeyRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetExpiresInHours + +`func (o *HandlersCreateUserKeyRequest) GetExpiresInHours() int32` + +GetExpiresInHours returns the ExpiresInHours field if non-nil, zero value otherwise. + +### GetExpiresInHoursOk + +`func (o *HandlersCreateUserKeyRequest) GetExpiresInHoursOk() (*int32, bool)` + +GetExpiresInHoursOk returns a tuple with the ExpiresInHours field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetExpiresInHours + +`func (o *HandlersCreateUserKeyRequest) SetExpiresInHours(v int32)` + +SetExpiresInHours sets ExpiresInHours field to given value. + +### HasExpiresInHours + +`func (o *HandlersCreateUserKeyRequest) HasExpiresInHours() bool` + +HasExpiresInHours returns a boolean if a field has been set. + +### GetName + +`func (o *HandlersCreateUserKeyRequest) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *HandlersCreateUserKeyRequest) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *HandlersCreateUserKeyRequest) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *HandlersCreateUserKeyRequest) HasName() bool` + +HasName returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersMeResponse.md b/sdk/go/docs/HandlersMeResponse.md new file mode 100644 index 0000000..e80293b --- /dev/null +++ b/sdk/go/docs/HandlersMeResponse.md @@ -0,0 +1,264 @@ +# HandlersMeResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**AvatarUrl** | Pointer to **string** | | [optional] +**CreatedAt** | Pointer to **time.Time** | | [optional] +**DisplayName** | Pointer to **string** | | [optional] +**Emails** | Pointer to [**[]ModelsUserEmail**](ModelsUserEmail.md) | | [optional] +**Id** | Pointer to **string** | example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 | [optional] +**IsDisabled** | Pointer to **bool** | | [optional] +**Organizations** | Pointer to [**[]ModelsOrganization**](ModelsOrganization.md) | | [optional] +**PrimaryEmail** | Pointer to **string** | | [optional] +**UpdatedAt** | Pointer to **time.Time** | | [optional] + +## Methods + +### NewHandlersMeResponse + +`func NewHandlersMeResponse() *HandlersMeResponse` + +NewHandlersMeResponse instantiates a new HandlersMeResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersMeResponseWithDefaults + +`func NewHandlersMeResponseWithDefaults() *HandlersMeResponse` + +NewHandlersMeResponseWithDefaults instantiates a new HandlersMeResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetAvatarUrl + +`func (o *HandlersMeResponse) GetAvatarUrl() string` + +GetAvatarUrl returns the AvatarUrl field if non-nil, zero value otherwise. + +### GetAvatarUrlOk + +`func (o *HandlersMeResponse) GetAvatarUrlOk() (*string, bool)` + +GetAvatarUrlOk returns a tuple with the AvatarUrl field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAvatarUrl + +`func (o *HandlersMeResponse) SetAvatarUrl(v string)` + +SetAvatarUrl sets AvatarUrl field to given value. + +### HasAvatarUrl + +`func (o *HandlersMeResponse) HasAvatarUrl() bool` + +HasAvatarUrl returns a boolean if a field has been set. + +### GetCreatedAt + +`func (o *HandlersMeResponse) GetCreatedAt() time.Time` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *HandlersMeResponse) GetCreatedAtOk() (*time.Time, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *HandlersMeResponse) SetCreatedAt(v time.Time)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *HandlersMeResponse) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetDisplayName + +`func (o *HandlersMeResponse) GetDisplayName() string` + +GetDisplayName returns the DisplayName field if non-nil, zero value otherwise. + +### GetDisplayNameOk + +`func (o *HandlersMeResponse) GetDisplayNameOk() (*string, bool)` + +GetDisplayNameOk returns a tuple with the DisplayName field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDisplayName + +`func (o *HandlersMeResponse) SetDisplayName(v string)` + +SetDisplayName sets DisplayName field to given value. + +### HasDisplayName + +`func (o *HandlersMeResponse) HasDisplayName() bool` + +HasDisplayName returns a boolean if a field has been set. + +### GetEmails + +`func (o *HandlersMeResponse) GetEmails() []ModelsUserEmail` + +GetEmails returns the Emails field if non-nil, zero value otherwise. + +### GetEmailsOk + +`func (o *HandlersMeResponse) GetEmailsOk() (*[]ModelsUserEmail, bool)` + +GetEmailsOk returns a tuple with the Emails field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetEmails + +`func (o *HandlersMeResponse) SetEmails(v []ModelsUserEmail)` + +SetEmails sets Emails field to given value. + +### HasEmails + +`func (o *HandlersMeResponse) HasEmails() bool` + +HasEmails returns a boolean if a field has been set. + +### GetId + +`func (o *HandlersMeResponse) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *HandlersMeResponse) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *HandlersMeResponse) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *HandlersMeResponse) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetIsDisabled + +`func (o *HandlersMeResponse) GetIsDisabled() bool` + +GetIsDisabled returns the IsDisabled field if non-nil, zero value otherwise. + +### GetIsDisabledOk + +`func (o *HandlersMeResponse) GetIsDisabledOk() (*bool, bool)` + +GetIsDisabledOk returns a tuple with the IsDisabled field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetIsDisabled + +`func (o *HandlersMeResponse) SetIsDisabled(v bool)` + +SetIsDisabled sets IsDisabled field to given value. + +### HasIsDisabled + +`func (o *HandlersMeResponse) HasIsDisabled() bool` + +HasIsDisabled returns a boolean if a field has been set. + +### GetOrganizations + +`func (o *HandlersMeResponse) GetOrganizations() []ModelsOrganization` + +GetOrganizations returns the Organizations field if non-nil, zero value otherwise. + +### GetOrganizationsOk + +`func (o *HandlersMeResponse) GetOrganizationsOk() (*[]ModelsOrganization, bool)` + +GetOrganizationsOk returns a tuple with the Organizations field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOrganizations + +`func (o *HandlersMeResponse) SetOrganizations(v []ModelsOrganization)` + +SetOrganizations sets Organizations field to given value. + +### HasOrganizations + +`func (o *HandlersMeResponse) HasOrganizations() bool` + +HasOrganizations returns a boolean if a field has been set. + +### GetPrimaryEmail + +`func (o *HandlersMeResponse) GetPrimaryEmail() string` + +GetPrimaryEmail returns the PrimaryEmail field if non-nil, zero value otherwise. + +### GetPrimaryEmailOk + +`func (o *HandlersMeResponse) GetPrimaryEmailOk() (*string, bool)` + +GetPrimaryEmailOk returns a tuple with the PrimaryEmail field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPrimaryEmail + +`func (o *HandlersMeResponse) SetPrimaryEmail(v string)` + +SetPrimaryEmail sets PrimaryEmail field to given value. + +### HasPrimaryEmail + +`func (o *HandlersMeResponse) HasPrimaryEmail() bool` + +HasPrimaryEmail returns a boolean if a field has been set. + +### GetUpdatedAt + +`func (o *HandlersMeResponse) GetUpdatedAt() time.Time` + +GetUpdatedAt returns the UpdatedAt field if non-nil, zero value otherwise. + +### GetUpdatedAtOk + +`func (o *HandlersMeResponse) GetUpdatedAtOk() (*time.Time, bool)` + +GetUpdatedAtOk returns a tuple with the UpdatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUpdatedAt + +`func (o *HandlersMeResponse) SetUpdatedAt(v time.Time)` + +SetUpdatedAt sets UpdatedAt field to given value. + +### HasUpdatedAt + +`func (o *HandlersMeResponse) HasUpdatedAt() bool` + +HasUpdatedAt returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersMemberOut.md b/sdk/go/docs/HandlersMemberOut.md new file mode 100644 index 0000000..a865676 --- /dev/null +++ b/sdk/go/docs/HandlersMemberOut.md @@ -0,0 +1,108 @@ +# HandlersMemberOut + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Email** | Pointer to **string** | | [optional] +**Role** | Pointer to **string** | owner/admin/member | [optional] +**UserId** | Pointer to **string** | | [optional] + +## Methods + +### NewHandlersMemberOut + +`func NewHandlersMemberOut() *HandlersMemberOut` + +NewHandlersMemberOut instantiates a new HandlersMemberOut object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersMemberOutWithDefaults + +`func NewHandlersMemberOutWithDefaults() *HandlersMemberOut` + +NewHandlersMemberOutWithDefaults instantiates a new HandlersMemberOut object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetEmail + +`func (o *HandlersMemberOut) GetEmail() string` + +GetEmail returns the Email field if non-nil, zero value otherwise. + +### GetEmailOk + +`func (o *HandlersMemberOut) GetEmailOk() (*string, bool)` + +GetEmailOk returns a tuple with the Email field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetEmail + +`func (o *HandlersMemberOut) SetEmail(v string)` + +SetEmail sets Email field to given value. + +### HasEmail + +`func (o *HandlersMemberOut) HasEmail() bool` + +HasEmail returns a boolean if a field has been set. + +### GetRole + +`func (o *HandlersMemberOut) GetRole() string` + +GetRole returns the Role field if non-nil, zero value otherwise. + +### GetRoleOk + +`func (o *HandlersMemberOut) GetRoleOk() (*string, bool)` + +GetRoleOk returns a tuple with the Role field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRole + +`func (o *HandlersMemberOut) SetRole(v string)` + +SetRole sets Role field to given value. + +### HasRole + +`func (o *HandlersMemberOut) HasRole() bool` + +HasRole returns a boolean if a field has been set. + +### GetUserId + +`func (o *HandlersMemberOut) GetUserId() string` + +GetUserId returns the UserId field if non-nil, zero value otherwise. + +### GetUserIdOk + +`func (o *HandlersMemberOut) GetUserIdOk() (*string, bool)` + +GetUserIdOk returns a tuple with the UserId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUserId + +`func (o *HandlersMemberOut) SetUserId(v string)` + +SetUserId sets UserId field to given value. + +### HasUserId + +`func (o *HandlersMemberOut) HasUserId() bool` + +HasUserId returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersMemberUpsertReq.md b/sdk/go/docs/HandlersMemberUpsertReq.md new file mode 100644 index 0000000..c2d9671 --- /dev/null +++ b/sdk/go/docs/HandlersMemberUpsertReq.md @@ -0,0 +1,82 @@ +# HandlersMemberUpsertReq + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Role** | Pointer to **string** | | [optional] +**UserId** | Pointer to **string** | | [optional] + +## Methods + +### NewHandlersMemberUpsertReq + +`func NewHandlersMemberUpsertReq() *HandlersMemberUpsertReq` + +NewHandlersMemberUpsertReq instantiates a new HandlersMemberUpsertReq object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersMemberUpsertReqWithDefaults + +`func NewHandlersMemberUpsertReqWithDefaults() *HandlersMemberUpsertReq` + +NewHandlersMemberUpsertReqWithDefaults instantiates a new HandlersMemberUpsertReq object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetRole + +`func (o *HandlersMemberUpsertReq) GetRole() string` + +GetRole returns the Role field if non-nil, zero value otherwise. + +### GetRoleOk + +`func (o *HandlersMemberUpsertReq) GetRoleOk() (*string, bool)` + +GetRoleOk returns a tuple with the Role field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRole + +`func (o *HandlersMemberUpsertReq) SetRole(v string)` + +SetRole sets Role field to given value. + +### HasRole + +`func (o *HandlersMemberUpsertReq) HasRole() bool` + +HasRole returns a boolean if a field has been set. + +### GetUserId + +`func (o *HandlersMemberUpsertReq) GetUserId() string` + +GetUserId returns the UserId field if non-nil, zero value otherwise. + +### GetUserIdOk + +`func (o *HandlersMemberUpsertReq) GetUserIdOk() (*string, bool)` + +GetUserIdOk returns a tuple with the UserId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUserId + +`func (o *HandlersMemberUpsertReq) SetUserId(v string)` + +SetUserId sets UserId field to given value. + +### HasUserId + +`func (o *HandlersMemberUpsertReq) HasUserId() bool` + +HasUserId returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersOrgCreateReq.md b/sdk/go/docs/HandlersOrgCreateReq.md new file mode 100644 index 0000000..07eea50 --- /dev/null +++ b/sdk/go/docs/HandlersOrgCreateReq.md @@ -0,0 +1,82 @@ +# HandlersOrgCreateReq + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Domain** | Pointer to **string** | | [optional] +**Name** | Pointer to **string** | | [optional] + +## Methods + +### NewHandlersOrgCreateReq + +`func NewHandlersOrgCreateReq() *HandlersOrgCreateReq` + +NewHandlersOrgCreateReq instantiates a new HandlersOrgCreateReq object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersOrgCreateReqWithDefaults + +`func NewHandlersOrgCreateReqWithDefaults() *HandlersOrgCreateReq` + +NewHandlersOrgCreateReqWithDefaults instantiates a new HandlersOrgCreateReq object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetDomain + +`func (o *HandlersOrgCreateReq) GetDomain() string` + +GetDomain returns the Domain field if non-nil, zero value otherwise. + +### GetDomainOk + +`func (o *HandlersOrgCreateReq) GetDomainOk() (*string, bool)` + +GetDomainOk returns a tuple with the Domain field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDomain + +`func (o *HandlersOrgCreateReq) SetDomain(v string)` + +SetDomain sets Domain field to given value. + +### HasDomain + +`func (o *HandlersOrgCreateReq) HasDomain() bool` + +HasDomain returns a boolean if a field has been set. + +### GetName + +`func (o *HandlersOrgCreateReq) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *HandlersOrgCreateReq) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *HandlersOrgCreateReq) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *HandlersOrgCreateReq) HasName() bool` + +HasName returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersOrgKeyCreateReq.md b/sdk/go/docs/HandlersOrgKeyCreateReq.md new file mode 100644 index 0000000..f69d484 --- /dev/null +++ b/sdk/go/docs/HandlersOrgKeyCreateReq.md @@ -0,0 +1,82 @@ +# HandlersOrgKeyCreateReq + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ExpiresInHours** | Pointer to **int32** | | [optional] +**Name** | Pointer to **string** | | [optional] + +## Methods + +### NewHandlersOrgKeyCreateReq + +`func NewHandlersOrgKeyCreateReq() *HandlersOrgKeyCreateReq` + +NewHandlersOrgKeyCreateReq instantiates a new HandlersOrgKeyCreateReq object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersOrgKeyCreateReqWithDefaults + +`func NewHandlersOrgKeyCreateReqWithDefaults() *HandlersOrgKeyCreateReq` + +NewHandlersOrgKeyCreateReqWithDefaults instantiates a new HandlersOrgKeyCreateReq object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetExpiresInHours + +`func (o *HandlersOrgKeyCreateReq) GetExpiresInHours() int32` + +GetExpiresInHours returns the ExpiresInHours field if non-nil, zero value otherwise. + +### GetExpiresInHoursOk + +`func (o *HandlersOrgKeyCreateReq) GetExpiresInHoursOk() (*int32, bool)` + +GetExpiresInHoursOk returns a tuple with the ExpiresInHours field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetExpiresInHours + +`func (o *HandlersOrgKeyCreateReq) SetExpiresInHours(v int32)` + +SetExpiresInHours sets ExpiresInHours field to given value. + +### HasExpiresInHours + +`func (o *HandlersOrgKeyCreateReq) HasExpiresInHours() bool` + +HasExpiresInHours returns a boolean if a field has been set. + +### GetName + +`func (o *HandlersOrgKeyCreateReq) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *HandlersOrgKeyCreateReq) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *HandlersOrgKeyCreateReq) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *HandlersOrgKeyCreateReq) HasName() bool` + +HasName returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersOrgKeyCreateResp.md b/sdk/go/docs/HandlersOrgKeyCreateResp.md new file mode 100644 index 0000000..aa0fb3c --- /dev/null +++ b/sdk/go/docs/HandlersOrgKeyCreateResp.md @@ -0,0 +1,212 @@ +# HandlersOrgKeyCreateResp + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedAt** | Pointer to **string** | | [optional] +**ExpiresAt** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | | [optional] +**Name** | Pointer to **string** | | [optional] +**OrgKey** | Pointer to **string** | shown once: | [optional] +**OrgSecret** | Pointer to **string** | shown once: | [optional] +**Scope** | Pointer to **string** | \"org\" | [optional] + +## Methods + +### NewHandlersOrgKeyCreateResp + +`func NewHandlersOrgKeyCreateResp() *HandlersOrgKeyCreateResp` + +NewHandlersOrgKeyCreateResp instantiates a new HandlersOrgKeyCreateResp object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersOrgKeyCreateRespWithDefaults + +`func NewHandlersOrgKeyCreateRespWithDefaults() *HandlersOrgKeyCreateResp` + +NewHandlersOrgKeyCreateRespWithDefaults instantiates a new HandlersOrgKeyCreateResp object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCreatedAt + +`func (o *HandlersOrgKeyCreateResp) GetCreatedAt() string` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *HandlersOrgKeyCreateResp) GetCreatedAtOk() (*string, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *HandlersOrgKeyCreateResp) SetCreatedAt(v string)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *HandlersOrgKeyCreateResp) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetExpiresAt + +`func (o *HandlersOrgKeyCreateResp) GetExpiresAt() string` + +GetExpiresAt returns the ExpiresAt field if non-nil, zero value otherwise. + +### GetExpiresAtOk + +`func (o *HandlersOrgKeyCreateResp) GetExpiresAtOk() (*string, bool)` + +GetExpiresAtOk returns a tuple with the ExpiresAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetExpiresAt + +`func (o *HandlersOrgKeyCreateResp) SetExpiresAt(v string)` + +SetExpiresAt sets ExpiresAt field to given value. + +### HasExpiresAt + +`func (o *HandlersOrgKeyCreateResp) HasExpiresAt() bool` + +HasExpiresAt returns a boolean if a field has been set. + +### GetId + +`func (o *HandlersOrgKeyCreateResp) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *HandlersOrgKeyCreateResp) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *HandlersOrgKeyCreateResp) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *HandlersOrgKeyCreateResp) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetName + +`func (o *HandlersOrgKeyCreateResp) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *HandlersOrgKeyCreateResp) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *HandlersOrgKeyCreateResp) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *HandlersOrgKeyCreateResp) HasName() bool` + +HasName returns a boolean if a field has been set. + +### GetOrgKey + +`func (o *HandlersOrgKeyCreateResp) GetOrgKey() string` + +GetOrgKey returns the OrgKey field if non-nil, zero value otherwise. + +### GetOrgKeyOk + +`func (o *HandlersOrgKeyCreateResp) GetOrgKeyOk() (*string, bool)` + +GetOrgKeyOk returns a tuple with the OrgKey field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOrgKey + +`func (o *HandlersOrgKeyCreateResp) SetOrgKey(v string)` + +SetOrgKey sets OrgKey field to given value. + +### HasOrgKey + +`func (o *HandlersOrgKeyCreateResp) HasOrgKey() bool` + +HasOrgKey returns a boolean if a field has been set. + +### GetOrgSecret + +`func (o *HandlersOrgKeyCreateResp) GetOrgSecret() string` + +GetOrgSecret returns the OrgSecret field if non-nil, zero value otherwise. + +### GetOrgSecretOk + +`func (o *HandlersOrgKeyCreateResp) GetOrgSecretOk() (*string, bool)` + +GetOrgSecretOk returns a tuple with the OrgSecret field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOrgSecret + +`func (o *HandlersOrgKeyCreateResp) SetOrgSecret(v string)` + +SetOrgSecret sets OrgSecret field to given value. + +### HasOrgSecret + +`func (o *HandlersOrgKeyCreateResp) HasOrgSecret() bool` + +HasOrgSecret returns a boolean if a field has been set. + +### GetScope + +`func (o *HandlersOrgKeyCreateResp) GetScope() string` + +GetScope returns the Scope field if non-nil, zero value otherwise. + +### GetScopeOk + +`func (o *HandlersOrgKeyCreateResp) GetScopeOk() (*string, bool)` + +GetScopeOk returns a tuple with the Scope field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetScope + +`func (o *HandlersOrgKeyCreateResp) SetScope(v string)` + +SetScope sets Scope field to given value. + +### HasScope + +`func (o *HandlersOrgKeyCreateResp) HasScope() bool` + +HasScope returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersOrgUpdateReq.md b/sdk/go/docs/HandlersOrgUpdateReq.md new file mode 100644 index 0000000..ff89ace --- /dev/null +++ b/sdk/go/docs/HandlersOrgUpdateReq.md @@ -0,0 +1,82 @@ +# HandlersOrgUpdateReq + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Domain** | Pointer to **string** | | [optional] +**Name** | Pointer to **string** | | [optional] + +## Methods + +### NewHandlersOrgUpdateReq + +`func NewHandlersOrgUpdateReq() *HandlersOrgUpdateReq` + +NewHandlersOrgUpdateReq instantiates a new HandlersOrgUpdateReq object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersOrgUpdateReqWithDefaults + +`func NewHandlersOrgUpdateReqWithDefaults() *HandlersOrgUpdateReq` + +NewHandlersOrgUpdateReqWithDefaults instantiates a new HandlersOrgUpdateReq object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetDomain + +`func (o *HandlersOrgUpdateReq) GetDomain() string` + +GetDomain returns the Domain field if non-nil, zero value otherwise. + +### GetDomainOk + +`func (o *HandlersOrgUpdateReq) GetDomainOk() (*string, bool)` + +GetDomainOk returns a tuple with the Domain field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDomain + +`func (o *HandlersOrgUpdateReq) SetDomain(v string)` + +SetDomain sets Domain field to given value. + +### HasDomain + +`func (o *HandlersOrgUpdateReq) HasDomain() bool` + +HasDomain returns a boolean if a field has been set. + +### GetName + +`func (o *HandlersOrgUpdateReq) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *HandlersOrgUpdateReq) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *HandlersOrgUpdateReq) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *HandlersOrgUpdateReq) HasName() bool` + +HasName returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersUpdateMeRequest.md b/sdk/go/docs/HandlersUpdateMeRequest.md new file mode 100644 index 0000000..eda195e --- /dev/null +++ b/sdk/go/docs/HandlersUpdateMeRequest.md @@ -0,0 +1,56 @@ +# HandlersUpdateMeRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**DisplayName** | Pointer to **string** | | [optional] + +## Methods + +### NewHandlersUpdateMeRequest + +`func NewHandlersUpdateMeRequest() *HandlersUpdateMeRequest` + +NewHandlersUpdateMeRequest instantiates a new HandlersUpdateMeRequest object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersUpdateMeRequestWithDefaults + +`func NewHandlersUpdateMeRequestWithDefaults() *HandlersUpdateMeRequest` + +NewHandlersUpdateMeRequestWithDefaults instantiates a new HandlersUpdateMeRequest object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetDisplayName + +`func (o *HandlersUpdateMeRequest) GetDisplayName() string` + +GetDisplayName returns the DisplayName field if non-nil, zero value otherwise. + +### GetDisplayNameOk + +`func (o *HandlersUpdateMeRequest) GetDisplayNameOk() (*string, bool)` + +GetDisplayNameOk returns a tuple with the DisplayName field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDisplayName + +`func (o *HandlersUpdateMeRequest) SetDisplayName(v string)` + +SetDisplayName sets DisplayName field to given value. + +### HasDisplayName + +`func (o *HandlersUpdateMeRequest) HasDisplayName() bool` + +HasDisplayName returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/HandlersUserAPIKeyOut.md b/sdk/go/docs/HandlersUserAPIKeyOut.md new file mode 100644 index 0000000..90d3e6f --- /dev/null +++ b/sdk/go/docs/HandlersUserAPIKeyOut.md @@ -0,0 +1,212 @@ +# HandlersUserAPIKeyOut + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedAt** | Pointer to **string** | | [optional] +**ExpiresAt** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | | [optional] +**LastUsedAt** | Pointer to **string** | | [optional] +**Name** | Pointer to **string** | | [optional] +**Plain** | Pointer to **string** | Shown only on create: | [optional] +**Scope** | Pointer to **string** | \"user\" | [optional] + +## Methods + +### NewHandlersUserAPIKeyOut + +`func NewHandlersUserAPIKeyOut() *HandlersUserAPIKeyOut` + +NewHandlersUserAPIKeyOut instantiates a new HandlersUserAPIKeyOut object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewHandlersUserAPIKeyOutWithDefaults + +`func NewHandlersUserAPIKeyOutWithDefaults() *HandlersUserAPIKeyOut` + +NewHandlersUserAPIKeyOutWithDefaults instantiates a new HandlersUserAPIKeyOut object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCreatedAt + +`func (o *HandlersUserAPIKeyOut) GetCreatedAt() string` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *HandlersUserAPIKeyOut) GetCreatedAtOk() (*string, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *HandlersUserAPIKeyOut) SetCreatedAt(v string)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *HandlersUserAPIKeyOut) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetExpiresAt + +`func (o *HandlersUserAPIKeyOut) GetExpiresAt() string` + +GetExpiresAt returns the ExpiresAt field if non-nil, zero value otherwise. + +### GetExpiresAtOk + +`func (o *HandlersUserAPIKeyOut) GetExpiresAtOk() (*string, bool)` + +GetExpiresAtOk returns a tuple with the ExpiresAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetExpiresAt + +`func (o *HandlersUserAPIKeyOut) SetExpiresAt(v string)` + +SetExpiresAt sets ExpiresAt field to given value. + +### HasExpiresAt + +`func (o *HandlersUserAPIKeyOut) HasExpiresAt() bool` + +HasExpiresAt returns a boolean if a field has been set. + +### GetId + +`func (o *HandlersUserAPIKeyOut) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *HandlersUserAPIKeyOut) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *HandlersUserAPIKeyOut) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *HandlersUserAPIKeyOut) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetLastUsedAt + +`func (o *HandlersUserAPIKeyOut) GetLastUsedAt() string` + +GetLastUsedAt returns the LastUsedAt field if non-nil, zero value otherwise. + +### GetLastUsedAtOk + +`func (o *HandlersUserAPIKeyOut) GetLastUsedAtOk() (*string, bool)` + +GetLastUsedAtOk returns a tuple with the LastUsedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetLastUsedAt + +`func (o *HandlersUserAPIKeyOut) SetLastUsedAt(v string)` + +SetLastUsedAt sets LastUsedAt field to given value. + +### HasLastUsedAt + +`func (o *HandlersUserAPIKeyOut) HasLastUsedAt() bool` + +HasLastUsedAt returns a boolean if a field has been set. + +### GetName + +`func (o *HandlersUserAPIKeyOut) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *HandlersUserAPIKeyOut) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *HandlersUserAPIKeyOut) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *HandlersUserAPIKeyOut) HasName() bool` + +HasName returns a boolean if a field has been set. + +### GetPlain + +`func (o *HandlersUserAPIKeyOut) GetPlain() string` + +GetPlain returns the Plain field if non-nil, zero value otherwise. + +### GetPlainOk + +`func (o *HandlersUserAPIKeyOut) GetPlainOk() (*string, bool)` + +GetPlainOk returns a tuple with the Plain field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPlain + +`func (o *HandlersUserAPIKeyOut) SetPlain(v string)` + +SetPlain sets Plain field to given value. + +### HasPlain + +`func (o *HandlersUserAPIKeyOut) HasPlain() bool` + +HasPlain returns a boolean if a field has been set. + +### GetScope + +`func (o *HandlersUserAPIKeyOut) GetScope() string` + +GetScope returns the Scope field if non-nil, zero value otherwise. + +### GetScopeOk + +`func (o *HandlersUserAPIKeyOut) GetScopeOk() (*string, bool)` + +GetScopeOk returns a tuple with the Scope field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetScope + +`func (o *HandlersUserAPIKeyOut) SetScope(v string)` + +SetScope sets Scope field to given value. + +### HasScope + +`func (o *HandlersUserAPIKeyOut) HasScope() bool` + +HasScope returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/MeAPI.md b/sdk/go/docs/MeAPI.md new file mode 100644 index 0000000..bbebe60 --- /dev/null +++ b/sdk/go/docs/MeAPI.md @@ -0,0 +1,133 @@ +# \MeAPI + +All URIs are relative to *http://localhost:8080/api/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**GetMe**](MeAPI.md#GetMe) | **Get** /me | Get current user profile +[**UpdateMe**](MeAPI.md#UpdateMe) | **Patch** /me | Update current user profile + + + +## GetMe + +> HandlersMeResponse GetMe(ctx).Execute() + +Get current user profile + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.MeAPI.GetMe(context.Background()).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `MeAPI.GetMe``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetMe`: HandlersMeResponse + fmt.Fprintf(os.Stdout, "Response from `MeAPI.GetMe`: %v\n", resp) +} +``` + +### Path Parameters + +This endpoint does not need any parameter. + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetMeRequest struct via the builder pattern + + +### Return type + +[**HandlersMeResponse**](HandlersMeResponse.md) + +### Authorization + +[ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## UpdateMe + +> ModelsUser UpdateMe(ctx).Body(body).Execute() + +Update current user profile + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + body := *openapiclient.NewHandlersUpdateMeRequest() // HandlersUpdateMeRequest | Patch profile + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.MeAPI.UpdateMe(context.Background()).Body(body).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `MeAPI.UpdateMe``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `UpdateMe`: ModelsUser + fmt.Fprintf(os.Stdout, "Response from `MeAPI.UpdateMe`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiUpdateMeRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**HandlersUpdateMeRequest**](HandlersUpdateMeRequest.md) | Patch profile | + +### Return type + +[**ModelsUser**](ModelsUser.md) + +### Authorization + +[ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/sdk/go/docs/MeAPIKeysAPI.md b/sdk/go/docs/MeAPIKeysAPI.md new file mode 100644 index 0000000..033458c --- /dev/null +++ b/sdk/go/docs/MeAPIKeysAPI.md @@ -0,0 +1,202 @@ +# \MeAPIKeysAPI + +All URIs are relative to *http://localhost:8080/api/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateUserAPIKey**](MeAPIKeysAPI.md#CreateUserAPIKey) | **Post** /me/api-keys | Create a new user API key +[**DeleteUserAPIKey**](MeAPIKeysAPI.md#DeleteUserAPIKey) | **Delete** /me/api-keys/{id} | Delete a user API key +[**ListUserAPIKeys**](MeAPIKeysAPI.md#ListUserAPIKeys) | **Get** /me/api-keys | List my API keys + + + +## CreateUserAPIKey + +> HandlersUserAPIKeyOut CreateUserAPIKey(ctx).Body(body).Execute() + +Create a new user API key + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + body := *openapiclient.NewHandlersCreateUserKeyRequest() // HandlersCreateUserKeyRequest | Key options + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.MeAPIKeysAPI.CreateUserAPIKey(context.Background()).Body(body).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `MeAPIKeysAPI.CreateUserAPIKey``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `CreateUserAPIKey`: HandlersUserAPIKeyOut + fmt.Fprintf(os.Stdout, "Response from `MeAPIKeysAPI.CreateUserAPIKey`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiCreateUserAPIKeyRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**HandlersCreateUserKeyRequest**](HandlersCreateUserKeyRequest.md) | Key options | + +### Return type + +[**HandlersUserAPIKeyOut**](HandlersUserAPIKeyOut.md) + +### Authorization + +[ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## DeleteUserAPIKey + +> DeleteUserAPIKey(ctx, id).Execute() + +Delete a user API key + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Key ID (UUID) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + r, err := apiClient.MeAPIKeysAPI.DeleteUserAPIKey(context.Background(), id).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `MeAPIKeysAPI.DeleteUserAPIKey``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Key ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiDeleteUserAPIKeyRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + +### Return type + + (empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## ListUserAPIKeys + +> []HandlersUserAPIKeyOut ListUserAPIKeys(ctx).Execute() + +List my API keys + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.MeAPIKeysAPI.ListUserAPIKeys(context.Background()).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `MeAPIKeysAPI.ListUserAPIKeys``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `ListUserAPIKeys`: []HandlersUserAPIKeyOut + fmt.Fprintf(os.Stdout, "Response from `MeAPIKeysAPI.ListUserAPIKeys`: %v\n", resp) +} +``` + +### Path Parameters + +This endpoint does not need any parameter. + +### Other Parameters + +Other parameters are passed through a pointer to a apiListUserAPIKeysRequest struct via the builder pattern + + +### Return type + +[**[]HandlersUserAPIKeyOut**](HandlersUserAPIKeyOut.md) + +### Authorization + +[ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/sdk/go/docs/ModelsAPIKey.md b/sdk/go/docs/ModelsAPIKey.md new file mode 100644 index 0000000..d5db33e --- /dev/null +++ b/sdk/go/docs/ModelsAPIKey.md @@ -0,0 +1,316 @@ +# ModelsAPIKey + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedAt** | Pointer to **time.Time** | | [optional] +**ExpiresAt** | Pointer to **time.Time** | | [optional] +**Id** | Pointer to **string** | | [optional] +**LastUsedAt** | Pointer to **time.Time** | | [optional] +**Name** | Pointer to **string** | | [optional] +**OrgId** | Pointer to **string** | | [optional] +**Prefix** | Pointer to **string** | | [optional] +**Revoked** | Pointer to **bool** | | [optional] +**Scope** | Pointer to **string** | | [optional] +**UpdatedAt** | Pointer to **time.Time** | | [optional] +**UserId** | Pointer to **string** | | [optional] + +## Methods + +### NewModelsAPIKey + +`func NewModelsAPIKey() *ModelsAPIKey` + +NewModelsAPIKey instantiates a new ModelsAPIKey object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewModelsAPIKeyWithDefaults + +`func NewModelsAPIKeyWithDefaults() *ModelsAPIKey` + +NewModelsAPIKeyWithDefaults instantiates a new ModelsAPIKey object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCreatedAt + +`func (o *ModelsAPIKey) GetCreatedAt() time.Time` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *ModelsAPIKey) GetCreatedAtOk() (*time.Time, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *ModelsAPIKey) SetCreatedAt(v time.Time)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *ModelsAPIKey) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetExpiresAt + +`func (o *ModelsAPIKey) GetExpiresAt() time.Time` + +GetExpiresAt returns the ExpiresAt field if non-nil, zero value otherwise. + +### GetExpiresAtOk + +`func (o *ModelsAPIKey) GetExpiresAtOk() (*time.Time, bool)` + +GetExpiresAtOk returns a tuple with the ExpiresAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetExpiresAt + +`func (o *ModelsAPIKey) SetExpiresAt(v time.Time)` + +SetExpiresAt sets ExpiresAt field to given value. + +### HasExpiresAt + +`func (o *ModelsAPIKey) HasExpiresAt() bool` + +HasExpiresAt returns a boolean if a field has been set. + +### GetId + +`func (o *ModelsAPIKey) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *ModelsAPIKey) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *ModelsAPIKey) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *ModelsAPIKey) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetLastUsedAt + +`func (o *ModelsAPIKey) GetLastUsedAt() time.Time` + +GetLastUsedAt returns the LastUsedAt field if non-nil, zero value otherwise. + +### GetLastUsedAtOk + +`func (o *ModelsAPIKey) GetLastUsedAtOk() (*time.Time, bool)` + +GetLastUsedAtOk returns a tuple with the LastUsedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetLastUsedAt + +`func (o *ModelsAPIKey) SetLastUsedAt(v time.Time)` + +SetLastUsedAt sets LastUsedAt field to given value. + +### HasLastUsedAt + +`func (o *ModelsAPIKey) HasLastUsedAt() bool` + +HasLastUsedAt returns a boolean if a field has been set. + +### GetName + +`func (o *ModelsAPIKey) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *ModelsAPIKey) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *ModelsAPIKey) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *ModelsAPIKey) HasName() bool` + +HasName returns a boolean if a field has been set. + +### GetOrgId + +`func (o *ModelsAPIKey) GetOrgId() string` + +GetOrgId returns the OrgId field if non-nil, zero value otherwise. + +### GetOrgIdOk + +`func (o *ModelsAPIKey) GetOrgIdOk() (*string, bool)` + +GetOrgIdOk returns a tuple with the OrgId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOrgId + +`func (o *ModelsAPIKey) SetOrgId(v string)` + +SetOrgId sets OrgId field to given value. + +### HasOrgId + +`func (o *ModelsAPIKey) HasOrgId() bool` + +HasOrgId returns a boolean if a field has been set. + +### GetPrefix + +`func (o *ModelsAPIKey) GetPrefix() string` + +GetPrefix returns the Prefix field if non-nil, zero value otherwise. + +### GetPrefixOk + +`func (o *ModelsAPIKey) GetPrefixOk() (*string, bool)` + +GetPrefixOk returns a tuple with the Prefix field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPrefix + +`func (o *ModelsAPIKey) SetPrefix(v string)` + +SetPrefix sets Prefix field to given value. + +### HasPrefix + +`func (o *ModelsAPIKey) HasPrefix() bool` + +HasPrefix returns a boolean if a field has been set. + +### GetRevoked + +`func (o *ModelsAPIKey) GetRevoked() bool` + +GetRevoked returns the Revoked field if non-nil, zero value otherwise. + +### GetRevokedOk + +`func (o *ModelsAPIKey) GetRevokedOk() (*bool, bool)` + +GetRevokedOk returns a tuple with the Revoked field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRevoked + +`func (o *ModelsAPIKey) SetRevoked(v bool)` + +SetRevoked sets Revoked field to given value. + +### HasRevoked + +`func (o *ModelsAPIKey) HasRevoked() bool` + +HasRevoked returns a boolean if a field has been set. + +### GetScope + +`func (o *ModelsAPIKey) GetScope() string` + +GetScope returns the Scope field if non-nil, zero value otherwise. + +### GetScopeOk + +`func (o *ModelsAPIKey) GetScopeOk() (*string, bool)` + +GetScopeOk returns a tuple with the Scope field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetScope + +`func (o *ModelsAPIKey) SetScope(v string)` + +SetScope sets Scope field to given value. + +### HasScope + +`func (o *ModelsAPIKey) HasScope() bool` + +HasScope returns a boolean if a field has been set. + +### GetUpdatedAt + +`func (o *ModelsAPIKey) GetUpdatedAt() time.Time` + +GetUpdatedAt returns the UpdatedAt field if non-nil, zero value otherwise. + +### GetUpdatedAtOk + +`func (o *ModelsAPIKey) GetUpdatedAtOk() (*time.Time, bool)` + +GetUpdatedAtOk returns a tuple with the UpdatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUpdatedAt + +`func (o *ModelsAPIKey) SetUpdatedAt(v time.Time)` + +SetUpdatedAt sets UpdatedAt field to given value. + +### HasUpdatedAt + +`func (o *ModelsAPIKey) HasUpdatedAt() bool` + +HasUpdatedAt returns a boolean if a field has been set. + +### GetUserId + +`func (o *ModelsAPIKey) GetUserId() string` + +GetUserId returns the UserId field if non-nil, zero value otherwise. + +### GetUserIdOk + +`func (o *ModelsAPIKey) GetUserIdOk() (*string, bool)` + +GetUserIdOk returns a tuple with the UserId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUserId + +`func (o *ModelsAPIKey) SetUserId(v string)` + +SetUserId sets UserId field to given value. + +### HasUserId + +`func (o *ModelsAPIKey) HasUserId() bool` + +HasUserId returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/ModelsOrganization.md b/sdk/go/docs/ModelsOrganization.md new file mode 100644 index 0000000..02fc367 --- /dev/null +++ b/sdk/go/docs/ModelsOrganization.md @@ -0,0 +1,160 @@ +# ModelsOrganization + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedAt** | Pointer to **time.Time** | | [optional] +**Domain** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 | [optional] +**Name** | Pointer to **string** | | [optional] +**UpdatedAt** | Pointer to **time.Time** | | [optional] + +## Methods + +### NewModelsOrganization + +`func NewModelsOrganization() *ModelsOrganization` + +NewModelsOrganization instantiates a new ModelsOrganization object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewModelsOrganizationWithDefaults + +`func NewModelsOrganizationWithDefaults() *ModelsOrganization` + +NewModelsOrganizationWithDefaults instantiates a new ModelsOrganization object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCreatedAt + +`func (o *ModelsOrganization) GetCreatedAt() time.Time` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *ModelsOrganization) GetCreatedAtOk() (*time.Time, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *ModelsOrganization) SetCreatedAt(v time.Time)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *ModelsOrganization) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetDomain + +`func (o *ModelsOrganization) GetDomain() string` + +GetDomain returns the Domain field if non-nil, zero value otherwise. + +### GetDomainOk + +`func (o *ModelsOrganization) GetDomainOk() (*string, bool)` + +GetDomainOk returns a tuple with the Domain field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDomain + +`func (o *ModelsOrganization) SetDomain(v string)` + +SetDomain sets Domain field to given value. + +### HasDomain + +`func (o *ModelsOrganization) HasDomain() bool` + +HasDomain returns a boolean if a field has been set. + +### GetId + +`func (o *ModelsOrganization) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *ModelsOrganization) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *ModelsOrganization) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *ModelsOrganization) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetName + +`func (o *ModelsOrganization) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *ModelsOrganization) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *ModelsOrganization) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *ModelsOrganization) HasName() bool` + +HasName returns a boolean if a field has been set. + +### GetUpdatedAt + +`func (o *ModelsOrganization) GetUpdatedAt() time.Time` + +GetUpdatedAt returns the UpdatedAt field if non-nil, zero value otherwise. + +### GetUpdatedAtOk + +`func (o *ModelsOrganization) GetUpdatedAtOk() (*time.Time, bool)` + +GetUpdatedAtOk returns a tuple with the UpdatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUpdatedAt + +`func (o *ModelsOrganization) SetUpdatedAt(v time.Time)` + +SetUpdatedAt sets UpdatedAt field to given value. + +### HasUpdatedAt + +`func (o *ModelsOrganization) HasUpdatedAt() bool` + +HasUpdatedAt returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/ModelsUser.md b/sdk/go/docs/ModelsUser.md new file mode 100644 index 0000000..d74bb67 --- /dev/null +++ b/sdk/go/docs/ModelsUser.md @@ -0,0 +1,212 @@ +# ModelsUser + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**AvatarUrl** | Pointer to **string** | | [optional] +**CreatedAt** | Pointer to **time.Time** | | [optional] +**DisplayName** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 | [optional] +**IsDisabled** | Pointer to **bool** | | [optional] +**PrimaryEmail** | Pointer to **string** | | [optional] +**UpdatedAt** | Pointer to **time.Time** | | [optional] + +## Methods + +### NewModelsUser + +`func NewModelsUser() *ModelsUser` + +NewModelsUser instantiates a new ModelsUser object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewModelsUserWithDefaults + +`func NewModelsUserWithDefaults() *ModelsUser` + +NewModelsUserWithDefaults instantiates a new ModelsUser object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetAvatarUrl + +`func (o *ModelsUser) GetAvatarUrl() string` + +GetAvatarUrl returns the AvatarUrl field if non-nil, zero value otherwise. + +### GetAvatarUrlOk + +`func (o *ModelsUser) GetAvatarUrlOk() (*string, bool)` + +GetAvatarUrlOk returns a tuple with the AvatarUrl field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAvatarUrl + +`func (o *ModelsUser) SetAvatarUrl(v string)` + +SetAvatarUrl sets AvatarUrl field to given value. + +### HasAvatarUrl + +`func (o *ModelsUser) HasAvatarUrl() bool` + +HasAvatarUrl returns a boolean if a field has been set. + +### GetCreatedAt + +`func (o *ModelsUser) GetCreatedAt() time.Time` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *ModelsUser) GetCreatedAtOk() (*time.Time, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *ModelsUser) SetCreatedAt(v time.Time)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *ModelsUser) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetDisplayName + +`func (o *ModelsUser) GetDisplayName() string` + +GetDisplayName returns the DisplayName field if non-nil, zero value otherwise. + +### GetDisplayNameOk + +`func (o *ModelsUser) GetDisplayNameOk() (*string, bool)` + +GetDisplayNameOk returns a tuple with the DisplayName field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDisplayName + +`func (o *ModelsUser) SetDisplayName(v string)` + +SetDisplayName sets DisplayName field to given value. + +### HasDisplayName + +`func (o *ModelsUser) HasDisplayName() bool` + +HasDisplayName returns a boolean if a field has been set. + +### GetId + +`func (o *ModelsUser) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *ModelsUser) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *ModelsUser) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *ModelsUser) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetIsDisabled + +`func (o *ModelsUser) GetIsDisabled() bool` + +GetIsDisabled returns the IsDisabled field if non-nil, zero value otherwise. + +### GetIsDisabledOk + +`func (o *ModelsUser) GetIsDisabledOk() (*bool, bool)` + +GetIsDisabledOk returns a tuple with the IsDisabled field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetIsDisabled + +`func (o *ModelsUser) SetIsDisabled(v bool)` + +SetIsDisabled sets IsDisabled field to given value. + +### HasIsDisabled + +`func (o *ModelsUser) HasIsDisabled() bool` + +HasIsDisabled returns a boolean if a field has been set. + +### GetPrimaryEmail + +`func (o *ModelsUser) GetPrimaryEmail() string` + +GetPrimaryEmail returns the PrimaryEmail field if non-nil, zero value otherwise. + +### GetPrimaryEmailOk + +`func (o *ModelsUser) GetPrimaryEmailOk() (*string, bool)` + +GetPrimaryEmailOk returns a tuple with the PrimaryEmail field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPrimaryEmail + +`func (o *ModelsUser) SetPrimaryEmail(v string)` + +SetPrimaryEmail sets PrimaryEmail field to given value. + +### HasPrimaryEmail + +`func (o *ModelsUser) HasPrimaryEmail() bool` + +HasPrimaryEmail returns a boolean if a field has been set. + +### GetUpdatedAt + +`func (o *ModelsUser) GetUpdatedAt() time.Time` + +GetUpdatedAt returns the UpdatedAt field if non-nil, zero value otherwise. + +### GetUpdatedAtOk + +`func (o *ModelsUser) GetUpdatedAtOk() (*time.Time, bool)` + +GetUpdatedAtOk returns a tuple with the UpdatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUpdatedAt + +`func (o *ModelsUser) SetUpdatedAt(v time.Time)` + +SetUpdatedAt sets UpdatedAt field to given value. + +### HasUpdatedAt + +`func (o *ModelsUser) HasUpdatedAt() bool` + +HasUpdatedAt returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/ModelsUserEmail.md b/sdk/go/docs/ModelsUserEmail.md new file mode 100644 index 0000000..ab10365 --- /dev/null +++ b/sdk/go/docs/ModelsUserEmail.md @@ -0,0 +1,238 @@ +# ModelsUserEmail + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedAt** | Pointer to **time.Time** | | [optional] +**Email** | Pointer to **string** | | [optional] +**Id** | Pointer to **string** | example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 | [optional] +**IsPrimary** | Pointer to **bool** | | [optional] +**IsVerified** | Pointer to **bool** | | [optional] +**UpdatedAt** | Pointer to **time.Time** | | [optional] +**User** | Pointer to [**ModelsUser**](ModelsUser.md) | | [optional] +**UserId** | Pointer to **string** | | [optional] + +## Methods + +### NewModelsUserEmail + +`func NewModelsUserEmail() *ModelsUserEmail` + +NewModelsUserEmail instantiates a new ModelsUserEmail object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewModelsUserEmailWithDefaults + +`func NewModelsUserEmailWithDefaults() *ModelsUserEmail` + +NewModelsUserEmailWithDefaults instantiates a new ModelsUserEmail object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCreatedAt + +`func (o *ModelsUserEmail) GetCreatedAt() time.Time` + +GetCreatedAt returns the CreatedAt field if non-nil, zero value otherwise. + +### GetCreatedAtOk + +`func (o *ModelsUserEmail) GetCreatedAtOk() (*time.Time, bool)` + +GetCreatedAtOk returns a tuple with the CreatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreatedAt + +`func (o *ModelsUserEmail) SetCreatedAt(v time.Time)` + +SetCreatedAt sets CreatedAt field to given value. + +### HasCreatedAt + +`func (o *ModelsUserEmail) HasCreatedAt() bool` + +HasCreatedAt returns a boolean if a field has been set. + +### GetEmail + +`func (o *ModelsUserEmail) GetEmail() string` + +GetEmail returns the Email field if non-nil, zero value otherwise. + +### GetEmailOk + +`func (o *ModelsUserEmail) GetEmailOk() (*string, bool)` + +GetEmailOk returns a tuple with the Email field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetEmail + +`func (o *ModelsUserEmail) SetEmail(v string)` + +SetEmail sets Email field to given value. + +### HasEmail + +`func (o *ModelsUserEmail) HasEmail() bool` + +HasEmail returns a boolean if a field has been set. + +### GetId + +`func (o *ModelsUserEmail) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *ModelsUserEmail) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *ModelsUserEmail) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *ModelsUserEmail) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetIsPrimary + +`func (o *ModelsUserEmail) GetIsPrimary() bool` + +GetIsPrimary returns the IsPrimary field if non-nil, zero value otherwise. + +### GetIsPrimaryOk + +`func (o *ModelsUserEmail) GetIsPrimaryOk() (*bool, bool)` + +GetIsPrimaryOk returns a tuple with the IsPrimary field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetIsPrimary + +`func (o *ModelsUserEmail) SetIsPrimary(v bool)` + +SetIsPrimary sets IsPrimary field to given value. + +### HasIsPrimary + +`func (o *ModelsUserEmail) HasIsPrimary() bool` + +HasIsPrimary returns a boolean if a field has been set. + +### GetIsVerified + +`func (o *ModelsUserEmail) GetIsVerified() bool` + +GetIsVerified returns the IsVerified field if non-nil, zero value otherwise. + +### GetIsVerifiedOk + +`func (o *ModelsUserEmail) GetIsVerifiedOk() (*bool, bool)` + +GetIsVerifiedOk returns a tuple with the IsVerified field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetIsVerified + +`func (o *ModelsUserEmail) SetIsVerified(v bool)` + +SetIsVerified sets IsVerified field to given value. + +### HasIsVerified + +`func (o *ModelsUserEmail) HasIsVerified() bool` + +HasIsVerified returns a boolean if a field has been set. + +### GetUpdatedAt + +`func (o *ModelsUserEmail) GetUpdatedAt() time.Time` + +GetUpdatedAt returns the UpdatedAt field if non-nil, zero value otherwise. + +### GetUpdatedAtOk + +`func (o *ModelsUserEmail) GetUpdatedAtOk() (*time.Time, bool)` + +GetUpdatedAtOk returns a tuple with the UpdatedAt field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUpdatedAt + +`func (o *ModelsUserEmail) SetUpdatedAt(v time.Time)` + +SetUpdatedAt sets UpdatedAt field to given value. + +### HasUpdatedAt + +`func (o *ModelsUserEmail) HasUpdatedAt() bool` + +HasUpdatedAt returns a boolean if a field has been set. + +### GetUser + +`func (o *ModelsUserEmail) GetUser() ModelsUser` + +GetUser returns the User field if non-nil, zero value otherwise. + +### GetUserOk + +`func (o *ModelsUserEmail) GetUserOk() (*ModelsUser, bool)` + +GetUserOk returns a tuple with the User field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUser + +`func (o *ModelsUserEmail) SetUser(v ModelsUser)` + +SetUser sets User field to given value. + +### HasUser + +`func (o *ModelsUserEmail) HasUser() bool` + +HasUser returns a boolean if a field has been set. + +### GetUserId + +`func (o *ModelsUserEmail) GetUserId() string` + +GetUserId returns the UserId field if non-nil, zero value otherwise. + +### GetUserIdOk + +`func (o *ModelsUserEmail) GetUserIdOk() (*string, bool)` + +GetUserIdOk returns a tuple with the UserId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetUserId + +`func (o *ModelsUserEmail) SetUserId(v string)` + +SetUserId sets UserId field to given value. + +### HasUserId + +`func (o *ModelsUserEmail) HasUserId() bool` + +HasUserId returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/docs/OrgsAPI.md b/sdk/go/docs/OrgsAPI.md new file mode 100644 index 0000000..c411a4c --- /dev/null +++ b/sdk/go/docs/OrgsAPI.md @@ -0,0 +1,760 @@ +# \OrgsAPI + +All URIs are relative to *http://localhost:8080/api/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**AddOrUpdateMember**](OrgsAPI.md#AddOrUpdateMember) | **Post** /orgs/{id}/members | Add or update a member (owner/admin) +[**CreateOrg**](OrgsAPI.md#CreateOrg) | **Post** /orgs | Create organization +[**CreateOrgKey**](OrgsAPI.md#CreateOrgKey) | **Post** /orgs/{id}/api-keys | Create org key/secret pair (owner/admin) +[**DeleteOrg**](OrgsAPI.md#DeleteOrg) | **Delete** /orgs/{id} | Delete organization (owner) +[**DeleteOrgKey**](OrgsAPI.md#DeleteOrgKey) | **Delete** /orgs/{id}/api-keys/{key_id} | Delete org key (owner/admin) +[**GetOrg**](OrgsAPI.md#GetOrg) | **Get** /orgs/{id} | Get organization +[**ListMembers**](OrgsAPI.md#ListMembers) | **Get** /orgs/{id}/members | List members in org +[**ListMyOrgs**](OrgsAPI.md#ListMyOrgs) | **Get** /orgs | List organizations I belong to +[**ListOrgKeys**](OrgsAPI.md#ListOrgKeys) | **Get** /orgs/{id}/api-keys | List org-scoped API keys (no secrets) +[**RemoveMember**](OrgsAPI.md#RemoveMember) | **Delete** /orgs/{id}/members/{user_id} | Remove a member (owner/admin) +[**UpdateOrg**](OrgsAPI.md#UpdateOrg) | **Patch** /orgs/{id} | Update organization (owner/admin) + + + +## AddOrUpdateMember + +> HandlersMemberOut AddOrUpdateMember(ctx, id).Body(body).Execute() + +Add or update a member (owner/admin) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + body := *openapiclient.NewHandlersMemberUpsertReq() // HandlersMemberUpsertReq | User & role + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.OrgsAPI.AddOrUpdateMember(context.Background(), id).Body(body).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.AddOrUpdateMember``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `AddOrUpdateMember`: HandlersMemberOut + fmt.Fprintf(os.Stdout, "Response from `OrgsAPI.AddOrUpdateMember`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiAddOrUpdateMemberRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **body** | [**HandlersMemberUpsertReq**](HandlersMemberUpsertReq.md) | User & role | + +### Return type + +[**HandlersMemberOut**](HandlersMemberOut.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## CreateOrg + +> ModelsOrganization CreateOrg(ctx).Body(body).Execute() + +Create organization + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + body := *openapiclient.NewHandlersOrgCreateReq() // HandlersOrgCreateReq | Org payload + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.OrgsAPI.CreateOrg(context.Background()).Body(body).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.CreateOrg``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `CreateOrg`: ModelsOrganization + fmt.Fprintf(os.Stdout, "Response from `OrgsAPI.CreateOrg`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiCreateOrgRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**HandlersOrgCreateReq**](HandlersOrgCreateReq.md) | Org payload | + +### Return type + +[**ModelsOrganization**](ModelsOrganization.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## CreateOrgKey + +> HandlersOrgKeyCreateResp CreateOrgKey(ctx, id).Body(body).Execute() + +Create org key/secret pair (owner/admin) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + body := *openapiclient.NewHandlersOrgKeyCreateReq() // HandlersOrgKeyCreateReq | Key name + optional expiry + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.OrgsAPI.CreateOrgKey(context.Background(), id).Body(body).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.CreateOrgKey``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `CreateOrgKey`: HandlersOrgKeyCreateResp + fmt.Fprintf(os.Stdout, "Response from `OrgsAPI.CreateOrgKey`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiCreateOrgKeyRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **body** | [**HandlersOrgKeyCreateReq**](HandlersOrgKeyCreateReq.md) | Key name + optional expiry | + +### Return type + +[**HandlersOrgKeyCreateResp**](HandlersOrgKeyCreateResp.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## DeleteOrg + +> DeleteOrg(ctx, id).Execute() + +Delete organization (owner) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + r, err := apiClient.OrgsAPI.DeleteOrg(context.Background(), id).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.DeleteOrg``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiDeleteOrgRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + +### Return type + + (empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## DeleteOrgKey + +> DeleteOrgKey(ctx, id, keyId).Execute() + +Delete org key (owner/admin) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + keyId := "keyId_example" // string | Key ID (UUID) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + r, err := apiClient.OrgsAPI.DeleteOrgKey(context.Background(), id, keyId).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.DeleteOrgKey``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | +**keyId** | **string** | Key ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiDeleteOrgKeyRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + + +### Return type + + (empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## GetOrg + +> ModelsOrganization GetOrg(ctx, id).Execute() + +Get organization + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.OrgsAPI.GetOrg(context.Background(), id).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.GetOrg``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetOrg`: ModelsOrganization + fmt.Fprintf(os.Stdout, "Response from `OrgsAPI.GetOrg`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetOrgRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + +### Return type + +[**ModelsOrganization**](ModelsOrganization.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## ListMembers + +> []HandlersMemberOut ListMembers(ctx, id).Execute() + +List members in org + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.OrgsAPI.ListMembers(context.Background(), id).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.ListMembers``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `ListMembers`: []HandlersMemberOut + fmt.Fprintf(os.Stdout, "Response from `OrgsAPI.ListMembers`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiListMembersRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + +### Return type + +[**[]HandlersMemberOut**](HandlersMemberOut.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## ListMyOrgs + +> []ModelsOrganization ListMyOrgs(ctx).Execute() + +List organizations I belong to + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.OrgsAPI.ListMyOrgs(context.Background()).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.ListMyOrgs``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `ListMyOrgs`: []ModelsOrganization + fmt.Fprintf(os.Stdout, "Response from `OrgsAPI.ListMyOrgs`: %v\n", resp) +} +``` + +### Path Parameters + +This endpoint does not need any parameter. + +### Other Parameters + +Other parameters are passed through a pointer to a apiListMyOrgsRequest struct via the builder pattern + + +### Return type + +[**[]ModelsOrganization**](ModelsOrganization.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## ListOrgKeys + +> []ModelsAPIKey ListOrgKeys(ctx, id).Execute() + +List org-scoped API keys (no secrets) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.OrgsAPI.ListOrgKeys(context.Background(), id).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.ListOrgKeys``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `ListOrgKeys`: []ModelsAPIKey + fmt.Fprintf(os.Stdout, "Response from `OrgsAPI.ListOrgKeys`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiListOrgKeysRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + +### Return type + +[**[]ModelsAPIKey**](ModelsAPIKey.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## RemoveMember + +> RemoveMember(ctx, id, userId).Execute() + +Remove a member (owner/admin) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + userId := "userId_example" // string | User ID (UUID) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + r, err := apiClient.OrgsAPI.RemoveMember(context.Background(), id, userId).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.RemoveMember``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | +**userId** | **string** | User ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiRemoveMemberRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + + +### Return type + + (empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## UpdateOrg + +> ModelsOrganization UpdateOrg(ctx, id).Body(body).Execute() + +Update organization (owner/admin) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Org ID (UUID) + body := *openapiclient.NewHandlersOrgUpdateReq() // HandlersOrgUpdateReq | Update payload + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.OrgsAPI.UpdateOrg(context.Background(), id).Body(body).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `OrgsAPI.UpdateOrg``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `UpdateOrg`: ModelsOrganization + fmt.Fprintf(os.Stdout, "Response from `OrgsAPI.UpdateOrg`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Org ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiUpdateOrgRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **body** | [**HandlersOrgUpdateReq**](HandlersOrgUpdateReq.md) | Update payload | + +### Return type + +[**ModelsOrganization**](ModelsOrganization.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/sdk/go/docs/ServersAPI.md b/sdk/go/docs/ServersAPI.md new file mode 100644 index 0000000..2613151 --- /dev/null +++ b/sdk/go/docs/ServersAPI.md @@ -0,0 +1,369 @@ +# \ServersAPI + +All URIs are relative to *http://localhost:8080/api/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateServer**](ServersAPI.md#CreateServer) | **Post** /servers | Create server (org scoped) +[**DeleteServer**](ServersAPI.md#DeleteServer) | **Delete** /servers/{id} | Delete server (org scoped) +[**GetServer**](ServersAPI.md#GetServer) | **Get** /servers/{id} | Get server by ID (org scoped) +[**ListServers**](ServersAPI.md#ListServers) | **Get** /servers | List servers (org scoped) +[**UpdateServer**](ServersAPI.md#UpdateServer) | **Patch** /servers/{id} | Update server (org scoped) + + + +## CreateServer + +> DtoServerResponse CreateServer(ctx).Body(body).XOrgID(xOrgID).Execute() + +Create server (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + body := *openapiclient.NewDtoCreateServerRequest() // DtoCreateServerRequest | Server payload + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ServersAPI.CreateServer(context.Background()).Body(body).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ServersAPI.CreateServer``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `CreateServer`: DtoServerResponse + fmt.Fprintf(os.Stdout, "Response from `ServersAPI.CreateServer`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiCreateServerRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**DtoCreateServerRequest**](DtoCreateServerRequest.md) | Server payload | + **xOrgID** | **string** | Organization UUID | + +### Return type + +[**DtoServerResponse**](DtoServerResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## DeleteServer + +> string DeleteServer(ctx, id).XOrgID(xOrgID).Execute() + +Delete server (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Server ID (UUID) + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ServersAPI.DeleteServer(context.Background(), id).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ServersAPI.DeleteServer``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `DeleteServer`: string + fmt.Fprintf(os.Stdout, "Response from `ServersAPI.DeleteServer`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Server ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiDeleteServerRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **xOrgID** | **string** | Organization UUID | + +### Return type + +**string** + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## GetServer + +> DtoServerResponse GetServer(ctx, id).XOrgID(xOrgID).Execute() + +Get server by ID (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Server ID (UUID) + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ServersAPI.GetServer(context.Background(), id).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ServersAPI.GetServer``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetServer`: DtoServerResponse + fmt.Fprintf(os.Stdout, "Response from `ServersAPI.GetServer`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Server ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetServerRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **xOrgID** | **string** | Organization UUID | + +### Return type + +[**DtoServerResponse**](DtoServerResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## ListServers + +> []DtoServerResponse ListServers(ctx).XOrgID(xOrgID).Status(status).Role(role).Execute() + +List servers (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + status := "status_example" // string | Filter by status (pending|provisioning|ready|failed) (optional) + role := "role_example" // string | Filter by role (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ServersAPI.ListServers(context.Background()).XOrgID(xOrgID).Status(status).Role(role).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ServersAPI.ListServers``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `ListServers`: []DtoServerResponse + fmt.Fprintf(os.Stdout, "Response from `ServersAPI.ListServers`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiListServersRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **xOrgID** | **string** | Organization UUID | + **status** | **string** | Filter by status (pending|provisioning|ready|failed) | + **role** | **string** | Filter by role | + +### Return type + +[**[]DtoServerResponse**](DtoServerResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## UpdateServer + +> DtoServerResponse UpdateServer(ctx, id).Body(body).XOrgID(xOrgID).Execute() + +Update server (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Server ID (UUID) + body := *openapiclient.NewDtoUpdateServerRequest() // DtoUpdateServerRequest | Fields to update + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.ServersAPI.UpdateServer(context.Background(), id).Body(body).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `ServersAPI.UpdateServer``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `UpdateServer`: DtoServerResponse + fmt.Fprintf(os.Stdout, "Response from `ServersAPI.UpdateServer`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Server ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiUpdateServerRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **body** | [**DtoUpdateServerRequest**](DtoUpdateServerRequest.md) | Fields to update | + **xOrgID** | **string** | Organization UUID | + +### Return type + +[**DtoServerResponse**](DtoServerResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/sdk/go/docs/SshAPI.md b/sdk/go/docs/SshAPI.md new file mode 100644 index 0000000..0125ea0 --- /dev/null +++ b/sdk/go/docs/SshAPI.md @@ -0,0 +1,367 @@ +# \SshAPI + +All URIs are relative to *http://localhost:8080/api/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateSSHKey**](SshAPI.md#CreateSSHKey) | **Post** /ssh | Create ssh keypair (org scoped) +[**DeleteSSHKey**](SshAPI.md#DeleteSSHKey) | **Delete** /ssh/{id} | Delete ssh keypair (org scoped) +[**DownloadSSHKey**](SshAPI.md#DownloadSSHKey) | **Get** /ssh/{id}/download | Download ssh key files by ID (org scoped) +[**GetSSHKey**](SshAPI.md#GetSSHKey) | **Get** /ssh/{id} | Get ssh key by ID (org scoped) +[**ListPublicSshKeys**](SshAPI.md#ListPublicSshKeys) | **Get** /ssh | List ssh keys (org scoped) + + + +## CreateSSHKey + +> DtoSshResponse CreateSSHKey(ctx).Body(body).XOrgID(xOrgID).Execute() + +Create ssh keypair (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + body := *openapiclient.NewDtoCreateSSHRequest() // DtoCreateSSHRequest | Key generation options + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.SshAPI.CreateSSHKey(context.Background()).Body(body).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `SshAPI.CreateSSHKey``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `CreateSSHKey`: DtoSshResponse + fmt.Fprintf(os.Stdout, "Response from `SshAPI.CreateSSHKey`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiCreateSSHKeyRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**DtoCreateSSHRequest**](DtoCreateSSHRequest.md) | Key generation options | + **xOrgID** | **string** | Organization UUID | + +### Return type + +[**DtoSshResponse**](DtoSshResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## DeleteSSHKey + +> string DeleteSSHKey(ctx, id).XOrgID(xOrgID).Execute() + +Delete ssh keypair (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | SSH Key ID (UUID) + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.SshAPI.DeleteSSHKey(context.Background(), id).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `SshAPI.DeleteSSHKey``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `DeleteSSHKey`: string + fmt.Fprintf(os.Stdout, "Response from `SshAPI.DeleteSSHKey`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | SSH Key ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiDeleteSSHKeyRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **xOrgID** | **string** | Organization UUID | + +### Return type + +**string** + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## DownloadSSHKey + +> string DownloadSSHKey(ctx, id).XOrgID(xOrgID).Part(part).Execute() + +Download ssh key files by ID (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + xOrgID := "xOrgID_example" // string | Organization UUID + id := "id_example" // string | SSH Key ID (UUID) + part := "part_example" // string | Which part to download + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.SshAPI.DownloadSSHKey(context.Background(), id).XOrgID(xOrgID).Part(part).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `SshAPI.DownloadSSHKey``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `DownloadSSHKey`: string + fmt.Fprintf(os.Stdout, "Response from `SshAPI.DownloadSSHKey`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | SSH Key ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiDownloadSSHKeyRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **xOrgID** | **string** | Organization UUID | + + **part** | **string** | Which part to download | + +### Return type + +**string** + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## GetSSHKey + +> DtoSshRevealResponse GetSSHKey(ctx, id).XOrgID(xOrgID).Reveal(reveal).Execute() + +Get ssh key by ID (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | SSH Key ID (UUID) + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + reveal := true // bool | Reveal private key PEM (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.SshAPI.GetSSHKey(context.Background(), id).XOrgID(xOrgID).Reveal(reveal).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `SshAPI.GetSSHKey``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetSSHKey`: DtoSshRevealResponse + fmt.Fprintf(os.Stdout, "Response from `SshAPI.GetSSHKey`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | SSH Key ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetSSHKeyRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **xOrgID** | **string** | Organization UUID | + **reveal** | **bool** | Reveal private key PEM | + +### Return type + +[**DtoSshRevealResponse**](DtoSshRevealResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## ListPublicSshKeys + +> []DtoSshResponse ListPublicSshKeys(ctx).XOrgID(xOrgID).Execute() + +List ssh keys (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.SshAPI.ListPublicSshKeys(context.Background()).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `SshAPI.ListPublicSshKeys``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `ListPublicSshKeys`: []DtoSshResponse + fmt.Fprintf(os.Stdout, "Response from `SshAPI.ListPublicSshKeys`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiListPublicSshKeysRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **xOrgID** | **string** | Organization UUID | + +### Return type + +[**[]DtoSshResponse**](DtoSshResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/sdk/go/docs/TaintsAPI.md b/sdk/go/docs/TaintsAPI.md new file mode 100644 index 0000000..eecff51 --- /dev/null +++ b/sdk/go/docs/TaintsAPI.md @@ -0,0 +1,369 @@ +# \TaintsAPI + +All URIs are relative to *http://localhost:8080/api/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateTaint**](TaintsAPI.md#CreateTaint) | **Post** /taints | Create node taint (org scoped) +[**DeleteTaint**](TaintsAPI.md#DeleteTaint) | **Delete** /taints/{id} | Delete taint (org scoped) +[**GetTaint**](TaintsAPI.md#GetTaint) | **Get** /taints/{id} | Get node taint by ID (org scoped) +[**ListTaints**](TaintsAPI.md#ListTaints) | **Get** /taints | List node pool taints (org scoped) +[**UpdateTaint**](TaintsAPI.md#UpdateTaint) | **Patch** /taints/{id} | Update node taint (org scoped) + + + +## CreateTaint + +> DtoTaintResponse CreateTaint(ctx).Body(body).XOrgID(xOrgID).Execute() + +Create node taint (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + body := *openapiclient.NewDtoCreateTaintRequest() // DtoCreateTaintRequest | Taint payload + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.TaintsAPI.CreateTaint(context.Background()).Body(body).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `TaintsAPI.CreateTaint``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `CreateTaint`: DtoTaintResponse + fmt.Fprintf(os.Stdout, "Response from `TaintsAPI.CreateTaint`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiCreateTaintRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**DtoCreateTaintRequest**](DtoCreateTaintRequest.md) | Taint payload | + **xOrgID** | **string** | Organization UUID | + +### Return type + +[**DtoTaintResponse**](DtoTaintResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## DeleteTaint + +> string DeleteTaint(ctx, id).XOrgID(xOrgID).Execute() + +Delete taint (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Node Taint ID (UUID) + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.TaintsAPI.DeleteTaint(context.Background(), id).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `TaintsAPI.DeleteTaint``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `DeleteTaint`: string + fmt.Fprintf(os.Stdout, "Response from `TaintsAPI.DeleteTaint`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Node Taint ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiDeleteTaintRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **xOrgID** | **string** | Organization UUID | + +### Return type + +**string** + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## GetTaint + +> DtoTaintResponse GetTaint(ctx, id).XOrgID(xOrgID).Execute() + +Get node taint by ID (org scoped) + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Node Taint ID (UUID) + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.TaintsAPI.GetTaint(context.Background(), id).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `TaintsAPI.GetTaint``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `GetTaint`: DtoTaintResponse + fmt.Fprintf(os.Stdout, "Response from `TaintsAPI.GetTaint`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Node Taint ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiGetTaintRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **xOrgID** | **string** | Organization UUID | + +### Return type + +[**DtoTaintResponse**](DtoTaintResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## ListTaints + +> []DtoTaintResponse ListTaints(ctx).XOrgID(xOrgID).Key(key).Value(value).Q(q).Execute() + +List node pool taints (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + key := "key_example" // string | Exact key (optional) + value := "value_example" // string | Exact value (optional) + q := "q_example" // string | key contains (case-insensitive) (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.TaintsAPI.ListTaints(context.Background()).XOrgID(xOrgID).Key(key).Value(value).Q(q).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `TaintsAPI.ListTaints``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `ListTaints`: []DtoTaintResponse + fmt.Fprintf(os.Stdout, "Response from `TaintsAPI.ListTaints`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiListTaintsRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **xOrgID** | **string** | Organization UUID | + **key** | **string** | Exact key | + **value** | **string** | Exact value | + **q** | **string** | key contains (case-insensitive) | + +### Return type + +[**[]DtoTaintResponse**](DtoTaintResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## UpdateTaint + +> DtoTaintResponse UpdateTaint(ctx, id).Body(body).XOrgID(xOrgID).Execute() + +Update node taint (org scoped) + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "github.com/glueops/autoglue-sdk" +) + +func main() { + id := "id_example" // string | Node Taint ID (UUID) + body := *openapiclient.NewDtoUpdateTaintRequest() // DtoUpdateTaintRequest | Fields to update + xOrgID := "xOrgID_example" // string | Organization UUID (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.TaintsAPI.UpdateTaint(context.Background(), id).Body(body).XOrgID(xOrgID).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `TaintsAPI.UpdateTaint``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `UpdateTaint`: DtoTaintResponse + fmt.Fprintf(os.Stdout, "Response from `TaintsAPI.UpdateTaint`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**id** | **string** | Node Taint ID (UUID) | + +### Other Parameters + +Other parameters are passed through a pointer to a apiUpdateTaintRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **body** | [**DtoUpdateTaintRequest**](DtoUpdateTaintRequest.md) | Fields to update | + **xOrgID** | **string** | Organization UUID | + +### Return type + +[**DtoTaintResponse**](DtoTaintResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/sdk/go/docs/UtilsErrorResponse.md b/sdk/go/docs/UtilsErrorResponse.md new file mode 100644 index 0000000..c639ea8 --- /dev/null +++ b/sdk/go/docs/UtilsErrorResponse.md @@ -0,0 +1,82 @@ +# UtilsErrorResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | Pointer to **string** | A machine-readable error code, e.g. \"validation_error\" example: validation_error | [optional] +**Message** | Pointer to **string** | Human-readable message example: slug is required | [optional] + +## Methods + +### NewUtilsErrorResponse + +`func NewUtilsErrorResponse() *UtilsErrorResponse` + +NewUtilsErrorResponse instantiates a new UtilsErrorResponse object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewUtilsErrorResponseWithDefaults + +`func NewUtilsErrorResponseWithDefaults() *UtilsErrorResponse` + +NewUtilsErrorResponseWithDefaults instantiates a new UtilsErrorResponse object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCode + +`func (o *UtilsErrorResponse) GetCode() string` + +GetCode returns the Code field if non-nil, zero value otherwise. + +### GetCodeOk + +`func (o *UtilsErrorResponse) GetCodeOk() (*string, bool)` + +GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCode + +`func (o *UtilsErrorResponse) SetCode(v string)` + +SetCode sets Code field to given value. + +### HasCode + +`func (o *UtilsErrorResponse) HasCode() bool` + +HasCode returns a boolean if a field has been set. + +### GetMessage + +`func (o *UtilsErrorResponse) GetMessage() string` + +GetMessage returns the Message field if non-nil, zero value otherwise. + +### GetMessageOk + +`func (o *UtilsErrorResponse) GetMessageOk() (*string, bool)` + +GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMessage + +`func (o *UtilsErrorResponse) SetMessage(v string)` + +SetMessage sets Message field to given value. + +### HasMessage + +`func (o *UtilsErrorResponse) HasMessage() bool` + +HasMessage returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdk/go/git_push.sh b/sdk/go/git_push.sh new file mode 100644 index 0000000..b032ce7 --- /dev/null +++ b/sdk/go/git_push.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="glueops" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="autoglue-sdk" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=$(git remote) +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' diff --git a/sdk/go/go.mod b/sdk/go/go.mod new file mode 100644 index 0000000..4b4bcc5 --- /dev/null +++ b/sdk/go/go.mod @@ -0,0 +1,6 @@ +module github.com/glueops/autoglue-sdk + +go 1.23 + +require ( +) diff --git a/sdk/go/go.sum b/sdk/go/go.sum new file mode 100644 index 0000000..c966c8d --- /dev/null +++ b/sdk/go/go.sum @@ -0,0 +1,11 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/sdk/go/model_dto_auth_start_response.go b/sdk/go/model_dto_auth_start_response.go new file mode 100644 index 0000000..4e99012 --- /dev/null +++ b/sdk/go/model_dto_auth_start_response.go @@ -0,0 +1,124 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoAuthStartResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoAuthStartResponse{} + +// DtoAuthStartResponse struct for DtoAuthStartResponse +type DtoAuthStartResponse struct { + AuthUrl *string `json:"auth_url,omitempty"` +} + +// NewDtoAuthStartResponse instantiates a new DtoAuthStartResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoAuthStartResponse() *DtoAuthStartResponse { + this := DtoAuthStartResponse{} + return &this +} + +// NewDtoAuthStartResponseWithDefaults instantiates a new DtoAuthStartResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoAuthStartResponseWithDefaults() *DtoAuthStartResponse { + this := DtoAuthStartResponse{} + return &this +} + +// GetAuthUrl returns the AuthUrl field value if set, zero value otherwise. +func (o *DtoAuthStartResponse) GetAuthUrl() string { + if o == nil || IsNil(o.AuthUrl) { + var ret string + return ret + } + return *o.AuthUrl +} + +// GetAuthUrlOk returns a tuple with the AuthUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoAuthStartResponse) GetAuthUrlOk() (*string, bool) { + if o == nil || IsNil(o.AuthUrl) { + return nil, false + } + return o.AuthUrl, true +} + +// HasAuthUrl returns a boolean if a field has been set. +func (o *DtoAuthStartResponse) HasAuthUrl() bool { + if o != nil && !IsNil(o.AuthUrl) { + return true + } + + return false +} + +// SetAuthUrl gets a reference to the given string and assigns it to the AuthUrl field. +func (o *DtoAuthStartResponse) SetAuthUrl(v string) { + o.AuthUrl = &v +} + +func (o DtoAuthStartResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoAuthStartResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.AuthUrl) { + toSerialize["auth_url"] = o.AuthUrl + } + return toSerialize, nil +} + +type NullableDtoAuthStartResponse struct { + value *DtoAuthStartResponse + isSet bool +} + +func (v NullableDtoAuthStartResponse) Get() *DtoAuthStartResponse { + return v.value +} + +func (v *NullableDtoAuthStartResponse) Set(val *DtoAuthStartResponse) { + v.value = val + v.isSet = true +} + +func (v NullableDtoAuthStartResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoAuthStartResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoAuthStartResponse(val *DtoAuthStartResponse) *NullableDtoAuthStartResponse { + return &NullableDtoAuthStartResponse{value: val, isSet: true} +} + +func (v NullableDtoAuthStartResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoAuthStartResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_create_server_request.go b/sdk/go/model_dto_create_server_request.go new file mode 100644 index 0000000..68d5836 --- /dev/null +++ b/sdk/go/model_dto_create_server_request.go @@ -0,0 +1,340 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoCreateServerRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoCreateServerRequest{} + +// DtoCreateServerRequest struct for DtoCreateServerRequest +type DtoCreateServerRequest struct { + Hostname *string `json:"hostname,omitempty"` + PrivateIpAddress *string `json:"private_ip_address,omitempty"` + PublicIpAddress *string `json:"public_ip_address,omitempty"` + Role *string `json:"role,omitempty"` + SshKeyId *string `json:"ssh_key_id,omitempty"` + SshUser *string `json:"ssh_user,omitempty"` + Status *string `json:"status,omitempty"` +} + +// NewDtoCreateServerRequest instantiates a new DtoCreateServerRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoCreateServerRequest() *DtoCreateServerRequest { + this := DtoCreateServerRequest{} + return &this +} + +// NewDtoCreateServerRequestWithDefaults instantiates a new DtoCreateServerRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoCreateServerRequestWithDefaults() *DtoCreateServerRequest { + this := DtoCreateServerRequest{} + return &this +} + +// GetHostname returns the Hostname field value if set, zero value otherwise. +func (o *DtoCreateServerRequest) GetHostname() string { + if o == nil || IsNil(o.Hostname) { + var ret string + return ret + } + return *o.Hostname +} + +// GetHostnameOk returns a tuple with the Hostname field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateServerRequest) GetHostnameOk() (*string, bool) { + if o == nil || IsNil(o.Hostname) { + return nil, false + } + return o.Hostname, true +} + +// HasHostname returns a boolean if a field has been set. +func (o *DtoCreateServerRequest) HasHostname() bool { + if o != nil && !IsNil(o.Hostname) { + return true + } + + return false +} + +// SetHostname gets a reference to the given string and assigns it to the Hostname field. +func (o *DtoCreateServerRequest) SetHostname(v string) { + o.Hostname = &v +} + +// GetPrivateIpAddress returns the PrivateIpAddress field value if set, zero value otherwise. +func (o *DtoCreateServerRequest) GetPrivateIpAddress() string { + if o == nil || IsNil(o.PrivateIpAddress) { + var ret string + return ret + } + return *o.PrivateIpAddress +} + +// GetPrivateIpAddressOk returns a tuple with the PrivateIpAddress field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateServerRequest) GetPrivateIpAddressOk() (*string, bool) { + if o == nil || IsNil(o.PrivateIpAddress) { + return nil, false + } + return o.PrivateIpAddress, true +} + +// HasPrivateIpAddress returns a boolean if a field has been set. +func (o *DtoCreateServerRequest) HasPrivateIpAddress() bool { + if o != nil && !IsNil(o.PrivateIpAddress) { + return true + } + + return false +} + +// SetPrivateIpAddress gets a reference to the given string and assigns it to the PrivateIpAddress field. +func (o *DtoCreateServerRequest) SetPrivateIpAddress(v string) { + o.PrivateIpAddress = &v +} + +// GetPublicIpAddress returns the PublicIpAddress field value if set, zero value otherwise. +func (o *DtoCreateServerRequest) GetPublicIpAddress() string { + if o == nil || IsNil(o.PublicIpAddress) { + var ret string + return ret + } + return *o.PublicIpAddress +} + +// GetPublicIpAddressOk returns a tuple with the PublicIpAddress field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateServerRequest) GetPublicIpAddressOk() (*string, bool) { + if o == nil || IsNil(o.PublicIpAddress) { + return nil, false + } + return o.PublicIpAddress, true +} + +// HasPublicIpAddress returns a boolean if a field has been set. +func (o *DtoCreateServerRequest) HasPublicIpAddress() bool { + if o != nil && !IsNil(o.PublicIpAddress) { + return true + } + + return false +} + +// SetPublicIpAddress gets a reference to the given string and assigns it to the PublicIpAddress field. +func (o *DtoCreateServerRequest) SetPublicIpAddress(v string) { + o.PublicIpAddress = &v +} + +// GetRole returns the Role field value if set, zero value otherwise. +func (o *DtoCreateServerRequest) GetRole() string { + if o == nil || IsNil(o.Role) { + var ret string + return ret + } + return *o.Role +} + +// GetRoleOk returns a tuple with the Role field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateServerRequest) GetRoleOk() (*string, bool) { + if o == nil || IsNil(o.Role) { + return nil, false + } + return o.Role, true +} + +// HasRole returns a boolean if a field has been set. +func (o *DtoCreateServerRequest) HasRole() bool { + if o != nil && !IsNil(o.Role) { + return true + } + + return false +} + +// SetRole gets a reference to the given string and assigns it to the Role field. +func (o *DtoCreateServerRequest) SetRole(v string) { + o.Role = &v +} + +// GetSshKeyId returns the SshKeyId field value if set, zero value otherwise. +func (o *DtoCreateServerRequest) GetSshKeyId() string { + if o == nil || IsNil(o.SshKeyId) { + var ret string + return ret + } + return *o.SshKeyId +} + +// GetSshKeyIdOk returns a tuple with the SshKeyId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateServerRequest) GetSshKeyIdOk() (*string, bool) { + if o == nil || IsNil(o.SshKeyId) { + return nil, false + } + return o.SshKeyId, true +} + +// HasSshKeyId returns a boolean if a field has been set. +func (o *DtoCreateServerRequest) HasSshKeyId() bool { + if o != nil && !IsNil(o.SshKeyId) { + return true + } + + return false +} + +// SetSshKeyId gets a reference to the given string and assigns it to the SshKeyId field. +func (o *DtoCreateServerRequest) SetSshKeyId(v string) { + o.SshKeyId = &v +} + +// GetSshUser returns the SshUser field value if set, zero value otherwise. +func (o *DtoCreateServerRequest) GetSshUser() string { + if o == nil || IsNil(o.SshUser) { + var ret string + return ret + } + return *o.SshUser +} + +// GetSshUserOk returns a tuple with the SshUser field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateServerRequest) GetSshUserOk() (*string, bool) { + if o == nil || IsNil(o.SshUser) { + return nil, false + } + return o.SshUser, true +} + +// HasSshUser returns a boolean if a field has been set. +func (o *DtoCreateServerRequest) HasSshUser() bool { + if o != nil && !IsNil(o.SshUser) { + return true + } + + return false +} + +// SetSshUser gets a reference to the given string and assigns it to the SshUser field. +func (o *DtoCreateServerRequest) SetSshUser(v string) { + o.SshUser = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *DtoCreateServerRequest) GetStatus() string { + if o == nil || IsNil(o.Status) { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateServerRequest) GetStatusOk() (*string, bool) { + if o == nil || IsNil(o.Status) { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *DtoCreateServerRequest) HasStatus() bool { + if o != nil && !IsNil(o.Status) { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *DtoCreateServerRequest) SetStatus(v string) { + o.Status = &v +} + +func (o DtoCreateServerRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoCreateServerRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Hostname) { + toSerialize["hostname"] = o.Hostname + } + if !IsNil(o.PrivateIpAddress) { + toSerialize["private_ip_address"] = o.PrivateIpAddress + } + if !IsNil(o.PublicIpAddress) { + toSerialize["public_ip_address"] = o.PublicIpAddress + } + if !IsNil(o.Role) { + toSerialize["role"] = o.Role + } + if !IsNil(o.SshKeyId) { + toSerialize["ssh_key_id"] = o.SshKeyId + } + if !IsNil(o.SshUser) { + toSerialize["ssh_user"] = o.SshUser + } + if !IsNil(o.Status) { + toSerialize["status"] = o.Status + } + return toSerialize, nil +} + +type NullableDtoCreateServerRequest struct { + value *DtoCreateServerRequest + isSet bool +} + +func (v NullableDtoCreateServerRequest) Get() *DtoCreateServerRequest { + return v.value +} + +func (v *NullableDtoCreateServerRequest) Set(val *DtoCreateServerRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDtoCreateServerRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoCreateServerRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoCreateServerRequest(val *DtoCreateServerRequest) *NullableDtoCreateServerRequest { + return &NullableDtoCreateServerRequest{value: val, isSet: true} +} + +func (v NullableDtoCreateServerRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoCreateServerRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_create_ssh_request.go b/sdk/go/model_dto_create_ssh_request.go new file mode 100644 index 0000000..7ec89ed --- /dev/null +++ b/sdk/go/model_dto_create_ssh_request.go @@ -0,0 +1,234 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoCreateSSHRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoCreateSSHRequest{} + +// DtoCreateSSHRequest struct for DtoCreateSSHRequest +type DtoCreateSSHRequest struct { + // Only for RSA + Bits *int32 `json:"bits,omitempty"` + Comment *string `json:"comment,omitempty"` + Name *string `json:"name,omitempty"` + // \"rsa\" (default) or \"ed25519\" + Type *string `json:"type,omitempty"` +} + +// NewDtoCreateSSHRequest instantiates a new DtoCreateSSHRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoCreateSSHRequest() *DtoCreateSSHRequest { + this := DtoCreateSSHRequest{} + return &this +} + +// NewDtoCreateSSHRequestWithDefaults instantiates a new DtoCreateSSHRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoCreateSSHRequestWithDefaults() *DtoCreateSSHRequest { + this := DtoCreateSSHRequest{} + return &this +} + +// GetBits returns the Bits field value if set, zero value otherwise. +func (o *DtoCreateSSHRequest) GetBits() int32 { + if o == nil || IsNil(o.Bits) { + var ret int32 + return ret + } + return *o.Bits +} + +// GetBitsOk returns a tuple with the Bits field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateSSHRequest) GetBitsOk() (*int32, bool) { + if o == nil || IsNil(o.Bits) { + return nil, false + } + return o.Bits, true +} + +// HasBits returns a boolean if a field has been set. +func (o *DtoCreateSSHRequest) HasBits() bool { + if o != nil && !IsNil(o.Bits) { + return true + } + + return false +} + +// SetBits gets a reference to the given int32 and assigns it to the Bits field. +func (o *DtoCreateSSHRequest) SetBits(v int32) { + o.Bits = &v +} + +// GetComment returns the Comment field value if set, zero value otherwise. +func (o *DtoCreateSSHRequest) GetComment() string { + if o == nil || IsNil(o.Comment) { + var ret string + return ret + } + return *o.Comment +} + +// GetCommentOk returns a tuple with the Comment field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateSSHRequest) GetCommentOk() (*string, bool) { + if o == nil || IsNil(o.Comment) { + return nil, false + } + return o.Comment, true +} + +// HasComment returns a boolean if a field has been set. +func (o *DtoCreateSSHRequest) HasComment() bool { + if o != nil && !IsNil(o.Comment) { + return true + } + + return false +} + +// SetComment gets a reference to the given string and assigns it to the Comment field. +func (o *DtoCreateSSHRequest) SetComment(v string) { + o.Comment = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *DtoCreateSSHRequest) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateSSHRequest) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *DtoCreateSSHRequest) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *DtoCreateSSHRequest) SetName(v string) { + o.Name = &v +} + +// GetType returns the Type field value if set, zero value otherwise. +func (o *DtoCreateSSHRequest) GetType() string { + if o == nil || IsNil(o.Type) { + var ret string + return ret + } + return *o.Type +} + +// GetTypeOk returns a tuple with the Type field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateSSHRequest) GetTypeOk() (*string, bool) { + if o == nil || IsNil(o.Type) { + return nil, false + } + return o.Type, true +} + +// HasType returns a boolean if a field has been set. +func (o *DtoCreateSSHRequest) HasType() bool { + if o != nil && !IsNil(o.Type) { + return true + } + + return false +} + +// SetType gets a reference to the given string and assigns it to the Type field. +func (o *DtoCreateSSHRequest) SetType(v string) { + o.Type = &v +} + +func (o DtoCreateSSHRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoCreateSSHRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Bits) { + toSerialize["bits"] = o.Bits + } + if !IsNil(o.Comment) { + toSerialize["comment"] = o.Comment + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + if !IsNil(o.Type) { + toSerialize["type"] = o.Type + } + return toSerialize, nil +} + +type NullableDtoCreateSSHRequest struct { + value *DtoCreateSSHRequest + isSet bool +} + +func (v NullableDtoCreateSSHRequest) Get() *DtoCreateSSHRequest { + return v.value +} + +func (v *NullableDtoCreateSSHRequest) Set(val *DtoCreateSSHRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDtoCreateSSHRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoCreateSSHRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoCreateSSHRequest(val *DtoCreateSSHRequest) *NullableDtoCreateSSHRequest { + return &NullableDtoCreateSSHRequest{value: val, isSet: true} +} + +func (v NullableDtoCreateSSHRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoCreateSSHRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_create_taint_request.go b/sdk/go/model_dto_create_taint_request.go new file mode 100644 index 0000000..3293a00 --- /dev/null +++ b/sdk/go/model_dto_create_taint_request.go @@ -0,0 +1,196 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoCreateTaintRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoCreateTaintRequest{} + +// DtoCreateTaintRequest struct for DtoCreateTaintRequest +type DtoCreateTaintRequest struct { + Effect *string `json:"effect,omitempty"` + Key *string `json:"key,omitempty"` + Value *string `json:"value,omitempty"` +} + +// NewDtoCreateTaintRequest instantiates a new DtoCreateTaintRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoCreateTaintRequest() *DtoCreateTaintRequest { + this := DtoCreateTaintRequest{} + return &this +} + +// NewDtoCreateTaintRequestWithDefaults instantiates a new DtoCreateTaintRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoCreateTaintRequestWithDefaults() *DtoCreateTaintRequest { + this := DtoCreateTaintRequest{} + return &this +} + +// GetEffect returns the Effect field value if set, zero value otherwise. +func (o *DtoCreateTaintRequest) GetEffect() string { + if o == nil || IsNil(o.Effect) { + var ret string + return ret + } + return *o.Effect +} + +// GetEffectOk returns a tuple with the Effect field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateTaintRequest) GetEffectOk() (*string, bool) { + if o == nil || IsNil(o.Effect) { + return nil, false + } + return o.Effect, true +} + +// HasEffect returns a boolean if a field has been set. +func (o *DtoCreateTaintRequest) HasEffect() bool { + if o != nil && !IsNil(o.Effect) { + return true + } + + return false +} + +// SetEffect gets a reference to the given string and assigns it to the Effect field. +func (o *DtoCreateTaintRequest) SetEffect(v string) { + o.Effect = &v +} + +// GetKey returns the Key field value if set, zero value otherwise. +func (o *DtoCreateTaintRequest) GetKey() string { + if o == nil || IsNil(o.Key) { + var ret string + return ret + } + return *o.Key +} + +// GetKeyOk returns a tuple with the Key field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateTaintRequest) GetKeyOk() (*string, bool) { + if o == nil || IsNil(o.Key) { + return nil, false + } + return o.Key, true +} + +// HasKey returns a boolean if a field has been set. +func (o *DtoCreateTaintRequest) HasKey() bool { + if o != nil && !IsNil(o.Key) { + return true + } + + return false +} + +// SetKey gets a reference to the given string and assigns it to the Key field. +func (o *DtoCreateTaintRequest) SetKey(v string) { + o.Key = &v +} + +// GetValue returns the Value field value if set, zero value otherwise. +func (o *DtoCreateTaintRequest) GetValue() string { + if o == nil || IsNil(o.Value) { + var ret string + return ret + } + return *o.Value +} + +// GetValueOk returns a tuple with the Value field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoCreateTaintRequest) GetValueOk() (*string, bool) { + if o == nil || IsNil(o.Value) { + return nil, false + } + return o.Value, true +} + +// HasValue returns a boolean if a field has been set. +func (o *DtoCreateTaintRequest) HasValue() bool { + if o != nil && !IsNil(o.Value) { + return true + } + + return false +} + +// SetValue gets a reference to the given string and assigns it to the Value field. +func (o *DtoCreateTaintRequest) SetValue(v string) { + o.Value = &v +} + +func (o DtoCreateTaintRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoCreateTaintRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Effect) { + toSerialize["effect"] = o.Effect + } + if !IsNil(o.Key) { + toSerialize["key"] = o.Key + } + if !IsNil(o.Value) { + toSerialize["value"] = o.Value + } + return toSerialize, nil +} + +type NullableDtoCreateTaintRequest struct { + value *DtoCreateTaintRequest + isSet bool +} + +func (v NullableDtoCreateTaintRequest) Get() *DtoCreateTaintRequest { + return v.value +} + +func (v *NullableDtoCreateTaintRequest) Set(val *DtoCreateTaintRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDtoCreateTaintRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoCreateTaintRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoCreateTaintRequest(val *DtoCreateTaintRequest) *NullableDtoCreateTaintRequest { + return &NullableDtoCreateTaintRequest{value: val, isSet: true} +} + +func (v NullableDtoCreateTaintRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoCreateTaintRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_jwk.go b/sdk/go/model_dto_jwk.go new file mode 100644 index 0000000..f04bdc6 --- /dev/null +++ b/sdk/go/model_dto_jwk.go @@ -0,0 +1,340 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoJWK type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoJWK{} + +// DtoJWK struct for DtoJWK +type DtoJWK struct { + Alg *string `json:"alg,omitempty"` + E *string `json:"e,omitempty"` + Kid *string `json:"kid,omitempty"` + Kty *string `json:"kty,omitempty"` + N *string `json:"n,omitempty"` + Use *string `json:"use,omitempty"` + X *string `json:"x,omitempty"` +} + +// NewDtoJWK instantiates a new DtoJWK object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoJWK() *DtoJWK { + this := DtoJWK{} + return &this +} + +// NewDtoJWKWithDefaults instantiates a new DtoJWK object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoJWKWithDefaults() *DtoJWK { + this := DtoJWK{} + return &this +} + +// GetAlg returns the Alg field value if set, zero value otherwise. +func (o *DtoJWK) GetAlg() string { + if o == nil || IsNil(o.Alg) { + var ret string + return ret + } + return *o.Alg +} + +// GetAlgOk returns a tuple with the Alg field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoJWK) GetAlgOk() (*string, bool) { + if o == nil || IsNil(o.Alg) { + return nil, false + } + return o.Alg, true +} + +// HasAlg returns a boolean if a field has been set. +func (o *DtoJWK) HasAlg() bool { + if o != nil && !IsNil(o.Alg) { + return true + } + + return false +} + +// SetAlg gets a reference to the given string and assigns it to the Alg field. +func (o *DtoJWK) SetAlg(v string) { + o.Alg = &v +} + +// GetE returns the E field value if set, zero value otherwise. +func (o *DtoJWK) GetE() string { + if o == nil || IsNil(o.E) { + var ret string + return ret + } + return *o.E +} + +// GetEOk returns a tuple with the E field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoJWK) GetEOk() (*string, bool) { + if o == nil || IsNil(o.E) { + return nil, false + } + return o.E, true +} + +// HasE returns a boolean if a field has been set. +func (o *DtoJWK) HasE() bool { + if o != nil && !IsNil(o.E) { + return true + } + + return false +} + +// SetE gets a reference to the given string and assigns it to the E field. +func (o *DtoJWK) SetE(v string) { + o.E = &v +} + +// GetKid returns the Kid field value if set, zero value otherwise. +func (o *DtoJWK) GetKid() string { + if o == nil || IsNil(o.Kid) { + var ret string + return ret + } + return *o.Kid +} + +// GetKidOk returns a tuple with the Kid field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoJWK) GetKidOk() (*string, bool) { + if o == nil || IsNil(o.Kid) { + return nil, false + } + return o.Kid, true +} + +// HasKid returns a boolean if a field has been set. +func (o *DtoJWK) HasKid() bool { + if o != nil && !IsNil(o.Kid) { + return true + } + + return false +} + +// SetKid gets a reference to the given string and assigns it to the Kid field. +func (o *DtoJWK) SetKid(v string) { + o.Kid = &v +} + +// GetKty returns the Kty field value if set, zero value otherwise. +func (o *DtoJWK) GetKty() string { + if o == nil || IsNil(o.Kty) { + var ret string + return ret + } + return *o.Kty +} + +// GetKtyOk returns a tuple with the Kty field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoJWK) GetKtyOk() (*string, bool) { + if o == nil || IsNil(o.Kty) { + return nil, false + } + return o.Kty, true +} + +// HasKty returns a boolean if a field has been set. +func (o *DtoJWK) HasKty() bool { + if o != nil && !IsNil(o.Kty) { + return true + } + + return false +} + +// SetKty gets a reference to the given string and assigns it to the Kty field. +func (o *DtoJWK) SetKty(v string) { + o.Kty = &v +} + +// GetN returns the N field value if set, zero value otherwise. +func (o *DtoJWK) GetN() string { + if o == nil || IsNil(o.N) { + var ret string + return ret + } + return *o.N +} + +// GetNOk returns a tuple with the N field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoJWK) GetNOk() (*string, bool) { + if o == nil || IsNil(o.N) { + return nil, false + } + return o.N, true +} + +// HasN returns a boolean if a field has been set. +func (o *DtoJWK) HasN() bool { + if o != nil && !IsNil(o.N) { + return true + } + + return false +} + +// SetN gets a reference to the given string and assigns it to the N field. +func (o *DtoJWK) SetN(v string) { + o.N = &v +} + +// GetUse returns the Use field value if set, zero value otherwise. +func (o *DtoJWK) GetUse() string { + if o == nil || IsNil(o.Use) { + var ret string + return ret + } + return *o.Use +} + +// GetUseOk returns a tuple with the Use field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoJWK) GetUseOk() (*string, bool) { + if o == nil || IsNil(o.Use) { + return nil, false + } + return o.Use, true +} + +// HasUse returns a boolean if a field has been set. +func (o *DtoJWK) HasUse() bool { + if o != nil && !IsNil(o.Use) { + return true + } + + return false +} + +// SetUse gets a reference to the given string and assigns it to the Use field. +func (o *DtoJWK) SetUse(v string) { + o.Use = &v +} + +// GetX returns the X field value if set, zero value otherwise. +func (o *DtoJWK) GetX() string { + if o == nil || IsNil(o.X) { + var ret string + return ret + } + return *o.X +} + +// GetXOk returns a tuple with the X field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoJWK) GetXOk() (*string, bool) { + if o == nil || IsNil(o.X) { + return nil, false + } + return o.X, true +} + +// HasX returns a boolean if a field has been set. +func (o *DtoJWK) HasX() bool { + if o != nil && !IsNil(o.X) { + return true + } + + return false +} + +// SetX gets a reference to the given string and assigns it to the X field. +func (o *DtoJWK) SetX(v string) { + o.X = &v +} + +func (o DtoJWK) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoJWK) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Alg) { + toSerialize["alg"] = o.Alg + } + if !IsNil(o.E) { + toSerialize["e"] = o.E + } + if !IsNil(o.Kid) { + toSerialize["kid"] = o.Kid + } + if !IsNil(o.Kty) { + toSerialize["kty"] = o.Kty + } + if !IsNil(o.N) { + toSerialize["n"] = o.N + } + if !IsNil(o.Use) { + toSerialize["use"] = o.Use + } + if !IsNil(o.X) { + toSerialize["x"] = o.X + } + return toSerialize, nil +} + +type NullableDtoJWK struct { + value *DtoJWK + isSet bool +} + +func (v NullableDtoJWK) Get() *DtoJWK { + return v.value +} + +func (v *NullableDtoJWK) Set(val *DtoJWK) { + v.value = val + v.isSet = true +} + +func (v NullableDtoJWK) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoJWK) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoJWK(val *DtoJWK) *NullableDtoJWK { + return &NullableDtoJWK{value: val, isSet: true} +} + +func (v NullableDtoJWK) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoJWK) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_jwks.go b/sdk/go/model_dto_jwks.go new file mode 100644 index 0000000..a66ecf1 --- /dev/null +++ b/sdk/go/model_dto_jwks.go @@ -0,0 +1,124 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoJWKS type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoJWKS{} + +// DtoJWKS struct for DtoJWKS +type DtoJWKS struct { + Keys []DtoJWK `json:"keys,omitempty"` +} + +// NewDtoJWKS instantiates a new DtoJWKS object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoJWKS() *DtoJWKS { + this := DtoJWKS{} + return &this +} + +// NewDtoJWKSWithDefaults instantiates a new DtoJWKS object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoJWKSWithDefaults() *DtoJWKS { + this := DtoJWKS{} + return &this +} + +// GetKeys returns the Keys field value if set, zero value otherwise. +func (o *DtoJWKS) GetKeys() []DtoJWK { + if o == nil || IsNil(o.Keys) { + var ret []DtoJWK + return ret + } + return o.Keys +} + +// GetKeysOk returns a tuple with the Keys field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoJWKS) GetKeysOk() ([]DtoJWK, bool) { + if o == nil || IsNil(o.Keys) { + return nil, false + } + return o.Keys, true +} + +// HasKeys returns a boolean if a field has been set. +func (o *DtoJWKS) HasKeys() bool { + if o != nil && !IsNil(o.Keys) { + return true + } + + return false +} + +// SetKeys gets a reference to the given []DtoJWK and assigns it to the Keys field. +func (o *DtoJWKS) SetKeys(v []DtoJWK) { + o.Keys = v +} + +func (o DtoJWKS) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoJWKS) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Keys) { + toSerialize["keys"] = o.Keys + } + return toSerialize, nil +} + +type NullableDtoJWKS struct { + value *DtoJWKS + isSet bool +} + +func (v NullableDtoJWKS) Get() *DtoJWKS { + return v.value +} + +func (v *NullableDtoJWKS) Set(val *DtoJWKS) { + v.value = val + v.isSet = true +} + +func (v NullableDtoJWKS) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoJWKS) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoJWKS(val *DtoJWKS) *NullableDtoJWKS { + return &NullableDtoJWKS{value: val, isSet: true} +} + +func (v NullableDtoJWKS) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoJWKS) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_logout_request.go b/sdk/go/model_dto_logout_request.go new file mode 100644 index 0000000..a874279 --- /dev/null +++ b/sdk/go/model_dto_logout_request.go @@ -0,0 +1,124 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoLogoutRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoLogoutRequest{} + +// DtoLogoutRequest struct for DtoLogoutRequest +type DtoLogoutRequest struct { + RefreshToken *string `json:"refresh_token,omitempty"` +} + +// NewDtoLogoutRequest instantiates a new DtoLogoutRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoLogoutRequest() *DtoLogoutRequest { + this := DtoLogoutRequest{} + return &this +} + +// NewDtoLogoutRequestWithDefaults instantiates a new DtoLogoutRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoLogoutRequestWithDefaults() *DtoLogoutRequest { + this := DtoLogoutRequest{} + return &this +} + +// GetRefreshToken returns the RefreshToken field value if set, zero value otherwise. +func (o *DtoLogoutRequest) GetRefreshToken() string { + if o == nil || IsNil(o.RefreshToken) { + var ret string + return ret + } + return *o.RefreshToken +} + +// GetRefreshTokenOk returns a tuple with the RefreshToken field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoLogoutRequest) GetRefreshTokenOk() (*string, bool) { + if o == nil || IsNil(o.RefreshToken) { + return nil, false + } + return o.RefreshToken, true +} + +// HasRefreshToken returns a boolean if a field has been set. +func (o *DtoLogoutRequest) HasRefreshToken() bool { + if o != nil && !IsNil(o.RefreshToken) { + return true + } + + return false +} + +// SetRefreshToken gets a reference to the given string and assigns it to the RefreshToken field. +func (o *DtoLogoutRequest) SetRefreshToken(v string) { + o.RefreshToken = &v +} + +func (o DtoLogoutRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoLogoutRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.RefreshToken) { + toSerialize["refresh_token"] = o.RefreshToken + } + return toSerialize, nil +} + +type NullableDtoLogoutRequest struct { + value *DtoLogoutRequest + isSet bool +} + +func (v NullableDtoLogoutRequest) Get() *DtoLogoutRequest { + return v.value +} + +func (v *NullableDtoLogoutRequest) Set(val *DtoLogoutRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDtoLogoutRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoLogoutRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoLogoutRequest(val *DtoLogoutRequest) *NullableDtoLogoutRequest { + return &NullableDtoLogoutRequest{value: val, isSet: true} +} + +func (v NullableDtoLogoutRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoLogoutRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_refresh_request.go b/sdk/go/model_dto_refresh_request.go new file mode 100644 index 0000000..bce052d --- /dev/null +++ b/sdk/go/model_dto_refresh_request.go @@ -0,0 +1,124 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoRefreshRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoRefreshRequest{} + +// DtoRefreshRequest struct for DtoRefreshRequest +type DtoRefreshRequest struct { + RefreshToken *string `json:"refresh_token,omitempty"` +} + +// NewDtoRefreshRequest instantiates a new DtoRefreshRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoRefreshRequest() *DtoRefreshRequest { + this := DtoRefreshRequest{} + return &this +} + +// NewDtoRefreshRequestWithDefaults instantiates a new DtoRefreshRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoRefreshRequestWithDefaults() *DtoRefreshRequest { + this := DtoRefreshRequest{} + return &this +} + +// GetRefreshToken returns the RefreshToken field value if set, zero value otherwise. +func (o *DtoRefreshRequest) GetRefreshToken() string { + if o == nil || IsNil(o.RefreshToken) { + var ret string + return ret + } + return *o.RefreshToken +} + +// GetRefreshTokenOk returns a tuple with the RefreshToken field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoRefreshRequest) GetRefreshTokenOk() (*string, bool) { + if o == nil || IsNil(o.RefreshToken) { + return nil, false + } + return o.RefreshToken, true +} + +// HasRefreshToken returns a boolean if a field has been set. +func (o *DtoRefreshRequest) HasRefreshToken() bool { + if o != nil && !IsNil(o.RefreshToken) { + return true + } + + return false +} + +// SetRefreshToken gets a reference to the given string and assigns it to the RefreshToken field. +func (o *DtoRefreshRequest) SetRefreshToken(v string) { + o.RefreshToken = &v +} + +func (o DtoRefreshRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoRefreshRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.RefreshToken) { + toSerialize["refresh_token"] = o.RefreshToken + } + return toSerialize, nil +} + +type NullableDtoRefreshRequest struct { + value *DtoRefreshRequest + isSet bool +} + +func (v NullableDtoRefreshRequest) Get() *DtoRefreshRequest { + return v.value +} + +func (v *NullableDtoRefreshRequest) Set(val *DtoRefreshRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDtoRefreshRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoRefreshRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoRefreshRequest(val *DtoRefreshRequest) *NullableDtoRefreshRequest { + return &NullableDtoRefreshRequest{value: val, isSet: true} +} + +func (v NullableDtoRefreshRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoRefreshRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_server_response.go b/sdk/go/model_dto_server_response.go new file mode 100644 index 0000000..e4d5665 --- /dev/null +++ b/sdk/go/model_dto_server_response.go @@ -0,0 +1,484 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoServerResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoServerResponse{} + +// DtoServerResponse struct for DtoServerResponse +type DtoServerResponse struct { + CreatedAt *string `json:"created_at,omitempty"` + Hostname *string `json:"hostname,omitempty"` + Id *string `json:"id,omitempty"` + OrganizationId *string `json:"organization_id,omitempty"` + PrivateIpAddress *string `json:"private_ip_address,omitempty"` + PublicIpAddress *string `json:"public_ip_address,omitempty"` + Role *string `json:"role,omitempty"` + SshKeyId *string `json:"ssh_key_id,omitempty"` + SshUser *string `json:"ssh_user,omitempty"` + Status *string `json:"status,omitempty"` + UpdatedAt *string `json:"updated_at,omitempty"` +} + +// NewDtoServerResponse instantiates a new DtoServerResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoServerResponse() *DtoServerResponse { + this := DtoServerResponse{} + return &this +} + +// NewDtoServerResponseWithDefaults instantiates a new DtoServerResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoServerResponseWithDefaults() *DtoServerResponse { + this := DtoServerResponse{} + return &this +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *DtoServerResponse) GetCreatedAt() string { + if o == nil || IsNil(o.CreatedAt) { + var ret string + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetCreatedAtOk() (*string, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *DtoServerResponse) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given string and assigns it to the CreatedAt field. +func (o *DtoServerResponse) SetCreatedAt(v string) { + o.CreatedAt = &v +} + +// GetHostname returns the Hostname field value if set, zero value otherwise. +func (o *DtoServerResponse) GetHostname() string { + if o == nil || IsNil(o.Hostname) { + var ret string + return ret + } + return *o.Hostname +} + +// GetHostnameOk returns a tuple with the Hostname field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetHostnameOk() (*string, bool) { + if o == nil || IsNil(o.Hostname) { + return nil, false + } + return o.Hostname, true +} + +// HasHostname returns a boolean if a field has been set. +func (o *DtoServerResponse) HasHostname() bool { + if o != nil && !IsNil(o.Hostname) { + return true + } + + return false +} + +// SetHostname gets a reference to the given string and assigns it to the Hostname field. +func (o *DtoServerResponse) SetHostname(v string) { + o.Hostname = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *DtoServerResponse) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *DtoServerResponse) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *DtoServerResponse) SetId(v string) { + o.Id = &v +} + +// GetOrganizationId returns the OrganizationId field value if set, zero value otherwise. +func (o *DtoServerResponse) GetOrganizationId() string { + if o == nil || IsNil(o.OrganizationId) { + var ret string + return ret + } + return *o.OrganizationId +} + +// GetOrganizationIdOk returns a tuple with the OrganizationId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetOrganizationIdOk() (*string, bool) { + if o == nil || IsNil(o.OrganizationId) { + return nil, false + } + return o.OrganizationId, true +} + +// HasOrganizationId returns a boolean if a field has been set. +func (o *DtoServerResponse) HasOrganizationId() bool { + if o != nil && !IsNil(o.OrganizationId) { + return true + } + + return false +} + +// SetOrganizationId gets a reference to the given string and assigns it to the OrganizationId field. +func (o *DtoServerResponse) SetOrganizationId(v string) { + o.OrganizationId = &v +} + +// GetPrivateIpAddress returns the PrivateIpAddress field value if set, zero value otherwise. +func (o *DtoServerResponse) GetPrivateIpAddress() string { + if o == nil || IsNil(o.PrivateIpAddress) { + var ret string + return ret + } + return *o.PrivateIpAddress +} + +// GetPrivateIpAddressOk returns a tuple with the PrivateIpAddress field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetPrivateIpAddressOk() (*string, bool) { + if o == nil || IsNil(o.PrivateIpAddress) { + return nil, false + } + return o.PrivateIpAddress, true +} + +// HasPrivateIpAddress returns a boolean if a field has been set. +func (o *DtoServerResponse) HasPrivateIpAddress() bool { + if o != nil && !IsNil(o.PrivateIpAddress) { + return true + } + + return false +} + +// SetPrivateIpAddress gets a reference to the given string and assigns it to the PrivateIpAddress field. +func (o *DtoServerResponse) SetPrivateIpAddress(v string) { + o.PrivateIpAddress = &v +} + +// GetPublicIpAddress returns the PublicIpAddress field value if set, zero value otherwise. +func (o *DtoServerResponse) GetPublicIpAddress() string { + if o == nil || IsNil(o.PublicIpAddress) { + var ret string + return ret + } + return *o.PublicIpAddress +} + +// GetPublicIpAddressOk returns a tuple with the PublicIpAddress field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetPublicIpAddressOk() (*string, bool) { + if o == nil || IsNil(o.PublicIpAddress) { + return nil, false + } + return o.PublicIpAddress, true +} + +// HasPublicIpAddress returns a boolean if a field has been set. +func (o *DtoServerResponse) HasPublicIpAddress() bool { + if o != nil && !IsNil(o.PublicIpAddress) { + return true + } + + return false +} + +// SetPublicIpAddress gets a reference to the given string and assigns it to the PublicIpAddress field. +func (o *DtoServerResponse) SetPublicIpAddress(v string) { + o.PublicIpAddress = &v +} + +// GetRole returns the Role field value if set, zero value otherwise. +func (o *DtoServerResponse) GetRole() string { + if o == nil || IsNil(o.Role) { + var ret string + return ret + } + return *o.Role +} + +// GetRoleOk returns a tuple with the Role field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetRoleOk() (*string, bool) { + if o == nil || IsNil(o.Role) { + return nil, false + } + return o.Role, true +} + +// HasRole returns a boolean if a field has been set. +func (o *DtoServerResponse) HasRole() bool { + if o != nil && !IsNil(o.Role) { + return true + } + + return false +} + +// SetRole gets a reference to the given string and assigns it to the Role field. +func (o *DtoServerResponse) SetRole(v string) { + o.Role = &v +} + +// GetSshKeyId returns the SshKeyId field value if set, zero value otherwise. +func (o *DtoServerResponse) GetSshKeyId() string { + if o == nil || IsNil(o.SshKeyId) { + var ret string + return ret + } + return *o.SshKeyId +} + +// GetSshKeyIdOk returns a tuple with the SshKeyId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetSshKeyIdOk() (*string, bool) { + if o == nil || IsNil(o.SshKeyId) { + return nil, false + } + return o.SshKeyId, true +} + +// HasSshKeyId returns a boolean if a field has been set. +func (o *DtoServerResponse) HasSshKeyId() bool { + if o != nil && !IsNil(o.SshKeyId) { + return true + } + + return false +} + +// SetSshKeyId gets a reference to the given string and assigns it to the SshKeyId field. +func (o *DtoServerResponse) SetSshKeyId(v string) { + o.SshKeyId = &v +} + +// GetSshUser returns the SshUser field value if set, zero value otherwise. +func (o *DtoServerResponse) GetSshUser() string { + if o == nil || IsNil(o.SshUser) { + var ret string + return ret + } + return *o.SshUser +} + +// GetSshUserOk returns a tuple with the SshUser field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetSshUserOk() (*string, bool) { + if o == nil || IsNil(o.SshUser) { + return nil, false + } + return o.SshUser, true +} + +// HasSshUser returns a boolean if a field has been set. +func (o *DtoServerResponse) HasSshUser() bool { + if o != nil && !IsNil(o.SshUser) { + return true + } + + return false +} + +// SetSshUser gets a reference to the given string and assigns it to the SshUser field. +func (o *DtoServerResponse) SetSshUser(v string) { + o.SshUser = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *DtoServerResponse) GetStatus() string { + if o == nil || IsNil(o.Status) { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetStatusOk() (*string, bool) { + if o == nil || IsNil(o.Status) { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *DtoServerResponse) HasStatus() bool { + if o != nil && !IsNil(o.Status) { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *DtoServerResponse) SetStatus(v string) { + o.Status = &v +} + +// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise. +func (o *DtoServerResponse) GetUpdatedAt() string { + if o == nil || IsNil(o.UpdatedAt) { + var ret string + return ret + } + return *o.UpdatedAt +} + +// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoServerResponse) GetUpdatedAtOk() (*string, bool) { + if o == nil || IsNil(o.UpdatedAt) { + return nil, false + } + return o.UpdatedAt, true +} + +// HasUpdatedAt returns a boolean if a field has been set. +func (o *DtoServerResponse) HasUpdatedAt() bool { + if o != nil && !IsNil(o.UpdatedAt) { + return true + } + + return false +} + +// SetUpdatedAt gets a reference to the given string and assigns it to the UpdatedAt field. +func (o *DtoServerResponse) SetUpdatedAt(v string) { + o.UpdatedAt = &v +} + +func (o DtoServerResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoServerResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.Hostname) { + toSerialize["hostname"] = o.Hostname + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.OrganizationId) { + toSerialize["organization_id"] = o.OrganizationId + } + if !IsNil(o.PrivateIpAddress) { + toSerialize["private_ip_address"] = o.PrivateIpAddress + } + if !IsNil(o.PublicIpAddress) { + toSerialize["public_ip_address"] = o.PublicIpAddress + } + if !IsNil(o.Role) { + toSerialize["role"] = o.Role + } + if !IsNil(o.SshKeyId) { + toSerialize["ssh_key_id"] = o.SshKeyId + } + if !IsNil(o.SshUser) { + toSerialize["ssh_user"] = o.SshUser + } + if !IsNil(o.Status) { + toSerialize["status"] = o.Status + } + if !IsNil(o.UpdatedAt) { + toSerialize["updated_at"] = o.UpdatedAt + } + return toSerialize, nil +} + +type NullableDtoServerResponse struct { + value *DtoServerResponse + isSet bool +} + +func (v NullableDtoServerResponse) Get() *DtoServerResponse { + return v.value +} + +func (v *NullableDtoServerResponse) Set(val *DtoServerResponse) { + v.value = val + v.isSet = true +} + +func (v NullableDtoServerResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoServerResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoServerResponse(val *DtoServerResponse) *NullableDtoServerResponse { + return &NullableDtoServerResponse{value: val, isSet: true} +} + +func (v NullableDtoServerResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoServerResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_ssh_response.go b/sdk/go/model_dto_ssh_response.go new file mode 100644 index 0000000..d53c4f3 --- /dev/null +++ b/sdk/go/model_dto_ssh_response.go @@ -0,0 +1,340 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoSshResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoSshResponse{} + +// DtoSshResponse struct for DtoSshResponse +type DtoSshResponse struct { + CreatedAt *string `json:"created_at,omitempty"` + Fingerprint *string `json:"fingerprint,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + OrganizationId *string `json:"organization_id,omitempty"` + PublicKey *string `json:"public_key,omitempty"` + UpdatedAt *string `json:"updated_at,omitempty"` +} + +// NewDtoSshResponse instantiates a new DtoSshResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoSshResponse() *DtoSshResponse { + this := DtoSshResponse{} + return &this +} + +// NewDtoSshResponseWithDefaults instantiates a new DtoSshResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoSshResponseWithDefaults() *DtoSshResponse { + this := DtoSshResponse{} + return &this +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *DtoSshResponse) GetCreatedAt() string { + if o == nil || IsNil(o.CreatedAt) { + var ret string + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshResponse) GetCreatedAtOk() (*string, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *DtoSshResponse) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given string and assigns it to the CreatedAt field. +func (o *DtoSshResponse) SetCreatedAt(v string) { + o.CreatedAt = &v +} + +// GetFingerprint returns the Fingerprint field value if set, zero value otherwise. +func (o *DtoSshResponse) GetFingerprint() string { + if o == nil || IsNil(o.Fingerprint) { + var ret string + return ret + } + return *o.Fingerprint +} + +// GetFingerprintOk returns a tuple with the Fingerprint field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshResponse) GetFingerprintOk() (*string, bool) { + if o == nil || IsNil(o.Fingerprint) { + return nil, false + } + return o.Fingerprint, true +} + +// HasFingerprint returns a boolean if a field has been set. +func (o *DtoSshResponse) HasFingerprint() bool { + if o != nil && !IsNil(o.Fingerprint) { + return true + } + + return false +} + +// SetFingerprint gets a reference to the given string and assigns it to the Fingerprint field. +func (o *DtoSshResponse) SetFingerprint(v string) { + o.Fingerprint = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *DtoSshResponse) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshResponse) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *DtoSshResponse) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *DtoSshResponse) SetId(v string) { + o.Id = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *DtoSshResponse) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshResponse) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *DtoSshResponse) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *DtoSshResponse) SetName(v string) { + o.Name = &v +} + +// GetOrganizationId returns the OrganizationId field value if set, zero value otherwise. +func (o *DtoSshResponse) GetOrganizationId() string { + if o == nil || IsNil(o.OrganizationId) { + var ret string + return ret + } + return *o.OrganizationId +} + +// GetOrganizationIdOk returns a tuple with the OrganizationId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshResponse) GetOrganizationIdOk() (*string, bool) { + if o == nil || IsNil(o.OrganizationId) { + return nil, false + } + return o.OrganizationId, true +} + +// HasOrganizationId returns a boolean if a field has been set. +func (o *DtoSshResponse) HasOrganizationId() bool { + if o != nil && !IsNil(o.OrganizationId) { + return true + } + + return false +} + +// SetOrganizationId gets a reference to the given string and assigns it to the OrganizationId field. +func (o *DtoSshResponse) SetOrganizationId(v string) { + o.OrganizationId = &v +} + +// GetPublicKey returns the PublicKey field value if set, zero value otherwise. +func (o *DtoSshResponse) GetPublicKey() string { + if o == nil || IsNil(o.PublicKey) { + var ret string + return ret + } + return *o.PublicKey +} + +// GetPublicKeyOk returns a tuple with the PublicKey field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshResponse) GetPublicKeyOk() (*string, bool) { + if o == nil || IsNil(o.PublicKey) { + return nil, false + } + return o.PublicKey, true +} + +// HasPublicKey returns a boolean if a field has been set. +func (o *DtoSshResponse) HasPublicKey() bool { + if o != nil && !IsNil(o.PublicKey) { + return true + } + + return false +} + +// SetPublicKey gets a reference to the given string and assigns it to the PublicKey field. +func (o *DtoSshResponse) SetPublicKey(v string) { + o.PublicKey = &v +} + +// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise. +func (o *DtoSshResponse) GetUpdatedAt() string { + if o == nil || IsNil(o.UpdatedAt) { + var ret string + return ret + } + return *o.UpdatedAt +} + +// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshResponse) GetUpdatedAtOk() (*string, bool) { + if o == nil || IsNil(o.UpdatedAt) { + return nil, false + } + return o.UpdatedAt, true +} + +// HasUpdatedAt returns a boolean if a field has been set. +func (o *DtoSshResponse) HasUpdatedAt() bool { + if o != nil && !IsNil(o.UpdatedAt) { + return true + } + + return false +} + +// SetUpdatedAt gets a reference to the given string and assigns it to the UpdatedAt field. +func (o *DtoSshResponse) SetUpdatedAt(v string) { + o.UpdatedAt = &v +} + +func (o DtoSshResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoSshResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.Fingerprint) { + toSerialize["fingerprint"] = o.Fingerprint + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + if !IsNil(o.OrganizationId) { + toSerialize["organization_id"] = o.OrganizationId + } + if !IsNil(o.PublicKey) { + toSerialize["public_key"] = o.PublicKey + } + if !IsNil(o.UpdatedAt) { + toSerialize["updated_at"] = o.UpdatedAt + } + return toSerialize, nil +} + +type NullableDtoSshResponse struct { + value *DtoSshResponse + isSet bool +} + +func (v NullableDtoSshResponse) Get() *DtoSshResponse { + return v.value +} + +func (v *NullableDtoSshResponse) Set(val *DtoSshResponse) { + v.value = val + v.isSet = true +} + +func (v NullableDtoSshResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoSshResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoSshResponse(val *DtoSshResponse) *NullableDtoSshResponse { + return &NullableDtoSshResponse{value: val, isSet: true} +} + +func (v NullableDtoSshResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoSshResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_ssh_reveal_response.go b/sdk/go/model_dto_ssh_reveal_response.go new file mode 100644 index 0000000..b3eba6f --- /dev/null +++ b/sdk/go/model_dto_ssh_reveal_response.go @@ -0,0 +1,376 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoSshRevealResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoSshRevealResponse{} + +// DtoSshRevealResponse struct for DtoSshRevealResponse +type DtoSshRevealResponse struct { + CreatedAt *string `json:"created_at,omitempty"` + Fingerprint *string `json:"fingerprint,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + OrganizationId *string `json:"organization_id,omitempty"` + PrivateKey *string `json:"private_key,omitempty"` + PublicKey *string `json:"public_key,omitempty"` + UpdatedAt *string `json:"updated_at,omitempty"` +} + +// NewDtoSshRevealResponse instantiates a new DtoSshRevealResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoSshRevealResponse() *DtoSshRevealResponse { + this := DtoSshRevealResponse{} + return &this +} + +// NewDtoSshRevealResponseWithDefaults instantiates a new DtoSshRevealResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoSshRevealResponseWithDefaults() *DtoSshRevealResponse { + this := DtoSshRevealResponse{} + return &this +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *DtoSshRevealResponse) GetCreatedAt() string { + if o == nil || IsNil(o.CreatedAt) { + var ret string + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshRevealResponse) GetCreatedAtOk() (*string, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *DtoSshRevealResponse) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given string and assigns it to the CreatedAt field. +func (o *DtoSshRevealResponse) SetCreatedAt(v string) { + o.CreatedAt = &v +} + +// GetFingerprint returns the Fingerprint field value if set, zero value otherwise. +func (o *DtoSshRevealResponse) GetFingerprint() string { + if o == nil || IsNil(o.Fingerprint) { + var ret string + return ret + } + return *o.Fingerprint +} + +// GetFingerprintOk returns a tuple with the Fingerprint field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshRevealResponse) GetFingerprintOk() (*string, bool) { + if o == nil || IsNil(o.Fingerprint) { + return nil, false + } + return o.Fingerprint, true +} + +// HasFingerprint returns a boolean if a field has been set. +func (o *DtoSshRevealResponse) HasFingerprint() bool { + if o != nil && !IsNil(o.Fingerprint) { + return true + } + + return false +} + +// SetFingerprint gets a reference to the given string and assigns it to the Fingerprint field. +func (o *DtoSshRevealResponse) SetFingerprint(v string) { + o.Fingerprint = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *DtoSshRevealResponse) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshRevealResponse) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *DtoSshRevealResponse) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *DtoSshRevealResponse) SetId(v string) { + o.Id = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *DtoSshRevealResponse) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshRevealResponse) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *DtoSshRevealResponse) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *DtoSshRevealResponse) SetName(v string) { + o.Name = &v +} + +// GetOrganizationId returns the OrganizationId field value if set, zero value otherwise. +func (o *DtoSshRevealResponse) GetOrganizationId() string { + if o == nil || IsNil(o.OrganizationId) { + var ret string + return ret + } + return *o.OrganizationId +} + +// GetOrganizationIdOk returns a tuple with the OrganizationId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshRevealResponse) GetOrganizationIdOk() (*string, bool) { + if o == nil || IsNil(o.OrganizationId) { + return nil, false + } + return o.OrganizationId, true +} + +// HasOrganizationId returns a boolean if a field has been set. +func (o *DtoSshRevealResponse) HasOrganizationId() bool { + if o != nil && !IsNil(o.OrganizationId) { + return true + } + + return false +} + +// SetOrganizationId gets a reference to the given string and assigns it to the OrganizationId field. +func (o *DtoSshRevealResponse) SetOrganizationId(v string) { + o.OrganizationId = &v +} + +// GetPrivateKey returns the PrivateKey field value if set, zero value otherwise. +func (o *DtoSshRevealResponse) GetPrivateKey() string { + if o == nil || IsNil(o.PrivateKey) { + var ret string + return ret + } + return *o.PrivateKey +} + +// GetPrivateKeyOk returns a tuple with the PrivateKey field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshRevealResponse) GetPrivateKeyOk() (*string, bool) { + if o == nil || IsNil(o.PrivateKey) { + return nil, false + } + return o.PrivateKey, true +} + +// HasPrivateKey returns a boolean if a field has been set. +func (o *DtoSshRevealResponse) HasPrivateKey() bool { + if o != nil && !IsNil(o.PrivateKey) { + return true + } + + return false +} + +// SetPrivateKey gets a reference to the given string and assigns it to the PrivateKey field. +func (o *DtoSshRevealResponse) SetPrivateKey(v string) { + o.PrivateKey = &v +} + +// GetPublicKey returns the PublicKey field value if set, zero value otherwise. +func (o *DtoSshRevealResponse) GetPublicKey() string { + if o == nil || IsNil(o.PublicKey) { + var ret string + return ret + } + return *o.PublicKey +} + +// GetPublicKeyOk returns a tuple with the PublicKey field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshRevealResponse) GetPublicKeyOk() (*string, bool) { + if o == nil || IsNil(o.PublicKey) { + return nil, false + } + return o.PublicKey, true +} + +// HasPublicKey returns a boolean if a field has been set. +func (o *DtoSshRevealResponse) HasPublicKey() bool { + if o != nil && !IsNil(o.PublicKey) { + return true + } + + return false +} + +// SetPublicKey gets a reference to the given string and assigns it to the PublicKey field. +func (o *DtoSshRevealResponse) SetPublicKey(v string) { + o.PublicKey = &v +} + +// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise. +func (o *DtoSshRevealResponse) GetUpdatedAt() string { + if o == nil || IsNil(o.UpdatedAt) { + var ret string + return ret + } + return *o.UpdatedAt +} + +// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoSshRevealResponse) GetUpdatedAtOk() (*string, bool) { + if o == nil || IsNil(o.UpdatedAt) { + return nil, false + } + return o.UpdatedAt, true +} + +// HasUpdatedAt returns a boolean if a field has been set. +func (o *DtoSshRevealResponse) HasUpdatedAt() bool { + if o != nil && !IsNil(o.UpdatedAt) { + return true + } + + return false +} + +// SetUpdatedAt gets a reference to the given string and assigns it to the UpdatedAt field. +func (o *DtoSshRevealResponse) SetUpdatedAt(v string) { + o.UpdatedAt = &v +} + +func (o DtoSshRevealResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoSshRevealResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.Fingerprint) { + toSerialize["fingerprint"] = o.Fingerprint + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + if !IsNil(o.OrganizationId) { + toSerialize["organization_id"] = o.OrganizationId + } + if !IsNil(o.PrivateKey) { + toSerialize["private_key"] = o.PrivateKey + } + if !IsNil(o.PublicKey) { + toSerialize["public_key"] = o.PublicKey + } + if !IsNil(o.UpdatedAt) { + toSerialize["updated_at"] = o.UpdatedAt + } + return toSerialize, nil +} + +type NullableDtoSshRevealResponse struct { + value *DtoSshRevealResponse + isSet bool +} + +func (v NullableDtoSshRevealResponse) Get() *DtoSshRevealResponse { + return v.value +} + +func (v *NullableDtoSshRevealResponse) Set(val *DtoSshRevealResponse) { + v.value = val + v.isSet = true +} + +func (v NullableDtoSshRevealResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoSshRevealResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoSshRevealResponse(val *DtoSshRevealResponse) *NullableDtoSshRevealResponse { + return &NullableDtoSshRevealResponse{value: val, isSet: true} +} + +func (v NullableDtoSshRevealResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoSshRevealResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_taint_response.go b/sdk/go/model_dto_taint_response.go new file mode 100644 index 0000000..b9ec89f --- /dev/null +++ b/sdk/go/model_dto_taint_response.go @@ -0,0 +1,232 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoTaintResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoTaintResponse{} + +// DtoTaintResponse struct for DtoTaintResponse +type DtoTaintResponse struct { + Effect *string `json:"effect,omitempty"` + Id *string `json:"id,omitempty"` + Key *string `json:"key,omitempty"` + Value *string `json:"value,omitempty"` +} + +// NewDtoTaintResponse instantiates a new DtoTaintResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoTaintResponse() *DtoTaintResponse { + this := DtoTaintResponse{} + return &this +} + +// NewDtoTaintResponseWithDefaults instantiates a new DtoTaintResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoTaintResponseWithDefaults() *DtoTaintResponse { + this := DtoTaintResponse{} + return &this +} + +// GetEffect returns the Effect field value if set, zero value otherwise. +func (o *DtoTaintResponse) GetEffect() string { + if o == nil || IsNil(o.Effect) { + var ret string + return ret + } + return *o.Effect +} + +// GetEffectOk returns a tuple with the Effect field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoTaintResponse) GetEffectOk() (*string, bool) { + if o == nil || IsNil(o.Effect) { + return nil, false + } + return o.Effect, true +} + +// HasEffect returns a boolean if a field has been set. +func (o *DtoTaintResponse) HasEffect() bool { + if o != nil && !IsNil(o.Effect) { + return true + } + + return false +} + +// SetEffect gets a reference to the given string and assigns it to the Effect field. +func (o *DtoTaintResponse) SetEffect(v string) { + o.Effect = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *DtoTaintResponse) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoTaintResponse) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *DtoTaintResponse) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *DtoTaintResponse) SetId(v string) { + o.Id = &v +} + +// GetKey returns the Key field value if set, zero value otherwise. +func (o *DtoTaintResponse) GetKey() string { + if o == nil || IsNil(o.Key) { + var ret string + return ret + } + return *o.Key +} + +// GetKeyOk returns a tuple with the Key field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoTaintResponse) GetKeyOk() (*string, bool) { + if o == nil || IsNil(o.Key) { + return nil, false + } + return o.Key, true +} + +// HasKey returns a boolean if a field has been set. +func (o *DtoTaintResponse) HasKey() bool { + if o != nil && !IsNil(o.Key) { + return true + } + + return false +} + +// SetKey gets a reference to the given string and assigns it to the Key field. +func (o *DtoTaintResponse) SetKey(v string) { + o.Key = &v +} + +// GetValue returns the Value field value if set, zero value otherwise. +func (o *DtoTaintResponse) GetValue() string { + if o == nil || IsNil(o.Value) { + var ret string + return ret + } + return *o.Value +} + +// GetValueOk returns a tuple with the Value field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoTaintResponse) GetValueOk() (*string, bool) { + if o == nil || IsNil(o.Value) { + return nil, false + } + return o.Value, true +} + +// HasValue returns a boolean if a field has been set. +func (o *DtoTaintResponse) HasValue() bool { + if o != nil && !IsNil(o.Value) { + return true + } + + return false +} + +// SetValue gets a reference to the given string and assigns it to the Value field. +func (o *DtoTaintResponse) SetValue(v string) { + o.Value = &v +} + +func (o DtoTaintResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoTaintResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Effect) { + toSerialize["effect"] = o.Effect + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.Key) { + toSerialize["key"] = o.Key + } + if !IsNil(o.Value) { + toSerialize["value"] = o.Value + } + return toSerialize, nil +} + +type NullableDtoTaintResponse struct { + value *DtoTaintResponse + isSet bool +} + +func (v NullableDtoTaintResponse) Get() *DtoTaintResponse { + return v.value +} + +func (v *NullableDtoTaintResponse) Set(val *DtoTaintResponse) { + v.value = val + v.isSet = true +} + +func (v NullableDtoTaintResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoTaintResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoTaintResponse(val *DtoTaintResponse) *NullableDtoTaintResponse { + return &NullableDtoTaintResponse{value: val, isSet: true} +} + +func (v NullableDtoTaintResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoTaintResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_token_pair.go b/sdk/go/model_dto_token_pair.go new file mode 100644 index 0000000..120f4a7 --- /dev/null +++ b/sdk/go/model_dto_token_pair.go @@ -0,0 +1,232 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoTokenPair type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoTokenPair{} + +// DtoTokenPair struct for DtoTokenPair +type DtoTokenPair struct { + AccessToken *string `json:"access_token,omitempty"` + ExpiresIn *int32 `json:"expires_in,omitempty"` + RefreshToken *string `json:"refresh_token,omitempty"` + TokenType *string `json:"token_type,omitempty"` +} + +// NewDtoTokenPair instantiates a new DtoTokenPair object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoTokenPair() *DtoTokenPair { + this := DtoTokenPair{} + return &this +} + +// NewDtoTokenPairWithDefaults instantiates a new DtoTokenPair object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoTokenPairWithDefaults() *DtoTokenPair { + this := DtoTokenPair{} + return &this +} + +// GetAccessToken returns the AccessToken field value if set, zero value otherwise. +func (o *DtoTokenPair) GetAccessToken() string { + if o == nil || IsNil(o.AccessToken) { + var ret string + return ret + } + return *o.AccessToken +} + +// GetAccessTokenOk returns a tuple with the AccessToken field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoTokenPair) GetAccessTokenOk() (*string, bool) { + if o == nil || IsNil(o.AccessToken) { + return nil, false + } + return o.AccessToken, true +} + +// HasAccessToken returns a boolean if a field has been set. +func (o *DtoTokenPair) HasAccessToken() bool { + if o != nil && !IsNil(o.AccessToken) { + return true + } + + return false +} + +// SetAccessToken gets a reference to the given string and assigns it to the AccessToken field. +func (o *DtoTokenPair) SetAccessToken(v string) { + o.AccessToken = &v +} + +// GetExpiresIn returns the ExpiresIn field value if set, zero value otherwise. +func (o *DtoTokenPair) GetExpiresIn() int32 { + if o == nil || IsNil(o.ExpiresIn) { + var ret int32 + return ret + } + return *o.ExpiresIn +} + +// GetExpiresInOk returns a tuple with the ExpiresIn field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoTokenPair) GetExpiresInOk() (*int32, bool) { + if o == nil || IsNil(o.ExpiresIn) { + return nil, false + } + return o.ExpiresIn, true +} + +// HasExpiresIn returns a boolean if a field has been set. +func (o *DtoTokenPair) HasExpiresIn() bool { + if o != nil && !IsNil(o.ExpiresIn) { + return true + } + + return false +} + +// SetExpiresIn gets a reference to the given int32 and assigns it to the ExpiresIn field. +func (o *DtoTokenPair) SetExpiresIn(v int32) { + o.ExpiresIn = &v +} + +// GetRefreshToken returns the RefreshToken field value if set, zero value otherwise. +func (o *DtoTokenPair) GetRefreshToken() string { + if o == nil || IsNil(o.RefreshToken) { + var ret string + return ret + } + return *o.RefreshToken +} + +// GetRefreshTokenOk returns a tuple with the RefreshToken field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoTokenPair) GetRefreshTokenOk() (*string, bool) { + if o == nil || IsNil(o.RefreshToken) { + return nil, false + } + return o.RefreshToken, true +} + +// HasRefreshToken returns a boolean if a field has been set. +func (o *DtoTokenPair) HasRefreshToken() bool { + if o != nil && !IsNil(o.RefreshToken) { + return true + } + + return false +} + +// SetRefreshToken gets a reference to the given string and assigns it to the RefreshToken field. +func (o *DtoTokenPair) SetRefreshToken(v string) { + o.RefreshToken = &v +} + +// GetTokenType returns the TokenType field value if set, zero value otherwise. +func (o *DtoTokenPair) GetTokenType() string { + if o == nil || IsNil(o.TokenType) { + var ret string + return ret + } + return *o.TokenType +} + +// GetTokenTypeOk returns a tuple with the TokenType field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoTokenPair) GetTokenTypeOk() (*string, bool) { + if o == nil || IsNil(o.TokenType) { + return nil, false + } + return o.TokenType, true +} + +// HasTokenType returns a boolean if a field has been set. +func (o *DtoTokenPair) HasTokenType() bool { + if o != nil && !IsNil(o.TokenType) { + return true + } + + return false +} + +// SetTokenType gets a reference to the given string and assigns it to the TokenType field. +func (o *DtoTokenPair) SetTokenType(v string) { + o.TokenType = &v +} + +func (o DtoTokenPair) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoTokenPair) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.AccessToken) { + toSerialize["access_token"] = o.AccessToken + } + if !IsNil(o.ExpiresIn) { + toSerialize["expires_in"] = o.ExpiresIn + } + if !IsNil(o.RefreshToken) { + toSerialize["refresh_token"] = o.RefreshToken + } + if !IsNil(o.TokenType) { + toSerialize["token_type"] = o.TokenType + } + return toSerialize, nil +} + +type NullableDtoTokenPair struct { + value *DtoTokenPair + isSet bool +} + +func (v NullableDtoTokenPair) Get() *DtoTokenPair { + return v.value +} + +func (v *NullableDtoTokenPair) Set(val *DtoTokenPair) { + v.value = val + v.isSet = true +} + +func (v NullableDtoTokenPair) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoTokenPair) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoTokenPair(val *DtoTokenPair) *NullableDtoTokenPair { + return &NullableDtoTokenPair{value: val, isSet: true} +} + +func (v NullableDtoTokenPair) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoTokenPair) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_update_server_request.go b/sdk/go/model_dto_update_server_request.go new file mode 100644 index 0000000..5c13513 --- /dev/null +++ b/sdk/go/model_dto_update_server_request.go @@ -0,0 +1,340 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoUpdateServerRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoUpdateServerRequest{} + +// DtoUpdateServerRequest struct for DtoUpdateServerRequest +type DtoUpdateServerRequest struct { + Hostname *string `json:"hostname,omitempty"` + PrivateIpAddress *string `json:"private_ip_address,omitempty"` + PublicIpAddress *string `json:"public_ip_address,omitempty"` + Role *string `json:"role,omitempty"` + SshKeyId *string `json:"ssh_key_id,omitempty"` + SshUser *string `json:"ssh_user,omitempty"` + Status *string `json:"status,omitempty"` +} + +// NewDtoUpdateServerRequest instantiates a new DtoUpdateServerRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoUpdateServerRequest() *DtoUpdateServerRequest { + this := DtoUpdateServerRequest{} + return &this +} + +// NewDtoUpdateServerRequestWithDefaults instantiates a new DtoUpdateServerRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoUpdateServerRequestWithDefaults() *DtoUpdateServerRequest { + this := DtoUpdateServerRequest{} + return &this +} + +// GetHostname returns the Hostname field value if set, zero value otherwise. +func (o *DtoUpdateServerRequest) GetHostname() string { + if o == nil || IsNil(o.Hostname) { + var ret string + return ret + } + return *o.Hostname +} + +// GetHostnameOk returns a tuple with the Hostname field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateServerRequest) GetHostnameOk() (*string, bool) { + if o == nil || IsNil(o.Hostname) { + return nil, false + } + return o.Hostname, true +} + +// HasHostname returns a boolean if a field has been set. +func (o *DtoUpdateServerRequest) HasHostname() bool { + if o != nil && !IsNil(o.Hostname) { + return true + } + + return false +} + +// SetHostname gets a reference to the given string and assigns it to the Hostname field. +func (o *DtoUpdateServerRequest) SetHostname(v string) { + o.Hostname = &v +} + +// GetPrivateIpAddress returns the PrivateIpAddress field value if set, zero value otherwise. +func (o *DtoUpdateServerRequest) GetPrivateIpAddress() string { + if o == nil || IsNil(o.PrivateIpAddress) { + var ret string + return ret + } + return *o.PrivateIpAddress +} + +// GetPrivateIpAddressOk returns a tuple with the PrivateIpAddress field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateServerRequest) GetPrivateIpAddressOk() (*string, bool) { + if o == nil || IsNil(o.PrivateIpAddress) { + return nil, false + } + return o.PrivateIpAddress, true +} + +// HasPrivateIpAddress returns a boolean if a field has been set. +func (o *DtoUpdateServerRequest) HasPrivateIpAddress() bool { + if o != nil && !IsNil(o.PrivateIpAddress) { + return true + } + + return false +} + +// SetPrivateIpAddress gets a reference to the given string and assigns it to the PrivateIpAddress field. +func (o *DtoUpdateServerRequest) SetPrivateIpAddress(v string) { + o.PrivateIpAddress = &v +} + +// GetPublicIpAddress returns the PublicIpAddress field value if set, zero value otherwise. +func (o *DtoUpdateServerRequest) GetPublicIpAddress() string { + if o == nil || IsNil(o.PublicIpAddress) { + var ret string + return ret + } + return *o.PublicIpAddress +} + +// GetPublicIpAddressOk returns a tuple with the PublicIpAddress field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateServerRequest) GetPublicIpAddressOk() (*string, bool) { + if o == nil || IsNil(o.PublicIpAddress) { + return nil, false + } + return o.PublicIpAddress, true +} + +// HasPublicIpAddress returns a boolean if a field has been set. +func (o *DtoUpdateServerRequest) HasPublicIpAddress() bool { + if o != nil && !IsNil(o.PublicIpAddress) { + return true + } + + return false +} + +// SetPublicIpAddress gets a reference to the given string and assigns it to the PublicIpAddress field. +func (o *DtoUpdateServerRequest) SetPublicIpAddress(v string) { + o.PublicIpAddress = &v +} + +// GetRole returns the Role field value if set, zero value otherwise. +func (o *DtoUpdateServerRequest) GetRole() string { + if o == nil || IsNil(o.Role) { + var ret string + return ret + } + return *o.Role +} + +// GetRoleOk returns a tuple with the Role field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateServerRequest) GetRoleOk() (*string, bool) { + if o == nil || IsNil(o.Role) { + return nil, false + } + return o.Role, true +} + +// HasRole returns a boolean if a field has been set. +func (o *DtoUpdateServerRequest) HasRole() bool { + if o != nil && !IsNil(o.Role) { + return true + } + + return false +} + +// SetRole gets a reference to the given string and assigns it to the Role field. +func (o *DtoUpdateServerRequest) SetRole(v string) { + o.Role = &v +} + +// GetSshKeyId returns the SshKeyId field value if set, zero value otherwise. +func (o *DtoUpdateServerRequest) GetSshKeyId() string { + if o == nil || IsNil(o.SshKeyId) { + var ret string + return ret + } + return *o.SshKeyId +} + +// GetSshKeyIdOk returns a tuple with the SshKeyId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateServerRequest) GetSshKeyIdOk() (*string, bool) { + if o == nil || IsNil(o.SshKeyId) { + return nil, false + } + return o.SshKeyId, true +} + +// HasSshKeyId returns a boolean if a field has been set. +func (o *DtoUpdateServerRequest) HasSshKeyId() bool { + if o != nil && !IsNil(o.SshKeyId) { + return true + } + + return false +} + +// SetSshKeyId gets a reference to the given string and assigns it to the SshKeyId field. +func (o *DtoUpdateServerRequest) SetSshKeyId(v string) { + o.SshKeyId = &v +} + +// GetSshUser returns the SshUser field value if set, zero value otherwise. +func (o *DtoUpdateServerRequest) GetSshUser() string { + if o == nil || IsNil(o.SshUser) { + var ret string + return ret + } + return *o.SshUser +} + +// GetSshUserOk returns a tuple with the SshUser field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateServerRequest) GetSshUserOk() (*string, bool) { + if o == nil || IsNil(o.SshUser) { + return nil, false + } + return o.SshUser, true +} + +// HasSshUser returns a boolean if a field has been set. +func (o *DtoUpdateServerRequest) HasSshUser() bool { + if o != nil && !IsNil(o.SshUser) { + return true + } + + return false +} + +// SetSshUser gets a reference to the given string and assigns it to the SshUser field. +func (o *DtoUpdateServerRequest) SetSshUser(v string) { + o.SshUser = &v +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *DtoUpdateServerRequest) GetStatus() string { + if o == nil || IsNil(o.Status) { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateServerRequest) GetStatusOk() (*string, bool) { + if o == nil || IsNil(o.Status) { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *DtoUpdateServerRequest) HasStatus() bool { + if o != nil && !IsNil(o.Status) { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *DtoUpdateServerRequest) SetStatus(v string) { + o.Status = &v +} + +func (o DtoUpdateServerRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoUpdateServerRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Hostname) { + toSerialize["hostname"] = o.Hostname + } + if !IsNil(o.PrivateIpAddress) { + toSerialize["private_ip_address"] = o.PrivateIpAddress + } + if !IsNil(o.PublicIpAddress) { + toSerialize["public_ip_address"] = o.PublicIpAddress + } + if !IsNil(o.Role) { + toSerialize["role"] = o.Role + } + if !IsNil(o.SshKeyId) { + toSerialize["ssh_key_id"] = o.SshKeyId + } + if !IsNil(o.SshUser) { + toSerialize["ssh_user"] = o.SshUser + } + if !IsNil(o.Status) { + toSerialize["status"] = o.Status + } + return toSerialize, nil +} + +type NullableDtoUpdateServerRequest struct { + value *DtoUpdateServerRequest + isSet bool +} + +func (v NullableDtoUpdateServerRequest) Get() *DtoUpdateServerRequest { + return v.value +} + +func (v *NullableDtoUpdateServerRequest) Set(val *DtoUpdateServerRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDtoUpdateServerRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoUpdateServerRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoUpdateServerRequest(val *DtoUpdateServerRequest) *NullableDtoUpdateServerRequest { + return &NullableDtoUpdateServerRequest{value: val, isSet: true} +} + +func (v NullableDtoUpdateServerRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoUpdateServerRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_dto_update_taint_request.go b/sdk/go/model_dto_update_taint_request.go new file mode 100644 index 0000000..f4aa3f6 --- /dev/null +++ b/sdk/go/model_dto_update_taint_request.go @@ -0,0 +1,196 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the DtoUpdateTaintRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DtoUpdateTaintRequest{} + +// DtoUpdateTaintRequest struct for DtoUpdateTaintRequest +type DtoUpdateTaintRequest struct { + Effect *string `json:"effect,omitempty"` + Key *string `json:"key,omitempty"` + Value *string `json:"value,omitempty"` +} + +// NewDtoUpdateTaintRequest instantiates a new DtoUpdateTaintRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDtoUpdateTaintRequest() *DtoUpdateTaintRequest { + this := DtoUpdateTaintRequest{} + return &this +} + +// NewDtoUpdateTaintRequestWithDefaults instantiates a new DtoUpdateTaintRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDtoUpdateTaintRequestWithDefaults() *DtoUpdateTaintRequest { + this := DtoUpdateTaintRequest{} + return &this +} + +// GetEffect returns the Effect field value if set, zero value otherwise. +func (o *DtoUpdateTaintRequest) GetEffect() string { + if o == nil || IsNil(o.Effect) { + var ret string + return ret + } + return *o.Effect +} + +// GetEffectOk returns a tuple with the Effect field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateTaintRequest) GetEffectOk() (*string, bool) { + if o == nil || IsNil(o.Effect) { + return nil, false + } + return o.Effect, true +} + +// HasEffect returns a boolean if a field has been set. +func (o *DtoUpdateTaintRequest) HasEffect() bool { + if o != nil && !IsNil(o.Effect) { + return true + } + + return false +} + +// SetEffect gets a reference to the given string and assigns it to the Effect field. +func (o *DtoUpdateTaintRequest) SetEffect(v string) { + o.Effect = &v +} + +// GetKey returns the Key field value if set, zero value otherwise. +func (o *DtoUpdateTaintRequest) GetKey() string { + if o == nil || IsNil(o.Key) { + var ret string + return ret + } + return *o.Key +} + +// GetKeyOk returns a tuple with the Key field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateTaintRequest) GetKeyOk() (*string, bool) { + if o == nil || IsNil(o.Key) { + return nil, false + } + return o.Key, true +} + +// HasKey returns a boolean if a field has been set. +func (o *DtoUpdateTaintRequest) HasKey() bool { + if o != nil && !IsNil(o.Key) { + return true + } + + return false +} + +// SetKey gets a reference to the given string and assigns it to the Key field. +func (o *DtoUpdateTaintRequest) SetKey(v string) { + o.Key = &v +} + +// GetValue returns the Value field value if set, zero value otherwise. +func (o *DtoUpdateTaintRequest) GetValue() string { + if o == nil || IsNil(o.Value) { + var ret string + return ret + } + return *o.Value +} + +// GetValueOk returns a tuple with the Value field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DtoUpdateTaintRequest) GetValueOk() (*string, bool) { + if o == nil || IsNil(o.Value) { + return nil, false + } + return o.Value, true +} + +// HasValue returns a boolean if a field has been set. +func (o *DtoUpdateTaintRequest) HasValue() bool { + if o != nil && !IsNil(o.Value) { + return true + } + + return false +} + +// SetValue gets a reference to the given string and assigns it to the Value field. +func (o *DtoUpdateTaintRequest) SetValue(v string) { + o.Value = &v +} + +func (o DtoUpdateTaintRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DtoUpdateTaintRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Effect) { + toSerialize["effect"] = o.Effect + } + if !IsNil(o.Key) { + toSerialize["key"] = o.Key + } + if !IsNil(o.Value) { + toSerialize["value"] = o.Value + } + return toSerialize, nil +} + +type NullableDtoUpdateTaintRequest struct { + value *DtoUpdateTaintRequest + isSet bool +} + +func (v NullableDtoUpdateTaintRequest) Get() *DtoUpdateTaintRequest { + return v.value +} + +func (v *NullableDtoUpdateTaintRequest) Set(val *DtoUpdateTaintRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDtoUpdateTaintRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDtoUpdateTaintRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDtoUpdateTaintRequest(val *DtoUpdateTaintRequest) *NullableDtoUpdateTaintRequest { + return &NullableDtoUpdateTaintRequest{value: val, isSet: true} +} + +func (v NullableDtoUpdateTaintRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDtoUpdateTaintRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_create_user_key_request.go b/sdk/go/model_handlers_create_user_key_request.go new file mode 100644 index 0000000..05d1436 --- /dev/null +++ b/sdk/go/model_handlers_create_user_key_request.go @@ -0,0 +1,161 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersCreateUserKeyRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersCreateUserKeyRequest{} + +// HandlersCreateUserKeyRequest struct for HandlersCreateUserKeyRequest +type HandlersCreateUserKeyRequest struct { + // optional TTL + ExpiresInHours *int32 `json:"expires_in_hours,omitempty"` + Name *string `json:"name,omitempty"` +} + +// NewHandlersCreateUserKeyRequest instantiates a new HandlersCreateUserKeyRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersCreateUserKeyRequest() *HandlersCreateUserKeyRequest { + this := HandlersCreateUserKeyRequest{} + return &this +} + +// NewHandlersCreateUserKeyRequestWithDefaults instantiates a new HandlersCreateUserKeyRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersCreateUserKeyRequestWithDefaults() *HandlersCreateUserKeyRequest { + this := HandlersCreateUserKeyRequest{} + return &this +} + +// GetExpiresInHours returns the ExpiresInHours field value if set, zero value otherwise. +func (o *HandlersCreateUserKeyRequest) GetExpiresInHours() int32 { + if o == nil || IsNil(o.ExpiresInHours) { + var ret int32 + return ret + } + return *o.ExpiresInHours +} + +// GetExpiresInHoursOk returns a tuple with the ExpiresInHours field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersCreateUserKeyRequest) GetExpiresInHoursOk() (*int32, bool) { + if o == nil || IsNil(o.ExpiresInHours) { + return nil, false + } + return o.ExpiresInHours, true +} + +// HasExpiresInHours returns a boolean if a field has been set. +func (o *HandlersCreateUserKeyRequest) HasExpiresInHours() bool { + if o != nil && !IsNil(o.ExpiresInHours) { + return true + } + + return false +} + +// SetExpiresInHours gets a reference to the given int32 and assigns it to the ExpiresInHours field. +func (o *HandlersCreateUserKeyRequest) SetExpiresInHours(v int32) { + o.ExpiresInHours = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *HandlersCreateUserKeyRequest) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersCreateUserKeyRequest) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *HandlersCreateUserKeyRequest) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *HandlersCreateUserKeyRequest) SetName(v string) { + o.Name = &v +} + +func (o HandlersCreateUserKeyRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersCreateUserKeyRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.ExpiresInHours) { + toSerialize["expires_in_hours"] = o.ExpiresInHours + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + return toSerialize, nil +} + +type NullableHandlersCreateUserKeyRequest struct { + value *HandlersCreateUserKeyRequest + isSet bool +} + +func (v NullableHandlersCreateUserKeyRequest) Get() *HandlersCreateUserKeyRequest { + return v.value +} + +func (v *NullableHandlersCreateUserKeyRequest) Set(val *HandlersCreateUserKeyRequest) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersCreateUserKeyRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersCreateUserKeyRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersCreateUserKeyRequest(val *HandlersCreateUserKeyRequest) *NullableHandlersCreateUserKeyRequest { + return &NullableHandlersCreateUserKeyRequest{value: val, isSet: true} +} + +func (v NullableHandlersCreateUserKeyRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersCreateUserKeyRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_me_response.go b/sdk/go/model_handlers_me_response.go new file mode 100644 index 0000000..8eaca86 --- /dev/null +++ b/sdk/go/model_handlers_me_response.go @@ -0,0 +1,414 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" + "time" +) + +// checks if the HandlersMeResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersMeResponse{} + +// HandlersMeResponse struct for HandlersMeResponse +type HandlersMeResponse struct { + AvatarUrl *string `json:"avatar_url,omitempty"` + CreatedAt *time.Time `json:"created_at,omitempty"` + DisplayName *string `json:"display_name,omitempty"` + Emails []ModelsUserEmail `json:"emails,omitempty"` + // example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + Id *string `json:"id,omitempty"` + IsDisabled *bool `json:"is_disabled,omitempty"` + Organizations []ModelsOrganization `json:"organizations,omitempty"` + PrimaryEmail *string `json:"primary_email,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` +} + +// NewHandlersMeResponse instantiates a new HandlersMeResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersMeResponse() *HandlersMeResponse { + this := HandlersMeResponse{} + return &this +} + +// NewHandlersMeResponseWithDefaults instantiates a new HandlersMeResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersMeResponseWithDefaults() *HandlersMeResponse { + this := HandlersMeResponse{} + return &this +} + +// GetAvatarUrl returns the AvatarUrl field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetAvatarUrl() string { + if o == nil || IsNil(o.AvatarUrl) { + var ret string + return ret + } + return *o.AvatarUrl +} + +// GetAvatarUrlOk returns a tuple with the AvatarUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetAvatarUrlOk() (*string, bool) { + if o == nil || IsNil(o.AvatarUrl) { + return nil, false + } + return o.AvatarUrl, true +} + +// HasAvatarUrl returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasAvatarUrl() bool { + if o != nil && !IsNil(o.AvatarUrl) { + return true + } + + return false +} + +// SetAvatarUrl gets a reference to the given string and assigns it to the AvatarUrl field. +func (o *HandlersMeResponse) SetAvatarUrl(v string) { + o.AvatarUrl = &v +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetCreatedAt() time.Time { + if o == nil || IsNil(o.CreatedAt) { + var ret time.Time + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetCreatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given time.Time and assigns it to the CreatedAt field. +func (o *HandlersMeResponse) SetCreatedAt(v time.Time) { + o.CreatedAt = &v +} + +// GetDisplayName returns the DisplayName field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetDisplayName() string { + if o == nil || IsNil(o.DisplayName) { + var ret string + return ret + } + return *o.DisplayName +} + +// GetDisplayNameOk returns a tuple with the DisplayName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetDisplayNameOk() (*string, bool) { + if o == nil || IsNil(o.DisplayName) { + return nil, false + } + return o.DisplayName, true +} + +// HasDisplayName returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasDisplayName() bool { + if o != nil && !IsNil(o.DisplayName) { + return true + } + + return false +} + +// SetDisplayName gets a reference to the given string and assigns it to the DisplayName field. +func (o *HandlersMeResponse) SetDisplayName(v string) { + o.DisplayName = &v +} + +// GetEmails returns the Emails field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetEmails() []ModelsUserEmail { + if o == nil || IsNil(o.Emails) { + var ret []ModelsUserEmail + return ret + } + return o.Emails +} + +// GetEmailsOk returns a tuple with the Emails field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetEmailsOk() ([]ModelsUserEmail, bool) { + if o == nil || IsNil(o.Emails) { + return nil, false + } + return o.Emails, true +} + +// HasEmails returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasEmails() bool { + if o != nil && !IsNil(o.Emails) { + return true + } + + return false +} + +// SetEmails gets a reference to the given []ModelsUserEmail and assigns it to the Emails field. +func (o *HandlersMeResponse) SetEmails(v []ModelsUserEmail) { + o.Emails = v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *HandlersMeResponse) SetId(v string) { + o.Id = &v +} + +// GetIsDisabled returns the IsDisabled field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetIsDisabled() bool { + if o == nil || IsNil(o.IsDisabled) { + var ret bool + return ret + } + return *o.IsDisabled +} + +// GetIsDisabledOk returns a tuple with the IsDisabled field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetIsDisabledOk() (*bool, bool) { + if o == nil || IsNil(o.IsDisabled) { + return nil, false + } + return o.IsDisabled, true +} + +// HasIsDisabled returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasIsDisabled() bool { + if o != nil && !IsNil(o.IsDisabled) { + return true + } + + return false +} + +// SetIsDisabled gets a reference to the given bool and assigns it to the IsDisabled field. +func (o *HandlersMeResponse) SetIsDisabled(v bool) { + o.IsDisabled = &v +} + +// GetOrganizations returns the Organizations field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetOrganizations() []ModelsOrganization { + if o == nil || IsNil(o.Organizations) { + var ret []ModelsOrganization + return ret + } + return o.Organizations +} + +// GetOrganizationsOk returns a tuple with the Organizations field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetOrganizationsOk() ([]ModelsOrganization, bool) { + if o == nil || IsNil(o.Organizations) { + return nil, false + } + return o.Organizations, true +} + +// HasOrganizations returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasOrganizations() bool { + if o != nil && !IsNil(o.Organizations) { + return true + } + + return false +} + +// SetOrganizations gets a reference to the given []ModelsOrganization and assigns it to the Organizations field. +func (o *HandlersMeResponse) SetOrganizations(v []ModelsOrganization) { + o.Organizations = v +} + +// GetPrimaryEmail returns the PrimaryEmail field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetPrimaryEmail() string { + if o == nil || IsNil(o.PrimaryEmail) { + var ret string + return ret + } + return *o.PrimaryEmail +} + +// GetPrimaryEmailOk returns a tuple with the PrimaryEmail field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetPrimaryEmailOk() (*string, bool) { + if o == nil || IsNil(o.PrimaryEmail) { + return nil, false + } + return o.PrimaryEmail, true +} + +// HasPrimaryEmail returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasPrimaryEmail() bool { + if o != nil && !IsNil(o.PrimaryEmail) { + return true + } + + return false +} + +// SetPrimaryEmail gets a reference to the given string and assigns it to the PrimaryEmail field. +func (o *HandlersMeResponse) SetPrimaryEmail(v string) { + o.PrimaryEmail = &v +} + +// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise. +func (o *HandlersMeResponse) GetUpdatedAt() time.Time { + if o == nil || IsNil(o.UpdatedAt) { + var ret time.Time + return ret + } + return *o.UpdatedAt +} + +// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMeResponse) GetUpdatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.UpdatedAt) { + return nil, false + } + return o.UpdatedAt, true +} + +// HasUpdatedAt returns a boolean if a field has been set. +func (o *HandlersMeResponse) HasUpdatedAt() bool { + if o != nil && !IsNil(o.UpdatedAt) { + return true + } + + return false +} + +// SetUpdatedAt gets a reference to the given time.Time and assigns it to the UpdatedAt field. +func (o *HandlersMeResponse) SetUpdatedAt(v time.Time) { + o.UpdatedAt = &v +} + +func (o HandlersMeResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersMeResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.AvatarUrl) { + toSerialize["avatar_url"] = o.AvatarUrl + } + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.DisplayName) { + toSerialize["display_name"] = o.DisplayName + } + if !IsNil(o.Emails) { + toSerialize["emails"] = o.Emails + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.IsDisabled) { + toSerialize["is_disabled"] = o.IsDisabled + } + if !IsNil(o.Organizations) { + toSerialize["organizations"] = o.Organizations + } + if !IsNil(o.PrimaryEmail) { + toSerialize["primary_email"] = o.PrimaryEmail + } + if !IsNil(o.UpdatedAt) { + toSerialize["updated_at"] = o.UpdatedAt + } + return toSerialize, nil +} + +type NullableHandlersMeResponse struct { + value *HandlersMeResponse + isSet bool +} + +func (v NullableHandlersMeResponse) Get() *HandlersMeResponse { + return v.value +} + +func (v *NullableHandlersMeResponse) Set(val *HandlersMeResponse) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersMeResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersMeResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersMeResponse(val *HandlersMeResponse) *NullableHandlersMeResponse { + return &NullableHandlersMeResponse{value: val, isSet: true} +} + +func (v NullableHandlersMeResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersMeResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_member_out.go b/sdk/go/model_handlers_member_out.go new file mode 100644 index 0000000..d49d09c --- /dev/null +++ b/sdk/go/model_handlers_member_out.go @@ -0,0 +1,197 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersMemberOut type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersMemberOut{} + +// HandlersMemberOut struct for HandlersMemberOut +type HandlersMemberOut struct { + Email *string `json:"email,omitempty"` + // owner/admin/member + Role *string `json:"role,omitempty"` + UserId *string `json:"user_id,omitempty"` +} + +// NewHandlersMemberOut instantiates a new HandlersMemberOut object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersMemberOut() *HandlersMemberOut { + this := HandlersMemberOut{} + return &this +} + +// NewHandlersMemberOutWithDefaults instantiates a new HandlersMemberOut object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersMemberOutWithDefaults() *HandlersMemberOut { + this := HandlersMemberOut{} + return &this +} + +// GetEmail returns the Email field value if set, zero value otherwise. +func (o *HandlersMemberOut) GetEmail() string { + if o == nil || IsNil(o.Email) { + var ret string + return ret + } + return *o.Email +} + +// GetEmailOk returns a tuple with the Email field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMemberOut) GetEmailOk() (*string, bool) { + if o == nil || IsNil(o.Email) { + return nil, false + } + return o.Email, true +} + +// HasEmail returns a boolean if a field has been set. +func (o *HandlersMemberOut) HasEmail() bool { + if o != nil && !IsNil(o.Email) { + return true + } + + return false +} + +// SetEmail gets a reference to the given string and assigns it to the Email field. +func (o *HandlersMemberOut) SetEmail(v string) { + o.Email = &v +} + +// GetRole returns the Role field value if set, zero value otherwise. +func (o *HandlersMemberOut) GetRole() string { + if o == nil || IsNil(o.Role) { + var ret string + return ret + } + return *o.Role +} + +// GetRoleOk returns a tuple with the Role field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMemberOut) GetRoleOk() (*string, bool) { + if o == nil || IsNil(o.Role) { + return nil, false + } + return o.Role, true +} + +// HasRole returns a boolean if a field has been set. +func (o *HandlersMemberOut) HasRole() bool { + if o != nil && !IsNil(o.Role) { + return true + } + + return false +} + +// SetRole gets a reference to the given string and assigns it to the Role field. +func (o *HandlersMemberOut) SetRole(v string) { + o.Role = &v +} + +// GetUserId returns the UserId field value if set, zero value otherwise. +func (o *HandlersMemberOut) GetUserId() string { + if o == nil || IsNil(o.UserId) { + var ret string + return ret + } + return *o.UserId +} + +// GetUserIdOk returns a tuple with the UserId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMemberOut) GetUserIdOk() (*string, bool) { + if o == nil || IsNil(o.UserId) { + return nil, false + } + return o.UserId, true +} + +// HasUserId returns a boolean if a field has been set. +func (o *HandlersMemberOut) HasUserId() bool { + if o != nil && !IsNil(o.UserId) { + return true + } + + return false +} + +// SetUserId gets a reference to the given string and assigns it to the UserId field. +func (o *HandlersMemberOut) SetUserId(v string) { + o.UserId = &v +} + +func (o HandlersMemberOut) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersMemberOut) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Email) { + toSerialize["email"] = o.Email + } + if !IsNil(o.Role) { + toSerialize["role"] = o.Role + } + if !IsNil(o.UserId) { + toSerialize["user_id"] = o.UserId + } + return toSerialize, nil +} + +type NullableHandlersMemberOut struct { + value *HandlersMemberOut + isSet bool +} + +func (v NullableHandlersMemberOut) Get() *HandlersMemberOut { + return v.value +} + +func (v *NullableHandlersMemberOut) Set(val *HandlersMemberOut) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersMemberOut) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersMemberOut) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersMemberOut(val *HandlersMemberOut) *NullableHandlersMemberOut { + return &NullableHandlersMemberOut{value: val, isSet: true} +} + +func (v NullableHandlersMemberOut) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersMemberOut) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_member_upsert_req.go b/sdk/go/model_handlers_member_upsert_req.go new file mode 100644 index 0000000..657ad97 --- /dev/null +++ b/sdk/go/model_handlers_member_upsert_req.go @@ -0,0 +1,160 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersMemberUpsertReq type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersMemberUpsertReq{} + +// HandlersMemberUpsertReq struct for HandlersMemberUpsertReq +type HandlersMemberUpsertReq struct { + Role *string `json:"role,omitempty"` + UserId *string `json:"user_id,omitempty"` +} + +// NewHandlersMemberUpsertReq instantiates a new HandlersMemberUpsertReq object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersMemberUpsertReq() *HandlersMemberUpsertReq { + this := HandlersMemberUpsertReq{} + return &this +} + +// NewHandlersMemberUpsertReqWithDefaults instantiates a new HandlersMemberUpsertReq object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersMemberUpsertReqWithDefaults() *HandlersMemberUpsertReq { + this := HandlersMemberUpsertReq{} + return &this +} + +// GetRole returns the Role field value if set, zero value otherwise. +func (o *HandlersMemberUpsertReq) GetRole() string { + if o == nil || IsNil(o.Role) { + var ret string + return ret + } + return *o.Role +} + +// GetRoleOk returns a tuple with the Role field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMemberUpsertReq) GetRoleOk() (*string, bool) { + if o == nil || IsNil(o.Role) { + return nil, false + } + return o.Role, true +} + +// HasRole returns a boolean if a field has been set. +func (o *HandlersMemberUpsertReq) HasRole() bool { + if o != nil && !IsNil(o.Role) { + return true + } + + return false +} + +// SetRole gets a reference to the given string and assigns it to the Role field. +func (o *HandlersMemberUpsertReq) SetRole(v string) { + o.Role = &v +} + +// GetUserId returns the UserId field value if set, zero value otherwise. +func (o *HandlersMemberUpsertReq) GetUserId() string { + if o == nil || IsNil(o.UserId) { + var ret string + return ret + } + return *o.UserId +} + +// GetUserIdOk returns a tuple with the UserId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersMemberUpsertReq) GetUserIdOk() (*string, bool) { + if o == nil || IsNil(o.UserId) { + return nil, false + } + return o.UserId, true +} + +// HasUserId returns a boolean if a field has been set. +func (o *HandlersMemberUpsertReq) HasUserId() bool { + if o != nil && !IsNil(o.UserId) { + return true + } + + return false +} + +// SetUserId gets a reference to the given string and assigns it to the UserId field. +func (o *HandlersMemberUpsertReq) SetUserId(v string) { + o.UserId = &v +} + +func (o HandlersMemberUpsertReq) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersMemberUpsertReq) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Role) { + toSerialize["role"] = o.Role + } + if !IsNil(o.UserId) { + toSerialize["user_id"] = o.UserId + } + return toSerialize, nil +} + +type NullableHandlersMemberUpsertReq struct { + value *HandlersMemberUpsertReq + isSet bool +} + +func (v NullableHandlersMemberUpsertReq) Get() *HandlersMemberUpsertReq { + return v.value +} + +func (v *NullableHandlersMemberUpsertReq) Set(val *HandlersMemberUpsertReq) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersMemberUpsertReq) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersMemberUpsertReq) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersMemberUpsertReq(val *HandlersMemberUpsertReq) *NullableHandlersMemberUpsertReq { + return &NullableHandlersMemberUpsertReq{value: val, isSet: true} +} + +func (v NullableHandlersMemberUpsertReq) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersMemberUpsertReq) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_org_create_req.go b/sdk/go/model_handlers_org_create_req.go new file mode 100644 index 0000000..7243fbf --- /dev/null +++ b/sdk/go/model_handlers_org_create_req.go @@ -0,0 +1,160 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersOrgCreateReq type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersOrgCreateReq{} + +// HandlersOrgCreateReq struct for HandlersOrgCreateReq +type HandlersOrgCreateReq struct { + Domain *string `json:"domain,omitempty"` + Name *string `json:"name,omitempty"` +} + +// NewHandlersOrgCreateReq instantiates a new HandlersOrgCreateReq object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersOrgCreateReq() *HandlersOrgCreateReq { + this := HandlersOrgCreateReq{} + return &this +} + +// NewHandlersOrgCreateReqWithDefaults instantiates a new HandlersOrgCreateReq object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersOrgCreateReqWithDefaults() *HandlersOrgCreateReq { + this := HandlersOrgCreateReq{} + return &this +} + +// GetDomain returns the Domain field value if set, zero value otherwise. +func (o *HandlersOrgCreateReq) GetDomain() string { + if o == nil || IsNil(o.Domain) { + var ret string + return ret + } + return *o.Domain +} + +// GetDomainOk returns a tuple with the Domain field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgCreateReq) GetDomainOk() (*string, bool) { + if o == nil || IsNil(o.Domain) { + return nil, false + } + return o.Domain, true +} + +// HasDomain returns a boolean if a field has been set. +func (o *HandlersOrgCreateReq) HasDomain() bool { + if o != nil && !IsNil(o.Domain) { + return true + } + + return false +} + +// SetDomain gets a reference to the given string and assigns it to the Domain field. +func (o *HandlersOrgCreateReq) SetDomain(v string) { + o.Domain = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *HandlersOrgCreateReq) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgCreateReq) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *HandlersOrgCreateReq) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *HandlersOrgCreateReq) SetName(v string) { + o.Name = &v +} + +func (o HandlersOrgCreateReq) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersOrgCreateReq) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Domain) { + toSerialize["domain"] = o.Domain + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + return toSerialize, nil +} + +type NullableHandlersOrgCreateReq struct { + value *HandlersOrgCreateReq + isSet bool +} + +func (v NullableHandlersOrgCreateReq) Get() *HandlersOrgCreateReq { + return v.value +} + +func (v *NullableHandlersOrgCreateReq) Set(val *HandlersOrgCreateReq) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersOrgCreateReq) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersOrgCreateReq) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersOrgCreateReq(val *HandlersOrgCreateReq) *NullableHandlersOrgCreateReq { + return &NullableHandlersOrgCreateReq{value: val, isSet: true} +} + +func (v NullableHandlersOrgCreateReq) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersOrgCreateReq) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_org_key_create_req.go b/sdk/go/model_handlers_org_key_create_req.go new file mode 100644 index 0000000..e62646f --- /dev/null +++ b/sdk/go/model_handlers_org_key_create_req.go @@ -0,0 +1,160 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersOrgKeyCreateReq type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersOrgKeyCreateReq{} + +// HandlersOrgKeyCreateReq struct for HandlersOrgKeyCreateReq +type HandlersOrgKeyCreateReq struct { + ExpiresInHours *int32 `json:"expires_in_hours,omitempty"` + Name *string `json:"name,omitempty"` +} + +// NewHandlersOrgKeyCreateReq instantiates a new HandlersOrgKeyCreateReq object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersOrgKeyCreateReq() *HandlersOrgKeyCreateReq { + this := HandlersOrgKeyCreateReq{} + return &this +} + +// NewHandlersOrgKeyCreateReqWithDefaults instantiates a new HandlersOrgKeyCreateReq object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersOrgKeyCreateReqWithDefaults() *HandlersOrgKeyCreateReq { + this := HandlersOrgKeyCreateReq{} + return &this +} + +// GetExpiresInHours returns the ExpiresInHours field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateReq) GetExpiresInHours() int32 { + if o == nil || IsNil(o.ExpiresInHours) { + var ret int32 + return ret + } + return *o.ExpiresInHours +} + +// GetExpiresInHoursOk returns a tuple with the ExpiresInHours field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateReq) GetExpiresInHoursOk() (*int32, bool) { + if o == nil || IsNil(o.ExpiresInHours) { + return nil, false + } + return o.ExpiresInHours, true +} + +// HasExpiresInHours returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateReq) HasExpiresInHours() bool { + if o != nil && !IsNil(o.ExpiresInHours) { + return true + } + + return false +} + +// SetExpiresInHours gets a reference to the given int32 and assigns it to the ExpiresInHours field. +func (o *HandlersOrgKeyCreateReq) SetExpiresInHours(v int32) { + o.ExpiresInHours = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateReq) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateReq) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateReq) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *HandlersOrgKeyCreateReq) SetName(v string) { + o.Name = &v +} + +func (o HandlersOrgKeyCreateReq) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersOrgKeyCreateReq) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.ExpiresInHours) { + toSerialize["expires_in_hours"] = o.ExpiresInHours + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + return toSerialize, nil +} + +type NullableHandlersOrgKeyCreateReq struct { + value *HandlersOrgKeyCreateReq + isSet bool +} + +func (v NullableHandlersOrgKeyCreateReq) Get() *HandlersOrgKeyCreateReq { + return v.value +} + +func (v *NullableHandlersOrgKeyCreateReq) Set(val *HandlersOrgKeyCreateReq) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersOrgKeyCreateReq) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersOrgKeyCreateReq) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersOrgKeyCreateReq(val *HandlersOrgKeyCreateReq) *NullableHandlersOrgKeyCreateReq { + return &NullableHandlersOrgKeyCreateReq{value: val, isSet: true} +} + +func (v NullableHandlersOrgKeyCreateReq) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersOrgKeyCreateReq) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_org_key_create_resp.go b/sdk/go/model_handlers_org_key_create_resp.go new file mode 100644 index 0000000..68209dc --- /dev/null +++ b/sdk/go/model_handlers_org_key_create_resp.go @@ -0,0 +1,343 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersOrgKeyCreateResp type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersOrgKeyCreateResp{} + +// HandlersOrgKeyCreateResp struct for HandlersOrgKeyCreateResp +type HandlersOrgKeyCreateResp struct { + CreatedAt *string `json:"created_at,omitempty"` + ExpiresAt *string `json:"expires_at,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + // shown once: + OrgKey *string `json:"org_key,omitempty"` + // shown once: + OrgSecret *string `json:"org_secret,omitempty"` + // \"org\" + Scope *string `json:"scope,omitempty"` +} + +// NewHandlersOrgKeyCreateResp instantiates a new HandlersOrgKeyCreateResp object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersOrgKeyCreateResp() *HandlersOrgKeyCreateResp { + this := HandlersOrgKeyCreateResp{} + return &this +} + +// NewHandlersOrgKeyCreateRespWithDefaults instantiates a new HandlersOrgKeyCreateResp object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersOrgKeyCreateRespWithDefaults() *HandlersOrgKeyCreateResp { + this := HandlersOrgKeyCreateResp{} + return &this +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateResp) GetCreatedAt() string { + if o == nil || IsNil(o.CreatedAt) { + var ret string + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateResp) GetCreatedAtOk() (*string, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateResp) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given string and assigns it to the CreatedAt field. +func (o *HandlersOrgKeyCreateResp) SetCreatedAt(v string) { + o.CreatedAt = &v +} + +// GetExpiresAt returns the ExpiresAt field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateResp) GetExpiresAt() string { + if o == nil || IsNil(o.ExpiresAt) { + var ret string + return ret + } + return *o.ExpiresAt +} + +// GetExpiresAtOk returns a tuple with the ExpiresAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateResp) GetExpiresAtOk() (*string, bool) { + if o == nil || IsNil(o.ExpiresAt) { + return nil, false + } + return o.ExpiresAt, true +} + +// HasExpiresAt returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateResp) HasExpiresAt() bool { + if o != nil && !IsNil(o.ExpiresAt) { + return true + } + + return false +} + +// SetExpiresAt gets a reference to the given string and assigns it to the ExpiresAt field. +func (o *HandlersOrgKeyCreateResp) SetExpiresAt(v string) { + o.ExpiresAt = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateResp) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateResp) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateResp) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *HandlersOrgKeyCreateResp) SetId(v string) { + o.Id = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateResp) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateResp) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateResp) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *HandlersOrgKeyCreateResp) SetName(v string) { + o.Name = &v +} + +// GetOrgKey returns the OrgKey field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateResp) GetOrgKey() string { + if o == nil || IsNil(o.OrgKey) { + var ret string + return ret + } + return *o.OrgKey +} + +// GetOrgKeyOk returns a tuple with the OrgKey field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateResp) GetOrgKeyOk() (*string, bool) { + if o == nil || IsNil(o.OrgKey) { + return nil, false + } + return o.OrgKey, true +} + +// HasOrgKey returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateResp) HasOrgKey() bool { + if o != nil && !IsNil(o.OrgKey) { + return true + } + + return false +} + +// SetOrgKey gets a reference to the given string and assigns it to the OrgKey field. +func (o *HandlersOrgKeyCreateResp) SetOrgKey(v string) { + o.OrgKey = &v +} + +// GetOrgSecret returns the OrgSecret field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateResp) GetOrgSecret() string { + if o == nil || IsNil(o.OrgSecret) { + var ret string + return ret + } + return *o.OrgSecret +} + +// GetOrgSecretOk returns a tuple with the OrgSecret field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateResp) GetOrgSecretOk() (*string, bool) { + if o == nil || IsNil(o.OrgSecret) { + return nil, false + } + return o.OrgSecret, true +} + +// HasOrgSecret returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateResp) HasOrgSecret() bool { + if o != nil && !IsNil(o.OrgSecret) { + return true + } + + return false +} + +// SetOrgSecret gets a reference to the given string and assigns it to the OrgSecret field. +func (o *HandlersOrgKeyCreateResp) SetOrgSecret(v string) { + o.OrgSecret = &v +} + +// GetScope returns the Scope field value if set, zero value otherwise. +func (o *HandlersOrgKeyCreateResp) GetScope() string { + if o == nil || IsNil(o.Scope) { + var ret string + return ret + } + return *o.Scope +} + +// GetScopeOk returns a tuple with the Scope field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgKeyCreateResp) GetScopeOk() (*string, bool) { + if o == nil || IsNil(o.Scope) { + return nil, false + } + return o.Scope, true +} + +// HasScope returns a boolean if a field has been set. +func (o *HandlersOrgKeyCreateResp) HasScope() bool { + if o != nil && !IsNil(o.Scope) { + return true + } + + return false +} + +// SetScope gets a reference to the given string and assigns it to the Scope field. +func (o *HandlersOrgKeyCreateResp) SetScope(v string) { + o.Scope = &v +} + +func (o HandlersOrgKeyCreateResp) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersOrgKeyCreateResp) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.ExpiresAt) { + toSerialize["expires_at"] = o.ExpiresAt + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + if !IsNil(o.OrgKey) { + toSerialize["org_key"] = o.OrgKey + } + if !IsNil(o.OrgSecret) { + toSerialize["org_secret"] = o.OrgSecret + } + if !IsNil(o.Scope) { + toSerialize["scope"] = o.Scope + } + return toSerialize, nil +} + +type NullableHandlersOrgKeyCreateResp struct { + value *HandlersOrgKeyCreateResp + isSet bool +} + +func (v NullableHandlersOrgKeyCreateResp) Get() *HandlersOrgKeyCreateResp { + return v.value +} + +func (v *NullableHandlersOrgKeyCreateResp) Set(val *HandlersOrgKeyCreateResp) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersOrgKeyCreateResp) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersOrgKeyCreateResp) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersOrgKeyCreateResp(val *HandlersOrgKeyCreateResp) *NullableHandlersOrgKeyCreateResp { + return &NullableHandlersOrgKeyCreateResp{value: val, isSet: true} +} + +func (v NullableHandlersOrgKeyCreateResp) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersOrgKeyCreateResp) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_org_update_req.go b/sdk/go/model_handlers_org_update_req.go new file mode 100644 index 0000000..a6ad403 --- /dev/null +++ b/sdk/go/model_handlers_org_update_req.go @@ -0,0 +1,160 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersOrgUpdateReq type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersOrgUpdateReq{} + +// HandlersOrgUpdateReq struct for HandlersOrgUpdateReq +type HandlersOrgUpdateReq struct { + Domain *string `json:"domain,omitempty"` + Name *string `json:"name,omitempty"` +} + +// NewHandlersOrgUpdateReq instantiates a new HandlersOrgUpdateReq object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersOrgUpdateReq() *HandlersOrgUpdateReq { + this := HandlersOrgUpdateReq{} + return &this +} + +// NewHandlersOrgUpdateReqWithDefaults instantiates a new HandlersOrgUpdateReq object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersOrgUpdateReqWithDefaults() *HandlersOrgUpdateReq { + this := HandlersOrgUpdateReq{} + return &this +} + +// GetDomain returns the Domain field value if set, zero value otherwise. +func (o *HandlersOrgUpdateReq) GetDomain() string { + if o == nil || IsNil(o.Domain) { + var ret string + return ret + } + return *o.Domain +} + +// GetDomainOk returns a tuple with the Domain field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgUpdateReq) GetDomainOk() (*string, bool) { + if o == nil || IsNil(o.Domain) { + return nil, false + } + return o.Domain, true +} + +// HasDomain returns a boolean if a field has been set. +func (o *HandlersOrgUpdateReq) HasDomain() bool { + if o != nil && !IsNil(o.Domain) { + return true + } + + return false +} + +// SetDomain gets a reference to the given string and assigns it to the Domain field. +func (o *HandlersOrgUpdateReq) SetDomain(v string) { + o.Domain = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *HandlersOrgUpdateReq) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersOrgUpdateReq) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *HandlersOrgUpdateReq) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *HandlersOrgUpdateReq) SetName(v string) { + o.Name = &v +} + +func (o HandlersOrgUpdateReq) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersOrgUpdateReq) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Domain) { + toSerialize["domain"] = o.Domain + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + return toSerialize, nil +} + +type NullableHandlersOrgUpdateReq struct { + value *HandlersOrgUpdateReq + isSet bool +} + +func (v NullableHandlersOrgUpdateReq) Get() *HandlersOrgUpdateReq { + return v.value +} + +func (v *NullableHandlersOrgUpdateReq) Set(val *HandlersOrgUpdateReq) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersOrgUpdateReq) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersOrgUpdateReq) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersOrgUpdateReq(val *HandlersOrgUpdateReq) *NullableHandlersOrgUpdateReq { + return &NullableHandlersOrgUpdateReq{value: val, isSet: true} +} + +func (v NullableHandlersOrgUpdateReq) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersOrgUpdateReq) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_update_me_request.go b/sdk/go/model_handlers_update_me_request.go new file mode 100644 index 0000000..79b57fc --- /dev/null +++ b/sdk/go/model_handlers_update_me_request.go @@ -0,0 +1,124 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersUpdateMeRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersUpdateMeRequest{} + +// HandlersUpdateMeRequest struct for HandlersUpdateMeRequest +type HandlersUpdateMeRequest struct { + DisplayName *string `json:"display_name,omitempty"` +} + +// NewHandlersUpdateMeRequest instantiates a new HandlersUpdateMeRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersUpdateMeRequest() *HandlersUpdateMeRequest { + this := HandlersUpdateMeRequest{} + return &this +} + +// NewHandlersUpdateMeRequestWithDefaults instantiates a new HandlersUpdateMeRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersUpdateMeRequestWithDefaults() *HandlersUpdateMeRequest { + this := HandlersUpdateMeRequest{} + return &this +} + +// GetDisplayName returns the DisplayName field value if set, zero value otherwise. +func (o *HandlersUpdateMeRequest) GetDisplayName() string { + if o == nil || IsNil(o.DisplayName) { + var ret string + return ret + } + return *o.DisplayName +} + +// GetDisplayNameOk returns a tuple with the DisplayName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersUpdateMeRequest) GetDisplayNameOk() (*string, bool) { + if o == nil || IsNil(o.DisplayName) { + return nil, false + } + return o.DisplayName, true +} + +// HasDisplayName returns a boolean if a field has been set. +func (o *HandlersUpdateMeRequest) HasDisplayName() bool { + if o != nil && !IsNil(o.DisplayName) { + return true + } + + return false +} + +// SetDisplayName gets a reference to the given string and assigns it to the DisplayName field. +func (o *HandlersUpdateMeRequest) SetDisplayName(v string) { + o.DisplayName = &v +} + +func (o HandlersUpdateMeRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersUpdateMeRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.DisplayName) { + toSerialize["display_name"] = o.DisplayName + } + return toSerialize, nil +} + +type NullableHandlersUpdateMeRequest struct { + value *HandlersUpdateMeRequest + isSet bool +} + +func (v NullableHandlersUpdateMeRequest) Get() *HandlersUpdateMeRequest { + return v.value +} + +func (v *NullableHandlersUpdateMeRequest) Set(val *HandlersUpdateMeRequest) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersUpdateMeRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersUpdateMeRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersUpdateMeRequest(val *HandlersUpdateMeRequest) *NullableHandlersUpdateMeRequest { + return &NullableHandlersUpdateMeRequest{value: val, isSet: true} +} + +func (v NullableHandlersUpdateMeRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersUpdateMeRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_handlers_user_api_key_out.go b/sdk/go/model_handlers_user_api_key_out.go new file mode 100644 index 0000000..f3b4bd7 --- /dev/null +++ b/sdk/go/model_handlers_user_api_key_out.go @@ -0,0 +1,342 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the HandlersUserAPIKeyOut type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &HandlersUserAPIKeyOut{} + +// HandlersUserAPIKeyOut struct for HandlersUserAPIKeyOut +type HandlersUserAPIKeyOut struct { + CreatedAt *string `json:"created_at,omitempty"` + ExpiresAt *string `json:"expires_at,omitempty"` + Id *string `json:"id,omitempty"` + LastUsedAt *string `json:"last_used_at,omitempty"` + Name *string `json:"name,omitempty"` + // Shown only on create: + Plain *string `json:"plain,omitempty"` + // \"user\" + Scope *string `json:"scope,omitempty"` +} + +// NewHandlersUserAPIKeyOut instantiates a new HandlersUserAPIKeyOut object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewHandlersUserAPIKeyOut() *HandlersUserAPIKeyOut { + this := HandlersUserAPIKeyOut{} + return &this +} + +// NewHandlersUserAPIKeyOutWithDefaults instantiates a new HandlersUserAPIKeyOut object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewHandlersUserAPIKeyOutWithDefaults() *HandlersUserAPIKeyOut { + this := HandlersUserAPIKeyOut{} + return &this +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *HandlersUserAPIKeyOut) GetCreatedAt() string { + if o == nil || IsNil(o.CreatedAt) { + var ret string + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersUserAPIKeyOut) GetCreatedAtOk() (*string, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *HandlersUserAPIKeyOut) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given string and assigns it to the CreatedAt field. +func (o *HandlersUserAPIKeyOut) SetCreatedAt(v string) { + o.CreatedAt = &v +} + +// GetExpiresAt returns the ExpiresAt field value if set, zero value otherwise. +func (o *HandlersUserAPIKeyOut) GetExpiresAt() string { + if o == nil || IsNil(o.ExpiresAt) { + var ret string + return ret + } + return *o.ExpiresAt +} + +// GetExpiresAtOk returns a tuple with the ExpiresAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersUserAPIKeyOut) GetExpiresAtOk() (*string, bool) { + if o == nil || IsNil(o.ExpiresAt) { + return nil, false + } + return o.ExpiresAt, true +} + +// HasExpiresAt returns a boolean if a field has been set. +func (o *HandlersUserAPIKeyOut) HasExpiresAt() bool { + if o != nil && !IsNil(o.ExpiresAt) { + return true + } + + return false +} + +// SetExpiresAt gets a reference to the given string and assigns it to the ExpiresAt field. +func (o *HandlersUserAPIKeyOut) SetExpiresAt(v string) { + o.ExpiresAt = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *HandlersUserAPIKeyOut) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersUserAPIKeyOut) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *HandlersUserAPIKeyOut) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *HandlersUserAPIKeyOut) SetId(v string) { + o.Id = &v +} + +// GetLastUsedAt returns the LastUsedAt field value if set, zero value otherwise. +func (o *HandlersUserAPIKeyOut) GetLastUsedAt() string { + if o == nil || IsNil(o.LastUsedAt) { + var ret string + return ret + } + return *o.LastUsedAt +} + +// GetLastUsedAtOk returns a tuple with the LastUsedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersUserAPIKeyOut) GetLastUsedAtOk() (*string, bool) { + if o == nil || IsNil(o.LastUsedAt) { + return nil, false + } + return o.LastUsedAt, true +} + +// HasLastUsedAt returns a boolean if a field has been set. +func (o *HandlersUserAPIKeyOut) HasLastUsedAt() bool { + if o != nil && !IsNil(o.LastUsedAt) { + return true + } + + return false +} + +// SetLastUsedAt gets a reference to the given string and assigns it to the LastUsedAt field. +func (o *HandlersUserAPIKeyOut) SetLastUsedAt(v string) { + o.LastUsedAt = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *HandlersUserAPIKeyOut) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersUserAPIKeyOut) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *HandlersUserAPIKeyOut) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *HandlersUserAPIKeyOut) SetName(v string) { + o.Name = &v +} + +// GetPlain returns the Plain field value if set, zero value otherwise. +func (o *HandlersUserAPIKeyOut) GetPlain() string { + if o == nil || IsNil(o.Plain) { + var ret string + return ret + } + return *o.Plain +} + +// GetPlainOk returns a tuple with the Plain field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersUserAPIKeyOut) GetPlainOk() (*string, bool) { + if o == nil || IsNil(o.Plain) { + return nil, false + } + return o.Plain, true +} + +// HasPlain returns a boolean if a field has been set. +func (o *HandlersUserAPIKeyOut) HasPlain() bool { + if o != nil && !IsNil(o.Plain) { + return true + } + + return false +} + +// SetPlain gets a reference to the given string and assigns it to the Plain field. +func (o *HandlersUserAPIKeyOut) SetPlain(v string) { + o.Plain = &v +} + +// GetScope returns the Scope field value if set, zero value otherwise. +func (o *HandlersUserAPIKeyOut) GetScope() string { + if o == nil || IsNil(o.Scope) { + var ret string + return ret + } + return *o.Scope +} + +// GetScopeOk returns a tuple with the Scope field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *HandlersUserAPIKeyOut) GetScopeOk() (*string, bool) { + if o == nil || IsNil(o.Scope) { + return nil, false + } + return o.Scope, true +} + +// HasScope returns a boolean if a field has been set. +func (o *HandlersUserAPIKeyOut) HasScope() bool { + if o != nil && !IsNil(o.Scope) { + return true + } + + return false +} + +// SetScope gets a reference to the given string and assigns it to the Scope field. +func (o *HandlersUserAPIKeyOut) SetScope(v string) { + o.Scope = &v +} + +func (o HandlersUserAPIKeyOut) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o HandlersUserAPIKeyOut) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.ExpiresAt) { + toSerialize["expires_at"] = o.ExpiresAt + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.LastUsedAt) { + toSerialize["last_used_at"] = o.LastUsedAt + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + if !IsNil(o.Plain) { + toSerialize["plain"] = o.Plain + } + if !IsNil(o.Scope) { + toSerialize["scope"] = o.Scope + } + return toSerialize, nil +} + +type NullableHandlersUserAPIKeyOut struct { + value *HandlersUserAPIKeyOut + isSet bool +} + +func (v NullableHandlersUserAPIKeyOut) Get() *HandlersUserAPIKeyOut { + return v.value +} + +func (v *NullableHandlersUserAPIKeyOut) Set(val *HandlersUserAPIKeyOut) { + v.value = val + v.isSet = true +} + +func (v NullableHandlersUserAPIKeyOut) IsSet() bool { + return v.isSet +} + +func (v *NullableHandlersUserAPIKeyOut) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableHandlersUserAPIKeyOut(val *HandlersUserAPIKeyOut) *NullableHandlersUserAPIKeyOut { + return &NullableHandlersUserAPIKeyOut{value: val, isSet: true} +} + +func (v NullableHandlersUserAPIKeyOut) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableHandlersUserAPIKeyOut) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_models_api_key.go b/sdk/go/model_models_api_key.go new file mode 100644 index 0000000..8381468 --- /dev/null +++ b/sdk/go/model_models_api_key.go @@ -0,0 +1,485 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" + "time" +) + +// checks if the ModelsAPIKey type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ModelsAPIKey{} + +// ModelsAPIKey struct for ModelsAPIKey +type ModelsAPIKey struct { + CreatedAt *time.Time `json:"created_at,omitempty"` + ExpiresAt *time.Time `json:"expires_at,omitempty"` + Id *string `json:"id,omitempty"` + LastUsedAt *time.Time `json:"last_used_at,omitempty"` + Name *string `json:"name,omitempty"` + OrgId *string `json:"org_id,omitempty"` + Prefix *string `json:"prefix,omitempty"` + Revoked *bool `json:"revoked,omitempty"` + Scope *string `json:"scope,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` + UserId *string `json:"user_id,omitempty"` +} + +// NewModelsAPIKey instantiates a new ModelsAPIKey object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewModelsAPIKey() *ModelsAPIKey { + this := ModelsAPIKey{} + return &this +} + +// NewModelsAPIKeyWithDefaults instantiates a new ModelsAPIKey object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewModelsAPIKeyWithDefaults() *ModelsAPIKey { + this := ModelsAPIKey{} + return &this +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetCreatedAt() time.Time { + if o == nil || IsNil(o.CreatedAt) { + var ret time.Time + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetCreatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given time.Time and assigns it to the CreatedAt field. +func (o *ModelsAPIKey) SetCreatedAt(v time.Time) { + o.CreatedAt = &v +} + +// GetExpiresAt returns the ExpiresAt field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetExpiresAt() time.Time { + if o == nil || IsNil(o.ExpiresAt) { + var ret time.Time + return ret + } + return *o.ExpiresAt +} + +// GetExpiresAtOk returns a tuple with the ExpiresAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetExpiresAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.ExpiresAt) { + return nil, false + } + return o.ExpiresAt, true +} + +// HasExpiresAt returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasExpiresAt() bool { + if o != nil && !IsNil(o.ExpiresAt) { + return true + } + + return false +} + +// SetExpiresAt gets a reference to the given time.Time and assigns it to the ExpiresAt field. +func (o *ModelsAPIKey) SetExpiresAt(v time.Time) { + o.ExpiresAt = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *ModelsAPIKey) SetId(v string) { + o.Id = &v +} + +// GetLastUsedAt returns the LastUsedAt field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetLastUsedAt() time.Time { + if o == nil || IsNil(o.LastUsedAt) { + var ret time.Time + return ret + } + return *o.LastUsedAt +} + +// GetLastUsedAtOk returns a tuple with the LastUsedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetLastUsedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.LastUsedAt) { + return nil, false + } + return o.LastUsedAt, true +} + +// HasLastUsedAt returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasLastUsedAt() bool { + if o != nil && !IsNil(o.LastUsedAt) { + return true + } + + return false +} + +// SetLastUsedAt gets a reference to the given time.Time and assigns it to the LastUsedAt field. +func (o *ModelsAPIKey) SetLastUsedAt(v time.Time) { + o.LastUsedAt = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *ModelsAPIKey) SetName(v string) { + o.Name = &v +} + +// GetOrgId returns the OrgId field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetOrgId() string { + if o == nil || IsNil(o.OrgId) { + var ret string + return ret + } + return *o.OrgId +} + +// GetOrgIdOk returns a tuple with the OrgId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetOrgIdOk() (*string, bool) { + if o == nil || IsNil(o.OrgId) { + return nil, false + } + return o.OrgId, true +} + +// HasOrgId returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasOrgId() bool { + if o != nil && !IsNil(o.OrgId) { + return true + } + + return false +} + +// SetOrgId gets a reference to the given string and assigns it to the OrgId field. +func (o *ModelsAPIKey) SetOrgId(v string) { + o.OrgId = &v +} + +// GetPrefix returns the Prefix field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetPrefix() string { + if o == nil || IsNil(o.Prefix) { + var ret string + return ret + } + return *o.Prefix +} + +// GetPrefixOk returns a tuple with the Prefix field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetPrefixOk() (*string, bool) { + if o == nil || IsNil(o.Prefix) { + return nil, false + } + return o.Prefix, true +} + +// HasPrefix returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasPrefix() bool { + if o != nil && !IsNil(o.Prefix) { + return true + } + + return false +} + +// SetPrefix gets a reference to the given string and assigns it to the Prefix field. +func (o *ModelsAPIKey) SetPrefix(v string) { + o.Prefix = &v +} + +// GetRevoked returns the Revoked field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetRevoked() bool { + if o == nil || IsNil(o.Revoked) { + var ret bool + return ret + } + return *o.Revoked +} + +// GetRevokedOk returns a tuple with the Revoked field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetRevokedOk() (*bool, bool) { + if o == nil || IsNil(o.Revoked) { + return nil, false + } + return o.Revoked, true +} + +// HasRevoked returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasRevoked() bool { + if o != nil && !IsNil(o.Revoked) { + return true + } + + return false +} + +// SetRevoked gets a reference to the given bool and assigns it to the Revoked field. +func (o *ModelsAPIKey) SetRevoked(v bool) { + o.Revoked = &v +} + +// GetScope returns the Scope field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetScope() string { + if o == nil || IsNil(o.Scope) { + var ret string + return ret + } + return *o.Scope +} + +// GetScopeOk returns a tuple with the Scope field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetScopeOk() (*string, bool) { + if o == nil || IsNil(o.Scope) { + return nil, false + } + return o.Scope, true +} + +// HasScope returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasScope() bool { + if o != nil && !IsNil(o.Scope) { + return true + } + + return false +} + +// SetScope gets a reference to the given string and assigns it to the Scope field. +func (o *ModelsAPIKey) SetScope(v string) { + o.Scope = &v +} + +// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetUpdatedAt() time.Time { + if o == nil || IsNil(o.UpdatedAt) { + var ret time.Time + return ret + } + return *o.UpdatedAt +} + +// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetUpdatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.UpdatedAt) { + return nil, false + } + return o.UpdatedAt, true +} + +// HasUpdatedAt returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasUpdatedAt() bool { + if o != nil && !IsNil(o.UpdatedAt) { + return true + } + + return false +} + +// SetUpdatedAt gets a reference to the given time.Time and assigns it to the UpdatedAt field. +func (o *ModelsAPIKey) SetUpdatedAt(v time.Time) { + o.UpdatedAt = &v +} + +// GetUserId returns the UserId field value if set, zero value otherwise. +func (o *ModelsAPIKey) GetUserId() string { + if o == nil || IsNil(o.UserId) { + var ret string + return ret + } + return *o.UserId +} + +// GetUserIdOk returns a tuple with the UserId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsAPIKey) GetUserIdOk() (*string, bool) { + if o == nil || IsNil(o.UserId) { + return nil, false + } + return o.UserId, true +} + +// HasUserId returns a boolean if a field has been set. +func (o *ModelsAPIKey) HasUserId() bool { + if o != nil && !IsNil(o.UserId) { + return true + } + + return false +} + +// SetUserId gets a reference to the given string and assigns it to the UserId field. +func (o *ModelsAPIKey) SetUserId(v string) { + o.UserId = &v +} + +func (o ModelsAPIKey) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ModelsAPIKey) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.ExpiresAt) { + toSerialize["expires_at"] = o.ExpiresAt + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.LastUsedAt) { + toSerialize["last_used_at"] = o.LastUsedAt + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + if !IsNil(o.OrgId) { + toSerialize["org_id"] = o.OrgId + } + if !IsNil(o.Prefix) { + toSerialize["prefix"] = o.Prefix + } + if !IsNil(o.Revoked) { + toSerialize["revoked"] = o.Revoked + } + if !IsNil(o.Scope) { + toSerialize["scope"] = o.Scope + } + if !IsNil(o.UpdatedAt) { + toSerialize["updated_at"] = o.UpdatedAt + } + if !IsNil(o.UserId) { + toSerialize["user_id"] = o.UserId + } + return toSerialize, nil +} + +type NullableModelsAPIKey struct { + value *ModelsAPIKey + isSet bool +} + +func (v NullableModelsAPIKey) Get() *ModelsAPIKey { + return v.value +} + +func (v *NullableModelsAPIKey) Set(val *ModelsAPIKey) { + v.value = val + v.isSet = true +} + +func (v NullableModelsAPIKey) IsSet() bool { + return v.isSet +} + +func (v *NullableModelsAPIKey) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableModelsAPIKey(val *ModelsAPIKey) *NullableModelsAPIKey { + return &NullableModelsAPIKey{value: val, isSet: true} +} + +func (v NullableModelsAPIKey) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableModelsAPIKey) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_models_organization.go b/sdk/go/model_models_organization.go new file mode 100644 index 0000000..1fb1734 --- /dev/null +++ b/sdk/go/model_models_organization.go @@ -0,0 +1,270 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" + "time" +) + +// checks if the ModelsOrganization type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ModelsOrganization{} + +// ModelsOrganization struct for ModelsOrganization +type ModelsOrganization struct { + CreatedAt *time.Time `json:"created_at,omitempty"` + Domain *string `json:"domain,omitempty"` + // example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` +} + +// NewModelsOrganization instantiates a new ModelsOrganization object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewModelsOrganization() *ModelsOrganization { + this := ModelsOrganization{} + return &this +} + +// NewModelsOrganizationWithDefaults instantiates a new ModelsOrganization object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewModelsOrganizationWithDefaults() *ModelsOrganization { + this := ModelsOrganization{} + return &this +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *ModelsOrganization) GetCreatedAt() time.Time { + if o == nil || IsNil(o.CreatedAt) { + var ret time.Time + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsOrganization) GetCreatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *ModelsOrganization) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given time.Time and assigns it to the CreatedAt field. +func (o *ModelsOrganization) SetCreatedAt(v time.Time) { + o.CreatedAt = &v +} + +// GetDomain returns the Domain field value if set, zero value otherwise. +func (o *ModelsOrganization) GetDomain() string { + if o == nil || IsNil(o.Domain) { + var ret string + return ret + } + return *o.Domain +} + +// GetDomainOk returns a tuple with the Domain field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsOrganization) GetDomainOk() (*string, bool) { + if o == nil || IsNil(o.Domain) { + return nil, false + } + return o.Domain, true +} + +// HasDomain returns a boolean if a field has been set. +func (o *ModelsOrganization) HasDomain() bool { + if o != nil && !IsNil(o.Domain) { + return true + } + + return false +} + +// SetDomain gets a reference to the given string and assigns it to the Domain field. +func (o *ModelsOrganization) SetDomain(v string) { + o.Domain = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *ModelsOrganization) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsOrganization) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *ModelsOrganization) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *ModelsOrganization) SetId(v string) { + o.Id = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *ModelsOrganization) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsOrganization) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *ModelsOrganization) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *ModelsOrganization) SetName(v string) { + o.Name = &v +} + +// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise. +func (o *ModelsOrganization) GetUpdatedAt() time.Time { + if o == nil || IsNil(o.UpdatedAt) { + var ret time.Time + return ret + } + return *o.UpdatedAt +} + +// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsOrganization) GetUpdatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.UpdatedAt) { + return nil, false + } + return o.UpdatedAt, true +} + +// HasUpdatedAt returns a boolean if a field has been set. +func (o *ModelsOrganization) HasUpdatedAt() bool { + if o != nil && !IsNil(o.UpdatedAt) { + return true + } + + return false +} + +// SetUpdatedAt gets a reference to the given time.Time and assigns it to the UpdatedAt field. +func (o *ModelsOrganization) SetUpdatedAt(v time.Time) { + o.UpdatedAt = &v +} + +func (o ModelsOrganization) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ModelsOrganization) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.Domain) { + toSerialize["domain"] = o.Domain + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + if !IsNil(o.UpdatedAt) { + toSerialize["updated_at"] = o.UpdatedAt + } + return toSerialize, nil +} + +type NullableModelsOrganization struct { + value *ModelsOrganization + isSet bool +} + +func (v NullableModelsOrganization) Get() *ModelsOrganization { + return v.value +} + +func (v *NullableModelsOrganization) Set(val *ModelsOrganization) { + v.value = val + v.isSet = true +} + +func (v NullableModelsOrganization) IsSet() bool { + return v.isSet +} + +func (v *NullableModelsOrganization) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableModelsOrganization(val *ModelsOrganization) *NullableModelsOrganization { + return &NullableModelsOrganization{value: val, isSet: true} +} + +func (v NullableModelsOrganization) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableModelsOrganization) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_models_user.go b/sdk/go/model_models_user.go new file mode 100644 index 0000000..07886e6 --- /dev/null +++ b/sdk/go/model_models_user.go @@ -0,0 +1,342 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" + "time" +) + +// checks if the ModelsUser type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ModelsUser{} + +// ModelsUser struct for ModelsUser +type ModelsUser struct { + AvatarUrl *string `json:"avatar_url,omitempty"` + CreatedAt *time.Time `json:"created_at,omitempty"` + DisplayName *string `json:"display_name,omitempty"` + // example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + Id *string `json:"id,omitempty"` + IsDisabled *bool `json:"is_disabled,omitempty"` + PrimaryEmail *string `json:"primary_email,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` +} + +// NewModelsUser instantiates a new ModelsUser object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewModelsUser() *ModelsUser { + this := ModelsUser{} + return &this +} + +// NewModelsUserWithDefaults instantiates a new ModelsUser object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewModelsUserWithDefaults() *ModelsUser { + this := ModelsUser{} + return &this +} + +// GetAvatarUrl returns the AvatarUrl field value if set, zero value otherwise. +func (o *ModelsUser) GetAvatarUrl() string { + if o == nil || IsNil(o.AvatarUrl) { + var ret string + return ret + } + return *o.AvatarUrl +} + +// GetAvatarUrlOk returns a tuple with the AvatarUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUser) GetAvatarUrlOk() (*string, bool) { + if o == nil || IsNil(o.AvatarUrl) { + return nil, false + } + return o.AvatarUrl, true +} + +// HasAvatarUrl returns a boolean if a field has been set. +func (o *ModelsUser) HasAvatarUrl() bool { + if o != nil && !IsNil(o.AvatarUrl) { + return true + } + + return false +} + +// SetAvatarUrl gets a reference to the given string and assigns it to the AvatarUrl field. +func (o *ModelsUser) SetAvatarUrl(v string) { + o.AvatarUrl = &v +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *ModelsUser) GetCreatedAt() time.Time { + if o == nil || IsNil(o.CreatedAt) { + var ret time.Time + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUser) GetCreatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *ModelsUser) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given time.Time and assigns it to the CreatedAt field. +func (o *ModelsUser) SetCreatedAt(v time.Time) { + o.CreatedAt = &v +} + +// GetDisplayName returns the DisplayName field value if set, zero value otherwise. +func (o *ModelsUser) GetDisplayName() string { + if o == nil || IsNil(o.DisplayName) { + var ret string + return ret + } + return *o.DisplayName +} + +// GetDisplayNameOk returns a tuple with the DisplayName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUser) GetDisplayNameOk() (*string, bool) { + if o == nil || IsNil(o.DisplayName) { + return nil, false + } + return o.DisplayName, true +} + +// HasDisplayName returns a boolean if a field has been set. +func (o *ModelsUser) HasDisplayName() bool { + if o != nil && !IsNil(o.DisplayName) { + return true + } + + return false +} + +// SetDisplayName gets a reference to the given string and assigns it to the DisplayName field. +func (o *ModelsUser) SetDisplayName(v string) { + o.DisplayName = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *ModelsUser) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUser) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *ModelsUser) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *ModelsUser) SetId(v string) { + o.Id = &v +} + +// GetIsDisabled returns the IsDisabled field value if set, zero value otherwise. +func (o *ModelsUser) GetIsDisabled() bool { + if o == nil || IsNil(o.IsDisabled) { + var ret bool + return ret + } + return *o.IsDisabled +} + +// GetIsDisabledOk returns a tuple with the IsDisabled field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUser) GetIsDisabledOk() (*bool, bool) { + if o == nil || IsNil(o.IsDisabled) { + return nil, false + } + return o.IsDisabled, true +} + +// HasIsDisabled returns a boolean if a field has been set. +func (o *ModelsUser) HasIsDisabled() bool { + if o != nil && !IsNil(o.IsDisabled) { + return true + } + + return false +} + +// SetIsDisabled gets a reference to the given bool and assigns it to the IsDisabled field. +func (o *ModelsUser) SetIsDisabled(v bool) { + o.IsDisabled = &v +} + +// GetPrimaryEmail returns the PrimaryEmail field value if set, zero value otherwise. +func (o *ModelsUser) GetPrimaryEmail() string { + if o == nil || IsNil(o.PrimaryEmail) { + var ret string + return ret + } + return *o.PrimaryEmail +} + +// GetPrimaryEmailOk returns a tuple with the PrimaryEmail field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUser) GetPrimaryEmailOk() (*string, bool) { + if o == nil || IsNil(o.PrimaryEmail) { + return nil, false + } + return o.PrimaryEmail, true +} + +// HasPrimaryEmail returns a boolean if a field has been set. +func (o *ModelsUser) HasPrimaryEmail() bool { + if o != nil && !IsNil(o.PrimaryEmail) { + return true + } + + return false +} + +// SetPrimaryEmail gets a reference to the given string and assigns it to the PrimaryEmail field. +func (o *ModelsUser) SetPrimaryEmail(v string) { + o.PrimaryEmail = &v +} + +// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise. +func (o *ModelsUser) GetUpdatedAt() time.Time { + if o == nil || IsNil(o.UpdatedAt) { + var ret time.Time + return ret + } + return *o.UpdatedAt +} + +// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUser) GetUpdatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.UpdatedAt) { + return nil, false + } + return o.UpdatedAt, true +} + +// HasUpdatedAt returns a boolean if a field has been set. +func (o *ModelsUser) HasUpdatedAt() bool { + if o != nil && !IsNil(o.UpdatedAt) { + return true + } + + return false +} + +// SetUpdatedAt gets a reference to the given time.Time and assigns it to the UpdatedAt field. +func (o *ModelsUser) SetUpdatedAt(v time.Time) { + o.UpdatedAt = &v +} + +func (o ModelsUser) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ModelsUser) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.AvatarUrl) { + toSerialize["avatar_url"] = o.AvatarUrl + } + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.DisplayName) { + toSerialize["display_name"] = o.DisplayName + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.IsDisabled) { + toSerialize["is_disabled"] = o.IsDisabled + } + if !IsNil(o.PrimaryEmail) { + toSerialize["primary_email"] = o.PrimaryEmail + } + if !IsNil(o.UpdatedAt) { + toSerialize["updated_at"] = o.UpdatedAt + } + return toSerialize, nil +} + +type NullableModelsUser struct { + value *ModelsUser + isSet bool +} + +func (v NullableModelsUser) Get() *ModelsUser { + return v.value +} + +func (v *NullableModelsUser) Set(val *ModelsUser) { + v.value = val + v.isSet = true +} + +func (v NullableModelsUser) IsSet() bool { + return v.isSet +} + +func (v *NullableModelsUser) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableModelsUser(val *ModelsUser) *NullableModelsUser { + return &NullableModelsUser{value: val, isSet: true} +} + +func (v NullableModelsUser) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableModelsUser) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_models_user_email.go b/sdk/go/model_models_user_email.go new file mode 100644 index 0000000..4c33d6c --- /dev/null +++ b/sdk/go/model_models_user_email.go @@ -0,0 +1,378 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" + "time" +) + +// checks if the ModelsUserEmail type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ModelsUserEmail{} + +// ModelsUserEmail struct for ModelsUserEmail +type ModelsUserEmail struct { + CreatedAt *time.Time `json:"created_at,omitempty"` + Email *string `json:"email,omitempty"` + // example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + Id *string `json:"id,omitempty"` + IsPrimary *bool `json:"is_primary,omitempty"` + IsVerified *bool `json:"is_verified,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` + User *ModelsUser `json:"user,omitempty"` + UserId *string `json:"user_id,omitempty"` +} + +// NewModelsUserEmail instantiates a new ModelsUserEmail object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewModelsUserEmail() *ModelsUserEmail { + this := ModelsUserEmail{} + return &this +} + +// NewModelsUserEmailWithDefaults instantiates a new ModelsUserEmail object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewModelsUserEmailWithDefaults() *ModelsUserEmail { + this := ModelsUserEmail{} + return &this +} + +// GetCreatedAt returns the CreatedAt field value if set, zero value otherwise. +func (o *ModelsUserEmail) GetCreatedAt() time.Time { + if o == nil || IsNil(o.CreatedAt) { + var ret time.Time + return ret + } + return *o.CreatedAt +} + +// GetCreatedAtOk returns a tuple with the CreatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUserEmail) GetCreatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.CreatedAt) { + return nil, false + } + return o.CreatedAt, true +} + +// HasCreatedAt returns a boolean if a field has been set. +func (o *ModelsUserEmail) HasCreatedAt() bool { + if o != nil && !IsNil(o.CreatedAt) { + return true + } + + return false +} + +// SetCreatedAt gets a reference to the given time.Time and assigns it to the CreatedAt field. +func (o *ModelsUserEmail) SetCreatedAt(v time.Time) { + o.CreatedAt = &v +} + +// GetEmail returns the Email field value if set, zero value otherwise. +func (o *ModelsUserEmail) GetEmail() string { + if o == nil || IsNil(o.Email) { + var ret string + return ret + } + return *o.Email +} + +// GetEmailOk returns a tuple with the Email field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUserEmail) GetEmailOk() (*string, bool) { + if o == nil || IsNil(o.Email) { + return nil, false + } + return o.Email, true +} + +// HasEmail returns a boolean if a field has been set. +func (o *ModelsUserEmail) HasEmail() bool { + if o != nil && !IsNil(o.Email) { + return true + } + + return false +} + +// SetEmail gets a reference to the given string and assigns it to the Email field. +func (o *ModelsUserEmail) SetEmail(v string) { + o.Email = &v +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *ModelsUserEmail) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUserEmail) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *ModelsUserEmail) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *ModelsUserEmail) SetId(v string) { + o.Id = &v +} + +// GetIsPrimary returns the IsPrimary field value if set, zero value otherwise. +func (o *ModelsUserEmail) GetIsPrimary() bool { + if o == nil || IsNil(o.IsPrimary) { + var ret bool + return ret + } + return *o.IsPrimary +} + +// GetIsPrimaryOk returns a tuple with the IsPrimary field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUserEmail) GetIsPrimaryOk() (*bool, bool) { + if o == nil || IsNil(o.IsPrimary) { + return nil, false + } + return o.IsPrimary, true +} + +// HasIsPrimary returns a boolean if a field has been set. +func (o *ModelsUserEmail) HasIsPrimary() bool { + if o != nil && !IsNil(o.IsPrimary) { + return true + } + + return false +} + +// SetIsPrimary gets a reference to the given bool and assigns it to the IsPrimary field. +func (o *ModelsUserEmail) SetIsPrimary(v bool) { + o.IsPrimary = &v +} + +// GetIsVerified returns the IsVerified field value if set, zero value otherwise. +func (o *ModelsUserEmail) GetIsVerified() bool { + if o == nil || IsNil(o.IsVerified) { + var ret bool + return ret + } + return *o.IsVerified +} + +// GetIsVerifiedOk returns a tuple with the IsVerified field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUserEmail) GetIsVerifiedOk() (*bool, bool) { + if o == nil || IsNil(o.IsVerified) { + return nil, false + } + return o.IsVerified, true +} + +// HasIsVerified returns a boolean if a field has been set. +func (o *ModelsUserEmail) HasIsVerified() bool { + if o != nil && !IsNil(o.IsVerified) { + return true + } + + return false +} + +// SetIsVerified gets a reference to the given bool and assigns it to the IsVerified field. +func (o *ModelsUserEmail) SetIsVerified(v bool) { + o.IsVerified = &v +} + +// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise. +func (o *ModelsUserEmail) GetUpdatedAt() time.Time { + if o == nil || IsNil(o.UpdatedAt) { + var ret time.Time + return ret + } + return *o.UpdatedAt +} + +// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUserEmail) GetUpdatedAtOk() (*time.Time, bool) { + if o == nil || IsNil(o.UpdatedAt) { + return nil, false + } + return o.UpdatedAt, true +} + +// HasUpdatedAt returns a boolean if a field has been set. +func (o *ModelsUserEmail) HasUpdatedAt() bool { + if o != nil && !IsNil(o.UpdatedAt) { + return true + } + + return false +} + +// SetUpdatedAt gets a reference to the given time.Time and assigns it to the UpdatedAt field. +func (o *ModelsUserEmail) SetUpdatedAt(v time.Time) { + o.UpdatedAt = &v +} + +// GetUser returns the User field value if set, zero value otherwise. +func (o *ModelsUserEmail) GetUser() ModelsUser { + if o == nil || IsNil(o.User) { + var ret ModelsUser + return ret + } + return *o.User +} + +// GetUserOk returns a tuple with the User field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUserEmail) GetUserOk() (*ModelsUser, bool) { + if o == nil || IsNil(o.User) { + return nil, false + } + return o.User, true +} + +// HasUser returns a boolean if a field has been set. +func (o *ModelsUserEmail) HasUser() bool { + if o != nil && !IsNil(o.User) { + return true + } + + return false +} + +// SetUser gets a reference to the given ModelsUser and assigns it to the User field. +func (o *ModelsUserEmail) SetUser(v ModelsUser) { + o.User = &v +} + +// GetUserId returns the UserId field value if set, zero value otherwise. +func (o *ModelsUserEmail) GetUserId() string { + if o == nil || IsNil(o.UserId) { + var ret string + return ret + } + return *o.UserId +} + +// GetUserIdOk returns a tuple with the UserId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ModelsUserEmail) GetUserIdOk() (*string, bool) { + if o == nil || IsNil(o.UserId) { + return nil, false + } + return o.UserId, true +} + +// HasUserId returns a boolean if a field has been set. +func (o *ModelsUserEmail) HasUserId() bool { + if o != nil && !IsNil(o.UserId) { + return true + } + + return false +} + +// SetUserId gets a reference to the given string and assigns it to the UserId field. +func (o *ModelsUserEmail) SetUserId(v string) { + o.UserId = &v +} + +func (o ModelsUserEmail) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ModelsUserEmail) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CreatedAt) { + toSerialize["created_at"] = o.CreatedAt + } + if !IsNil(o.Email) { + toSerialize["email"] = o.Email + } + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.IsPrimary) { + toSerialize["is_primary"] = o.IsPrimary + } + if !IsNil(o.IsVerified) { + toSerialize["is_verified"] = o.IsVerified + } + if !IsNil(o.UpdatedAt) { + toSerialize["updated_at"] = o.UpdatedAt + } + if !IsNil(o.User) { + toSerialize["user"] = o.User + } + if !IsNil(o.UserId) { + toSerialize["user_id"] = o.UserId + } + return toSerialize, nil +} + +type NullableModelsUserEmail struct { + value *ModelsUserEmail + isSet bool +} + +func (v NullableModelsUserEmail) Get() *ModelsUserEmail { + return v.value +} + +func (v *NullableModelsUserEmail) Set(val *ModelsUserEmail) { + v.value = val + v.isSet = true +} + +func (v NullableModelsUserEmail) IsSet() bool { + return v.isSet +} + +func (v *NullableModelsUserEmail) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableModelsUserEmail(val *ModelsUserEmail) *NullableModelsUserEmail { + return &NullableModelsUserEmail{value: val, isSet: true} +} + +func (v NullableModelsUserEmail) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableModelsUserEmail) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/model_utils_error_response.go b/sdk/go/model_utils_error_response.go new file mode 100644 index 0000000..b1bfa6f --- /dev/null +++ b/sdk/go/model_utils_error_response.go @@ -0,0 +1,162 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "encoding/json" +) + +// checks if the UtilsErrorResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UtilsErrorResponse{} + +// UtilsErrorResponse struct for UtilsErrorResponse +type UtilsErrorResponse struct { + // A machine-readable error code, e.g. \"validation_error\" example: validation_error + Code *string `json:"code,omitempty"` + // Human-readable message example: slug is required + Message *string `json:"message,omitempty"` +} + +// NewUtilsErrorResponse instantiates a new UtilsErrorResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUtilsErrorResponse() *UtilsErrorResponse { + this := UtilsErrorResponse{} + return &this +} + +// NewUtilsErrorResponseWithDefaults instantiates a new UtilsErrorResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUtilsErrorResponseWithDefaults() *UtilsErrorResponse { + this := UtilsErrorResponse{} + return &this +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *UtilsErrorResponse) GetCode() string { + if o == nil || IsNil(o.Code) { + var ret string + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UtilsErrorResponse) GetCodeOk() (*string, bool) { + if o == nil || IsNil(o.Code) { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *UtilsErrorResponse) HasCode() bool { + if o != nil && !IsNil(o.Code) { + return true + } + + return false +} + +// SetCode gets a reference to the given string and assigns it to the Code field. +func (o *UtilsErrorResponse) SetCode(v string) { + o.Code = &v +} + +// GetMessage returns the Message field value if set, zero value otherwise. +func (o *UtilsErrorResponse) GetMessage() string { + if o == nil || IsNil(o.Message) { + var ret string + return ret + } + return *o.Message +} + +// GetMessageOk returns a tuple with the Message field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UtilsErrorResponse) GetMessageOk() (*string, bool) { + if o == nil || IsNil(o.Message) { + return nil, false + } + return o.Message, true +} + +// HasMessage returns a boolean if a field has been set. +func (o *UtilsErrorResponse) HasMessage() bool { + if o != nil && !IsNil(o.Message) { + return true + } + + return false +} + +// SetMessage gets a reference to the given string and assigns it to the Message field. +func (o *UtilsErrorResponse) SetMessage(v string) { + o.Message = &v +} + +func (o UtilsErrorResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UtilsErrorResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Code) { + toSerialize["code"] = o.Code + } + if !IsNil(o.Message) { + toSerialize["message"] = o.Message + } + return toSerialize, nil +} + +type NullableUtilsErrorResponse struct { + value *UtilsErrorResponse + isSet bool +} + +func (v NullableUtilsErrorResponse) Get() *UtilsErrorResponse { + return v.value +} + +func (v *NullableUtilsErrorResponse) Set(val *UtilsErrorResponse) { + v.value = val + v.isSet = true +} + +func (v NullableUtilsErrorResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableUtilsErrorResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUtilsErrorResponse(val *UtilsErrorResponse) *NullableUtilsErrorResponse { + return &NullableUtilsErrorResponse{value: val, isSet: true} +} + +func (v NullableUtilsErrorResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUtilsErrorResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/sdk/go/response.go b/sdk/go/response.go new file mode 100644 index 0000000..5d86157 --- /dev/null +++ b/sdk/go/response.go @@ -0,0 +1,47 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "net/http" +) + +// APIResponse stores the API response returned by the server. +type APIResponse struct { + *http.Response `json:"-"` + Message string `json:"message,omitempty"` + // Operation is the name of the OpenAPI operation. + Operation string `json:"operation,omitempty"` + // RequestURL is the request URL. This value is always available, even if the + // embedded *http.Response is nil. + RequestURL string `json:"url,omitempty"` + // Method is the HTTP method used for the request. This value is always + // available, even if the embedded *http.Response is nil. + Method string `json:"method,omitempty"` + // Payload holds the contents of the response body (which may be nil or empty). + // This is provided here as the raw response.Body() reader will have already + // been drained. + Payload []byte `json:"-"` +} + +// NewAPIResponse returns a new APIResponse object. +func NewAPIResponse(r *http.Response) *APIResponse { + + response := &APIResponse{Response: r} + return response +} + +// NewAPIResponseWithError returns a new APIResponse object with the provided error message. +func NewAPIResponseWithError(errorMessage string) *APIResponse { + + response := &APIResponse{Message: errorMessage} + return response +} diff --git a/sdk/go/test/api_auth_test.go b/sdk/go/test/api_auth_test.go new file mode 100644 index 0000000..e7b041a --- /dev/null +++ b/sdk/go/test/api_auth_test.go @@ -0,0 +1,37 @@ +/* +AutoGlue API + +Testing AuthAPIService + +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); + +package autoglue + +import ( + "context" + openapiclient "github.com/glueops/autoglue-sdk" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_autoglue_AuthAPIService(t *testing.T) { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + + t.Run("Test AuthAPIService GetJWKS", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.AuthAPI.GetJWKS(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + +} diff --git a/sdk/go/test/api_me_api_keys_test.go b/sdk/go/test/api_me_api_keys_test.go new file mode 100644 index 0000000..050b7d5 --- /dev/null +++ b/sdk/go/test/api_me_api_keys_test.go @@ -0,0 +1,62 @@ +/* +AutoGlue API + +Testing MeAPIKeysAPIService + +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); + +package autoglue + +import ( + "context" + openapiclient "github.com/glueops/autoglue-sdk" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_autoglue_MeAPIKeysAPIService(t *testing.T) { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + + t.Run("Test MeAPIKeysAPIService CreateUserAPIKey", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.MeAPIKeysAPI.CreateUserAPIKey(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test MeAPIKeysAPIService DeleteUserAPIKey", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + httpRes, err := apiClient.MeAPIKeysAPI.DeleteUserAPIKey(context.Background(), id).Execute() + + require.Nil(t, err) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test MeAPIKeysAPIService ListUserAPIKeys", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.MeAPIKeysAPI.ListUserAPIKeys(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + +} diff --git a/sdk/go/test/api_me_test.go b/sdk/go/test/api_me_test.go new file mode 100644 index 0000000..f347da1 --- /dev/null +++ b/sdk/go/test/api_me_test.go @@ -0,0 +1,37 @@ +/* +AutoGlue API + +Testing MeAPIService + +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); + +package autoglue + +import ( + "context" + openapiclient "github.com/glueops/autoglue-sdk" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_autoglue_MeAPIService(t *testing.T) { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + + t.Run("Test MeAPIService GetMe", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.MeAPI.GetMe(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + +} diff --git a/sdk/go/test/api_orgs_test.go b/sdk/go/test/api_orgs_test.go new file mode 100644 index 0000000..4a49177 --- /dev/null +++ b/sdk/go/test/api_orgs_test.go @@ -0,0 +1,49 @@ +/* +AutoGlue API + +Testing OrgsAPIService + +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); + +package autoglue + +import ( + "context" + openapiclient "github.com/glueops/autoglue-sdk" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_autoglue_OrgsAPIService(t *testing.T) { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + + t.Run("Test OrgsAPIService CreateOrg", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.OrgsAPI.CreateOrg(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test OrgsAPIService ListMyOrgs", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.OrgsAPI.ListMyOrgs(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + +} diff --git a/sdk/go/test/api_servers_test.go b/sdk/go/test/api_servers_test.go new file mode 100644 index 0000000..ec84831 --- /dev/null +++ b/sdk/go/test/api_servers_test.go @@ -0,0 +1,91 @@ +/* +AutoGlue API + +Testing ServersAPIService + +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); + +package autoglue + +import ( + "context" + openapiclient "github.com/glueops/autoglue-sdk" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_autoglue_ServersAPIService(t *testing.T) { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + + t.Run("Test ServersAPIService CreateServer", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.ServersAPI.CreateServer(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test ServersAPIService DeleteServer", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.ServersAPI.DeleteServer(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test ServersAPIService GetServer", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.ServersAPI.GetServer(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test ServersAPIService ListServers", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.ServersAPI.ListServers(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test ServersAPIService UpdateServer", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.ServersAPI.UpdateServer(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + +} diff --git a/sdk/go/test/api_ssh_test.go b/sdk/go/test/api_ssh_test.go new file mode 100644 index 0000000..f2b3c74 --- /dev/null +++ b/sdk/go/test/api_ssh_test.go @@ -0,0 +1,91 @@ +/* +AutoGlue API + +Testing SshAPIService + +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); + +package autoglue + +import ( + "context" + openapiclient "github.com/glueops/autoglue-sdk" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_autoglue_SshAPIService(t *testing.T) { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + + t.Run("Test SshAPIService CreateSSHKey", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.SshAPI.CreateSSHKey(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test SshAPIService DeleteSSHKey", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.SshAPI.DeleteSSHKey(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test SshAPIService DownloadSSHKey", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.SshAPI.DownloadSSHKey(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test SshAPIService GetSSHKey", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.SshAPI.GetSSHKey(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test SshAPIService ListPublicSshKeys", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.SshAPI.ListPublicSshKeys(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + +} diff --git a/sdk/go/test/api_taints_test.go b/sdk/go/test/api_taints_test.go new file mode 100644 index 0000000..55a6de1 --- /dev/null +++ b/sdk/go/test/api_taints_test.go @@ -0,0 +1,91 @@ +/* +AutoGlue API + +Testing TaintsAPIService + +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); + +package autoglue + +import ( + "context" + openapiclient "github.com/glueops/autoglue-sdk" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_autoglue_TaintsAPIService(t *testing.T) { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + + t.Run("Test TaintsAPIService CreateTaint", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.TaintsAPI.CreateTaint(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test TaintsAPIService DeleteTaint", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.TaintsAPI.DeleteTaint(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test TaintsAPIService GetTaint", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.TaintsAPI.GetTaint(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test TaintsAPIService ListTaints", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.TaintsAPI.ListTaints(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test TaintsAPIService UpdateTaint", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var id string + + resp, httpRes, err := apiClient.TaintsAPI.UpdateTaint(context.Background(), id).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + +} diff --git a/sdk/go/utils.go b/sdk/go/utils.go new file mode 100644 index 0000000..e6c2711 --- /dev/null +++ b/sdk/go/utils.go @@ -0,0 +1,361 @@ +/* +AutoGlue API + +API for managing K3s clusters across cloud providers + +API version: 1.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package autoglue + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "time" +) + +// PtrBool is a helper routine that returns a pointer to given boolean value. +func PtrBool(v bool) *bool { return &v } + +// PtrInt is a helper routine that returns a pointer to given integer value. +func PtrInt(v int) *int { return &v } + +// PtrInt32 is a helper routine that returns a pointer to given integer value. +func PtrInt32(v int32) *int32 { return &v } + +// PtrInt64 is a helper routine that returns a pointer to given integer value. +func PtrInt64(v int64) *int64 { return &v } + +// PtrFloat32 is a helper routine that returns a pointer to given float value. +func PtrFloat32(v float32) *float32 { return &v } + +// PtrFloat64 is a helper routine that returns a pointer to given float value. +func PtrFloat64(v float64) *float64 { return &v } + +// PtrString is a helper routine that returns a pointer to given string value. +func PtrString(v string) *string { return &v } + +// PtrTime is helper routine that returns a pointer to given Time value. +func PtrTime(v time.Time) *time.Time { return &v } + +type NullableBool struct { + value *bool + isSet bool +} + +func (v NullableBool) Get() *bool { + return v.value +} + +func (v *NullableBool) Set(val *bool) { + v.value = val + v.isSet = true +} + +func (v NullableBool) IsSet() bool { + return v.isSet +} + +func (v *NullableBool) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableBool(val *bool) *NullableBool { + return &NullableBool{value: val, isSet: true} +} + +func (v NullableBool) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableBool) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt struct { + value *int + isSet bool +} + +func (v NullableInt) Get() *int { + return v.value +} + +func (v *NullableInt) Set(val *int) { + v.value = val + v.isSet = true +} + +func (v NullableInt) IsSet() bool { + return v.isSet +} + +func (v *NullableInt) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt(val *int) *NullableInt { + return &NullableInt{value: val, isSet: true} +} + +func (v NullableInt) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt32 struct { + value *int32 + isSet bool +} + +func (v NullableInt32) Get() *int32 { + return v.value +} + +func (v *NullableInt32) Set(val *int32) { + v.value = val + v.isSet = true +} + +func (v NullableInt32) IsSet() bool { + return v.isSet +} + +func (v *NullableInt32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt32(val *int32) *NullableInt32 { + return &NullableInt32{value: val, isSet: true} +} + +func (v NullableInt32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt64 struct { + value *int64 + isSet bool +} + +func (v NullableInt64) Get() *int64 { + return v.value +} + +func (v *NullableInt64) Set(val *int64) { + v.value = val + v.isSet = true +} + +func (v NullableInt64) IsSet() bool { + return v.isSet +} + +func (v *NullableInt64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt64(val *int64) *NullableInt64 { + return &NullableInt64{value: val, isSet: true} +} + +func (v NullableInt64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableFloat32 struct { + value *float32 + isSet bool +} + +func (v NullableFloat32) Get() *float32 { + return v.value +} + +func (v *NullableFloat32) Set(val *float32) { + v.value = val + v.isSet = true +} + +func (v NullableFloat32) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat32(val *float32) *NullableFloat32 { + return &NullableFloat32{value: val, isSet: true} +} + +func (v NullableFloat32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableFloat64 struct { + value *float64 + isSet bool +} + +func (v NullableFloat64) Get() *float64 { + return v.value +} + +func (v *NullableFloat64) Set(val *float64) { + v.value = val + v.isSet = true +} + +func (v NullableFloat64) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat64(val *float64) *NullableFloat64 { + return &NullableFloat64{value: val, isSet: true} +} + +func (v NullableFloat64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableString struct { + value *string + isSet bool +} + +func (v NullableString) Get() *string { + return v.value +} + +func (v *NullableString) Set(val *string) { + v.value = val + v.isSet = true +} + +func (v NullableString) IsSet() bool { + return v.isSet +} + +func (v *NullableString) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableString(val *string) *NullableString { + return &NullableString{value: val, isSet: true} +} + +func (v NullableString) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableString) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableTime struct { + value *time.Time + isSet bool +} + +func (v NullableTime) Get() *time.Time { + return v.value +} + +func (v *NullableTime) Set(val *time.Time) { + v.value = val + v.isSet = true +} + +func (v NullableTime) IsSet() bool { + return v.isSet +} + +func (v *NullableTime) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableTime(val *time.Time) *NullableTime { + return &NullableTime{value: val, isSet: true} +} + +func (v NullableTime) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableTime) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +// IsNil checks if an input is nil +func IsNil(i interface{}) bool { + if i == nil { + return true + } + switch reflect.TypeOf(i).Kind() { + case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.UnsafePointer, reflect.Interface, reflect.Slice: + return reflect.ValueOf(i).IsNil() + case reflect.Array: + return reflect.ValueOf(i).IsZero() + } + return false +} + +type MappedNullable interface { + ToMap() (map[string]interface{}, error) +} + +// A wrapper for strict JSON decoding +func newStrictDecoder(data []byte) *json.Decoder { + dec := json.NewDecoder(bytes.NewBuffer(data)) + dec.DisallowUnknownFields() + return dec +} + +// Prevent trying to import "fmt" +func reportError(format string, a ...interface{}) error { + return fmt.Errorf(format, a...) +} diff --git a/sdk/ts/.gitignore b/sdk/ts/.gitignore new file mode 100644 index 0000000..149b576 --- /dev/null +++ b/sdk/ts/.gitignore @@ -0,0 +1,4 @@ +wwwroot/*.js +node_modules +typings +dist diff --git a/sdk/ts/.npmignore b/sdk/ts/.npmignore new file mode 100644 index 0000000..42061c0 --- /dev/null +++ b/sdk/ts/.npmignore @@ -0,0 +1 @@ +README.md \ No newline at end of file diff --git a/sdk/ts/.openapi-generator-ignore b/sdk/ts/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/sdk/ts/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/sdk/ts/.openapi-generator/FILES b/sdk/ts/.openapi-generator/FILES new file mode 100644 index 0000000..743d966 --- /dev/null +++ b/sdk/ts/.openapi-generator/FILES @@ -0,0 +1,85 @@ +.gitignore +.npmignore +.openapi-generator-ignore +README.md +docs/AuthApi.md +docs/DtoAuthStartResponse.md +docs/DtoCreateSSHRequest.md +docs/DtoCreateServerRequest.md +docs/DtoCreateTaintRequest.md +docs/DtoJWK.md +docs/DtoJWKS.md +docs/DtoLogoutRequest.md +docs/DtoRefreshRequest.md +docs/DtoServerResponse.md +docs/DtoSshResponse.md +docs/DtoSshRevealResponse.md +docs/DtoTaintResponse.md +docs/DtoTokenPair.md +docs/DtoUpdateServerRequest.md +docs/DtoUpdateTaintRequest.md +docs/HandlersCreateUserKeyRequest.md +docs/HandlersMeResponse.md +docs/HandlersMemberOut.md +docs/HandlersMemberUpsertReq.md +docs/HandlersOrgCreateReq.md +docs/HandlersOrgKeyCreateReq.md +docs/HandlersOrgKeyCreateResp.md +docs/HandlersOrgUpdateReq.md +docs/HandlersUpdateMeRequest.md +docs/HandlersUserAPIKeyOut.md +docs/MeAPIKeysApi.md +docs/MeApi.md +docs/ModelsAPIKey.md +docs/ModelsOrganization.md +docs/ModelsUser.md +docs/ModelsUserEmail.md +docs/OrgsApi.md +docs/ServersApi.md +docs/SshApi.md +docs/TaintsApi.md +docs/UtilsErrorResponse.md +package.json +src/apis/AuthApi.ts +src/apis/MeAPIKeysApi.ts +src/apis/MeApi.ts +src/apis/OrgsApi.ts +src/apis/ServersApi.ts +src/apis/SshApi.ts +src/apis/TaintsApi.ts +src/apis/index.ts +src/index.ts +src/models/DtoAuthStartResponse.ts +src/models/DtoCreateSSHRequest.ts +src/models/DtoCreateServerRequest.ts +src/models/DtoCreateTaintRequest.ts +src/models/DtoJWK.ts +src/models/DtoJWKS.ts +src/models/DtoLogoutRequest.ts +src/models/DtoRefreshRequest.ts +src/models/DtoServerResponse.ts +src/models/DtoSshResponse.ts +src/models/DtoSshRevealResponse.ts +src/models/DtoTaintResponse.ts +src/models/DtoTokenPair.ts +src/models/DtoUpdateServerRequest.ts +src/models/DtoUpdateTaintRequest.ts +src/models/HandlersCreateUserKeyRequest.ts +src/models/HandlersMeResponse.ts +src/models/HandlersMemberOut.ts +src/models/HandlersMemberUpsertReq.ts +src/models/HandlersOrgCreateReq.ts +src/models/HandlersOrgKeyCreateReq.ts +src/models/HandlersOrgKeyCreateResp.ts +src/models/HandlersOrgUpdateReq.ts +src/models/HandlersUpdateMeRequest.ts +src/models/HandlersUserAPIKeyOut.ts +src/models/ModelsAPIKey.ts +src/models/ModelsOrganization.ts +src/models/ModelsUser.ts +src/models/ModelsUserEmail.ts +src/models/UtilsErrorResponse.ts +src/models/index.ts +src/runtime.ts +tsconfig.esm.json +tsconfig.json diff --git a/sdk/ts/.openapi-generator/VERSION b/sdk/ts/.openapi-generator/VERSION new file mode 100644 index 0000000..6328c54 --- /dev/null +++ b/sdk/ts/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.17.0 diff --git a/sdk/ts/README.md b/sdk/ts/README.md new file mode 100644 index 0000000..188d4ff --- /dev/null +++ b/sdk/ts/README.md @@ -0,0 +1,196 @@ +# @glueops/autoglue-sdk@0.1.0 + +A TypeScript SDK client for the localhost API. + +## Usage + +First, install the SDK from npm. + +```bash +npm install @glueops/autoglue-sdk --save +``` + +Next, try it out. + +```ts +import { Configuration, AuthApi } from "@glueops/autoglue-sdk"; +import type { AuthCallbackRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const api = new AuthApi(); + + const body = { + // string | google|github + provider: provider_example, + } satisfies AuthCallbackRequest; + + try { + const data = await api.authCallback(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +## Documentation + +### API Endpoints + +All URIs are relative to _http://localhost:8080/api/v1_ + +| Class | Method | HTTP request | Description | +| -------------- | ------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------- | +| _AuthApi_ | [**authCallback**](docs/AuthApi.md#authcallback) | **GET** /auth/{provider}/callback | Handle social login callback | +| _AuthApi_ | [**authStart**](docs/AuthApi.md#authstart) | **POST** /auth/{provider}/start | Begin social login | +| _AuthApi_ | [**getJWKS**](docs/AuthApi.md#getjwks) | **GET** /.well-known/jwks.json | Get JWKS | +| _AuthApi_ | [**logout**](docs/AuthApi.md#logout) | **POST** /auth/logout | Revoke refresh token family (logout everywhere) | +| _AuthApi_ | [**refresh**](docs/AuthApi.md#refresh) | **POST** /auth/refresh | Rotate refresh token | +| _MeApi_ | [**getMe**](docs/MeApi.md#getme) | **GET** /me | Get current user profile | +| _MeApi_ | [**updateMe**](docs/MeApi.md#updateme) | **PATCH** /me | Update current user profile | +| _MeAPIKeysApi_ | [**createUserAPIKey**](docs/MeAPIKeysApi.md#createuserapikey) | **POST** /me/api-keys | Create a new user API key | +| _MeAPIKeysApi_ | [**deleteUserAPIKey**](docs/MeAPIKeysApi.md#deleteuserapikey) | **DELETE** /me/api-keys/{id} | Delete a user API key | +| _MeAPIKeysApi_ | [**listUserAPIKeys**](docs/MeAPIKeysApi.md#listuserapikeys) | **GET** /me/api-keys | List my API keys | +| _OrgsApi_ | [**addOrUpdateMember**](docs/OrgsApi.md#addorupdatemember) | **POST** /orgs/{id}/members | Add or update a member (owner/admin) | +| _OrgsApi_ | [**createOrg**](docs/OrgsApi.md#createorg) | **POST** /orgs | Create organization | +| _OrgsApi_ | [**createOrgKey**](docs/OrgsApi.md#createorgkey) | **POST** /orgs/{id}/api-keys | Create org key/secret pair (owner/admin) | +| _OrgsApi_ | [**deleteOrg**](docs/OrgsApi.md#deleteorg) | **DELETE** /orgs/{id} | Delete organization (owner) | +| _OrgsApi_ | [**deleteOrgKey**](docs/OrgsApi.md#deleteorgkey) | **DELETE** /orgs/{id}/api-keys/{key_id} | Delete org key (owner/admin) | +| _OrgsApi_ | [**getOrg**](docs/OrgsApi.md#getorg) | **GET** /orgs/{id} | Get organization | +| _OrgsApi_ | [**listMembers**](docs/OrgsApi.md#listmembers) | **GET** /orgs/{id}/members | List members in org | +| _OrgsApi_ | [**listMyOrgs**](docs/OrgsApi.md#listmyorgs) | **GET** /orgs | List organizations I belong to | +| _OrgsApi_ | [**listOrgKeys**](docs/OrgsApi.md#listorgkeys) | **GET** /orgs/{id}/api-keys | List org-scoped API keys (no secrets) | +| _OrgsApi_ | [**removeMember**](docs/OrgsApi.md#removemember) | **DELETE** /orgs/{id}/members/{user_id} | Remove a member (owner/admin) | +| _OrgsApi_ | [**updateOrg**](docs/OrgsApi.md#updateorg) | **PATCH** /orgs/{id} | Update organization (owner/admin) | +| _ServersApi_ | [**createServer**](docs/ServersApi.md#createserver) | **POST** /servers | Create server (org scoped) | +| _ServersApi_ | [**deleteServer**](docs/ServersApi.md#deleteserver) | **DELETE** /servers/{id} | Delete server (org scoped) | +| _ServersApi_ | [**getServer**](docs/ServersApi.md#getserver) | **GET** /servers/{id} | Get server by ID (org scoped) | +| _ServersApi_ | [**listServers**](docs/ServersApi.md#listservers) | **GET** /servers | List servers (org scoped) | +| _ServersApi_ | [**updateServer**](docs/ServersApi.md#updateserver) | **PATCH** /servers/{id} | Update server (org scoped) | +| _SshApi_ | [**createSSHKey**](docs/SshApi.md#createsshkey) | **POST** /ssh | Create ssh keypair (org scoped) | +| _SshApi_ | [**deleteSSHKey**](docs/SshApi.md#deletesshkey) | **DELETE** /ssh/{id} | Delete ssh keypair (org scoped) | +| _SshApi_ | [**downloadSSHKey**](docs/SshApi.md#downloadsshkey) | **GET** /ssh/{id}/download | Download ssh key files by ID (org scoped) | +| _SshApi_ | [**getSSHKey**](docs/SshApi.md#getsshkey) | **GET** /ssh/{id} | Get ssh key by ID (org scoped) | +| _SshApi_ | [**listPublicSshKeys**](docs/SshApi.md#listpublicsshkeys) | **GET** /ssh | List ssh keys (org scoped) | +| _TaintsApi_ | [**createTaint**](docs/TaintsApi.md#createtaint) | **POST** /taints | Create node taint (org scoped) | +| _TaintsApi_ | [**deleteTaint**](docs/TaintsApi.md#deletetaint) | **DELETE** /taints/{id} | Delete taint (org scoped) | +| _TaintsApi_ | [**getTaint**](docs/TaintsApi.md#gettaint) | **GET** /taints/{id} | Get node taint by ID (org scoped) | +| _TaintsApi_ | [**listTaints**](docs/TaintsApi.md#listtaints) | **GET** /taints | List node pool taints (org scoped) | +| _TaintsApi_ | [**updateTaint**](docs/TaintsApi.md#updatetaint) | **PATCH** /taints/{id} | Update node taint (org scoped) | + +### Models + +- [DtoAuthStartResponse](docs/DtoAuthStartResponse.md) +- [DtoCreateSSHRequest](docs/DtoCreateSSHRequest.md) +- [DtoCreateServerRequest](docs/DtoCreateServerRequest.md) +- [DtoCreateTaintRequest](docs/DtoCreateTaintRequest.md) +- [DtoJWK](docs/DtoJWK.md) +- [DtoJWKS](docs/DtoJWKS.md) +- [DtoLogoutRequest](docs/DtoLogoutRequest.md) +- [DtoRefreshRequest](docs/DtoRefreshRequest.md) +- [DtoServerResponse](docs/DtoServerResponse.md) +- [DtoSshResponse](docs/DtoSshResponse.md) +- [DtoSshRevealResponse](docs/DtoSshRevealResponse.md) +- [DtoTaintResponse](docs/DtoTaintResponse.md) +- [DtoTokenPair](docs/DtoTokenPair.md) +- [DtoUpdateServerRequest](docs/DtoUpdateServerRequest.md) +- [DtoUpdateTaintRequest](docs/DtoUpdateTaintRequest.md) +- [HandlersCreateUserKeyRequest](docs/HandlersCreateUserKeyRequest.md) +- [HandlersMeResponse](docs/HandlersMeResponse.md) +- [HandlersMemberOut](docs/HandlersMemberOut.md) +- [HandlersMemberUpsertReq](docs/HandlersMemberUpsertReq.md) +- [HandlersOrgCreateReq](docs/HandlersOrgCreateReq.md) +- [HandlersOrgKeyCreateReq](docs/HandlersOrgKeyCreateReq.md) +- [HandlersOrgKeyCreateResp](docs/HandlersOrgKeyCreateResp.md) +- [HandlersOrgUpdateReq](docs/HandlersOrgUpdateReq.md) +- [HandlersUpdateMeRequest](docs/HandlersUpdateMeRequest.md) +- [HandlersUserAPIKeyOut](docs/HandlersUserAPIKeyOut.md) +- [ModelsAPIKey](docs/ModelsAPIKey.md) +- [ModelsOrganization](docs/ModelsOrganization.md) +- [ModelsUser](docs/ModelsUser.md) +- [ModelsUserEmail](docs/ModelsUserEmail.md) +- [UtilsErrorResponse](docs/UtilsErrorResponse.md) + +### Authorization + +Authentication schemes defined for the API: +
+ +#### ApiKeyAuth + +- **Type**: API key +- **API key parameter name**: `X-API-KEY` +- **Location**: HTTP header + + +#### BearerAuth + +- **Type**: API key +- **API key parameter name**: `Authorization` +- **Location**: HTTP header + + +#### OrgKeyAuth + +- **Type**: API key +- **API key parameter name**: `X-ORG-KEY` +- **Location**: HTTP header + + +#### OrgSecretAuth + +- **Type**: API key +- **API key parameter name**: `X-ORG-SECRET` +- **Location**: HTTP header + +## About + +This TypeScript SDK client supports the [Fetch API](https://fetch.spec.whatwg.org/) +and is automatically generated by the +[OpenAPI Generator](https://openapi-generator.tech) project: + +- API version: `1.0` +- Package version: `0.1.0` +- Generator version: `7.17.0` +- Build package: `org.openapitools.codegen.languages.TypeScriptFetchClientCodegen` + +The generated npm module supports the following: + +- Environments + - Node.js + - Webpack + - Browserify +- Language levels + - ES5 - you must have a Promises/A+ library installed + - ES6 +- Module systems + - CommonJS + - ES6 module system + +## Development + +### Building + +To build the TypeScript source code, you need to have Node.js and npm installed. +After cloning the repository, navigate to the project directory and run: + +```bash +npm install +npm run build +``` + +### Publishing + +Once you've built the package, you can publish it to npm: + +```bash +npm publish +``` + +## License + +[]() diff --git a/sdk/ts/docs/AuthApi.md b/sdk/ts/docs/AuthApi.md new file mode 100644 index 0000000..c7a1c76 --- /dev/null +++ b/sdk/ts/docs/AuthApi.md @@ -0,0 +1,314 @@ +# AuthApi + +All URIs are relative to _http://localhost:8080/api/v1_ + +| Method | HTTP request | Description | +| ------------------------------------------- | --------------------------------- | ----------------------------------------------- | +| [**authCallback**](AuthApi.md#authcallback) | **GET** /auth/{provider}/callback | Handle social login callback | +| [**authStart**](AuthApi.md#authstart) | **POST** /auth/{provider}/start | Begin social login | +| [**getJWKS**](AuthApi.md#getjwks) | **GET** /.well-known/jwks.json | Get JWKS | +| [**logout**](AuthApi.md#logout) | **POST** /auth/logout | Revoke refresh token family (logout everywhere) | +| [**refresh**](AuthApi.md#refresh) | **POST** /auth/refresh | Rotate refresh token | + +## authCallback + +> DtoTokenPair authCallback(provider) + +Handle social login callback + +### Example + +```ts +import { Configuration, AuthApi } from "@glueops/autoglue-sdk"; +import type { AuthCallbackRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const api = new AuthApi(); + + const body = { + // string | google|github + provider: provider_example, + } satisfies AuthCallbackRequest; + + try { + const data = await api.authCallback(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ------------ | -------- | ----------- | ------ | ------------------------- | +| **provider** | `string` | google | github | [Defaults to `undefined`] | + +### Return type + +[**DtoTokenPair**](DtoTokenPair.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## authStart + +> DtoAuthStartResponse authStart(provider) + +Begin social login + +Returns provider authorization URL for the frontend to redirect + +### Example + +```ts +import { Configuration, AuthApi } from "@glueops/autoglue-sdk"; +import type { AuthStartRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const api = new AuthApi(); + + const body = { + // string | google|github + provider: provider_example, + } satisfies AuthStartRequest; + + try { + const data = await api.authStart(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ------------ | -------- | ----------- | ------ | ------------------------- | +| **provider** | `string` | google | github | [Defaults to `undefined`] | + +### Return type + +[**DtoAuthStartResponse**](DtoAuthStartResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## getJWKS + +> DtoJWKS getJWKS() + +Get JWKS + +Returns the JSON Web Key Set for token verification + +### Example + +```ts +import { Configuration, AuthApi } from "@glueops/autoglue-sdk"; +import type { GetJWKSRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const api = new AuthApi(); + + try { + const data = await api.getJWKS(); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**DtoJWKS**](DtoJWKS.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## logout + +> logout(body) + +Revoke refresh token family (logout everywhere) + +### Example + +```ts +import { + Configuration, + AuthApi, +} from '@glueops/autoglue-sdk'; +import type { LogoutRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const api = new AuthApi(); + + const body = { + // DtoLogoutRequest | Refresh token + body: ..., + } satisfies LogoutRequest; + + try { + const data = await api.logout(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| -------- | --------------------------------------- | ------------- | ----- | +| **body** | [DtoLogoutRequest](DtoLogoutRequest.md) | Refresh token | | + +### Return type + +`void` (Empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: Not defined + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **204** | No Content | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## refresh + +> DtoTokenPair refresh(body) + +Rotate refresh token + +### Example + +```ts +import { + Configuration, + AuthApi, +} from '@glueops/autoglue-sdk'; +import type { RefreshRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const api = new AuthApi(); + + const body = { + // DtoRefreshRequest | Refresh token + body: ..., + } satisfies RefreshRequest; + + try { + const data = await api.refresh(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| -------- | ----------------------------------------- | ------------- | ----- | +| **body** | [DtoRefreshRequest](DtoRefreshRequest.md) | Refresh token | | + +### Return type + +[**DtoTokenPair**](DtoTokenPair.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoAuthStartResponse.md b/sdk/ts/docs/DtoAuthStartResponse.md new file mode 100644 index 0000000..036366a --- /dev/null +++ b/sdk/ts/docs/DtoAuthStartResponse.md @@ -0,0 +1,30 @@ +# DtoAuthStartResponse + +## Properties + +| Name | Type | +| ---------- | ------ | +| `auth_url` | string | + +## Example + +```typescript +import type { DtoAuthStartResponse } from '@glueops/autoglue-sdk' + +// TODO: Update the object below with actual values +const example = { + "auth_url": https://accounts.google.com/o/oauth2/v2/auth?client_id=..., +} satisfies DtoAuthStartResponse + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoAuthStartResponse +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoCreateSSHRequest.md b/sdk/ts/docs/DtoCreateSSHRequest.md new file mode 100644 index 0000000..6a42f8c --- /dev/null +++ b/sdk/ts/docs/DtoCreateSSHRequest.md @@ -0,0 +1,36 @@ +# DtoCreateSSHRequest + +## Properties + +| Name | Type | +| --------- | ------ | +| `bits` | number | +| `comment` | string | +| `name` | string | +| `type` | string | + +## Example + +```typescript +import type { DtoCreateSSHRequest } from '@glueops/autoglue-sdk' + +// TODO: Update the object below with actual values +const example = { + "bits": null, + "comment": deploy@autoglue, + "name": null, + "type": null, +} satisfies DtoCreateSSHRequest + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoCreateSSHRequest +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoCreateServerRequest.md b/sdk/ts/docs/DtoCreateServerRequest.md new file mode 100644 index 0000000..375cb6d --- /dev/null +++ b/sdk/ts/docs/DtoCreateServerRequest.md @@ -0,0 +1,42 @@ +# DtoCreateServerRequest + +## Properties + +| Name | Type | +| -------------------- | ------ | +| `hostname` | string | +| `private_ip_address` | string | +| `public_ip_address` | string | +| `role` | string | +| `ssh_key_id` | string | +| `ssh_user` | string | +| `status` | string | + +## Example + +```typescript +import type { DtoCreateServerRequest } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + hostname: null, + private_ip_address: null, + public_ip_address: null, + role: master | worker | bastion, + ssh_key_id: null, + ssh_user: null, + status: pending | provisioning | ready | failed, +} satisfies DtoCreateServerRequest; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoCreateServerRequest; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoCreateTaintRequest.md b/sdk/ts/docs/DtoCreateTaintRequest.md new file mode 100644 index 0000000..f0e0011 --- /dev/null +++ b/sdk/ts/docs/DtoCreateTaintRequest.md @@ -0,0 +1,34 @@ +# DtoCreateTaintRequest + +## Properties + +| Name | Type | +| -------- | ------ | +| `effect` | string | +| `key` | string | +| `value` | string | + +## Example + +```typescript +import type { DtoCreateTaintRequest } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + effect: null, + key: null, + value: null, +} satisfies DtoCreateTaintRequest; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoCreateTaintRequest; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoJWK.md b/sdk/ts/docs/DtoJWK.md new file mode 100644 index 0000000..72be330 --- /dev/null +++ b/sdk/ts/docs/DtoJWK.md @@ -0,0 +1,42 @@ +# DtoJWK + +## Properties + +| Name | Type | +| ----- | ------ | +| `alg` | string | +| `e` | string | +| `kid` | string | +| `kty` | string | +| `n` | string | +| `use` | string | +| `x` | string | + +## Example + +```typescript +import type { DtoJWK } from '@glueops/autoglue-sdk' + +// TODO: Update the object below with actual values +const example = { + "alg": RS256, + "e": AQAB, + "kid": 7c6f1d0a-7a98-4e6a-9dbf-6b1af4b9f345, + "kty": RSA, + "n": null, + "use": sig, + "x": null, +} satisfies DtoJWK + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoJWK +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoJWKS.md b/sdk/ts/docs/DtoJWKS.md new file mode 100644 index 0000000..b969b5a --- /dev/null +++ b/sdk/ts/docs/DtoJWKS.md @@ -0,0 +1,30 @@ +# DtoJWKS + +## Properties + +| Name | Type | +| ------ | -------------------------------- | +| `keys` | [Array<DtoJWK>](DtoJWK.md) | + +## Example + +```typescript +import type { DtoJWKS } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + keys: null, +} satisfies DtoJWKS; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoJWKS; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoLogoutRequest.md b/sdk/ts/docs/DtoLogoutRequest.md new file mode 100644 index 0000000..70d806a --- /dev/null +++ b/sdk/ts/docs/DtoLogoutRequest.md @@ -0,0 +1,30 @@ +# DtoLogoutRequest + +## Properties + +| Name | Type | +| --------------- | ------ | +| `refresh_token` | string | + +## Example + +```typescript +import type { DtoLogoutRequest } from '@glueops/autoglue-sdk' + +// TODO: Update the object below with actual values +const example = { + "refresh_token": m0l9o8rT3t0V8d3eFf..., +} satisfies DtoLogoutRequest + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoLogoutRequest +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoRefreshRequest.md b/sdk/ts/docs/DtoRefreshRequest.md new file mode 100644 index 0000000..d3d5b04 --- /dev/null +++ b/sdk/ts/docs/DtoRefreshRequest.md @@ -0,0 +1,30 @@ +# DtoRefreshRequest + +## Properties + +| Name | Type | +| --------------- | ------ | +| `refresh_token` | string | + +## Example + +```typescript +import type { DtoRefreshRequest } from '@glueops/autoglue-sdk' + +// TODO: Update the object below with actual values +const example = { + "refresh_token": m0l9o8rT3t0V8d3eFf..., +} satisfies DtoRefreshRequest + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoRefreshRequest +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoServerResponse.md b/sdk/ts/docs/DtoServerResponse.md new file mode 100644 index 0000000..7932f25 --- /dev/null +++ b/sdk/ts/docs/DtoServerResponse.md @@ -0,0 +1,50 @@ +# DtoServerResponse + +## Properties + +| Name | Type | +| -------------------- | ------ | +| `created_at` | string | +| `hostname` | string | +| `id` | string | +| `organization_id` | string | +| `private_ip_address` | string | +| `public_ip_address` | string | +| `role` | string | +| `ssh_key_id` | string | +| `ssh_user` | string | +| `status` | string | +| `updated_at` | string | + +## Example + +```typescript +import type { DtoServerResponse } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + created_at: null, + hostname: null, + id: null, + organization_id: null, + private_ip_address: null, + public_ip_address: null, + role: null, + ssh_key_id: null, + ssh_user: null, + status: null, + updated_at: null, +} satisfies DtoServerResponse; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoServerResponse; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoSshResponse.md b/sdk/ts/docs/DtoSshResponse.md new file mode 100644 index 0000000..a034b7f --- /dev/null +++ b/sdk/ts/docs/DtoSshResponse.md @@ -0,0 +1,42 @@ +# DtoSshResponse + +## Properties + +| Name | Type | +| ----------------- | ------ | +| `created_at` | string | +| `fingerprint` | string | +| `id` | string | +| `name` | string | +| `organization_id` | string | +| `public_key` | string | +| `updated_at` | string | + +## Example + +```typescript +import type { DtoSshResponse } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + created_at: null, + fingerprint: null, + id: null, + name: null, + organization_id: null, + public_key: null, + updated_at: null, +} satisfies DtoSshResponse; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoSshResponse; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoSshRevealResponse.md b/sdk/ts/docs/DtoSshRevealResponse.md new file mode 100644 index 0000000..1adfc46 --- /dev/null +++ b/sdk/ts/docs/DtoSshRevealResponse.md @@ -0,0 +1,44 @@ +# DtoSshRevealResponse + +## Properties + +| Name | Type | +| ----------------- | ------ | +| `created_at` | string | +| `fingerprint` | string | +| `id` | string | +| `name` | string | +| `organization_id` | string | +| `private_key` | string | +| `public_key` | string | +| `updated_at` | string | + +## Example + +```typescript +import type { DtoSshRevealResponse } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + created_at: null, + fingerprint: null, + id: null, + name: null, + organization_id: null, + private_key: null, + public_key: null, + updated_at: null, +} satisfies DtoSshRevealResponse; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoSshRevealResponse; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoTaintResponse.md b/sdk/ts/docs/DtoTaintResponse.md new file mode 100644 index 0000000..679febf --- /dev/null +++ b/sdk/ts/docs/DtoTaintResponse.md @@ -0,0 +1,36 @@ +# DtoTaintResponse + +## Properties + +| Name | Type | +| -------- | ------ | +| `effect` | string | +| `id` | string | +| `key` | string | +| `value` | string | + +## Example + +```typescript +import type { DtoTaintResponse } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + effect: null, + id: null, + key: null, + value: null, +} satisfies DtoTaintResponse; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoTaintResponse; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoTokenPair.md b/sdk/ts/docs/DtoTokenPair.md new file mode 100644 index 0000000..d3a7c95 --- /dev/null +++ b/sdk/ts/docs/DtoTokenPair.md @@ -0,0 +1,36 @@ +# DtoTokenPair + +## Properties + +| Name | Type | +| --------------- | ------ | +| `access_token` | string | +| `expires_in` | number | +| `refresh_token` | string | +| `token_type` | string | + +## Example + +```typescript +import type { DtoTokenPair } from '@glueops/autoglue-sdk' + +// TODO: Update the object below with actual values +const example = { + "access_token": eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ij..., + "expires_in": 3600, + "refresh_token": m0l9o8rT3t0V8d3eFf...., + "token_type": Bearer, +} satisfies DtoTokenPair + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoTokenPair +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoUpdateServerRequest.md b/sdk/ts/docs/DtoUpdateServerRequest.md new file mode 100644 index 0000000..a851f92 --- /dev/null +++ b/sdk/ts/docs/DtoUpdateServerRequest.md @@ -0,0 +1,42 @@ +# DtoUpdateServerRequest + +## Properties + +| Name | Type | +| -------------------- | ------ | +| `hostname` | string | +| `private_ip_address` | string | +| `public_ip_address` | string | +| `role` | string | +| `ssh_key_id` | string | +| `ssh_user` | string | +| `status` | string | + +## Example + +```typescript +import type { DtoUpdateServerRequest } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + hostname: null, + private_ip_address: null, + public_ip_address: null, + role: master | worker | bastion, + ssh_key_id: null, + ssh_user: null, + status: pending | provisioning | ready | failed, +} satisfies DtoUpdateServerRequest; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoUpdateServerRequest; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/DtoUpdateTaintRequest.md b/sdk/ts/docs/DtoUpdateTaintRequest.md new file mode 100644 index 0000000..8de2857 --- /dev/null +++ b/sdk/ts/docs/DtoUpdateTaintRequest.md @@ -0,0 +1,34 @@ +# DtoUpdateTaintRequest + +## Properties + +| Name | Type | +| -------- | ------ | +| `effect` | string | +| `key` | string | +| `value` | string | + +## Example + +```typescript +import type { DtoUpdateTaintRequest } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + effect: null, + key: null, + value: null, +} satisfies DtoUpdateTaintRequest; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DtoUpdateTaintRequest; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersCreateUserKeyRequest.md b/sdk/ts/docs/HandlersCreateUserKeyRequest.md new file mode 100644 index 0000000..aa2f042 --- /dev/null +++ b/sdk/ts/docs/HandlersCreateUserKeyRequest.md @@ -0,0 +1,32 @@ +# HandlersCreateUserKeyRequest + +## Properties + +| Name | Type | +| ------------------ | ------ | +| `expires_in_hours` | number | +| `name` | string | + +## Example + +```typescript +import type { HandlersCreateUserKeyRequest } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + expires_in_hours: null, + name: null, +} satisfies HandlersCreateUserKeyRequest; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersCreateUserKeyRequest; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersMeResponse.md b/sdk/ts/docs/HandlersMeResponse.md new file mode 100644 index 0000000..33fd95c --- /dev/null +++ b/sdk/ts/docs/HandlersMeResponse.md @@ -0,0 +1,46 @@ +# HandlersMeResponse + +## Properties + +| Name | Type | +| --------------- | -------------------------------------------------------- | +| `avatar_url` | string | +| `created_at` | Date | +| `display_name` | string | +| `emails` | [Array<ModelsUserEmail>](ModelsUserEmail.md) | +| `id` | string | +| `is_disabled` | boolean | +| `organizations` | [Array<ModelsOrganization>](ModelsOrganization.md) | +| `primary_email` | string | +| `updated_at` | Date | + +## Example + +```typescript +import type { HandlersMeResponse } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + avatar_url: null, + created_at: null, + display_name: null, + emails: null, + id: null, + is_disabled: null, + organizations: null, + primary_email: null, + updated_at: null, +} satisfies HandlersMeResponse; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersMeResponse; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersMemberOut.md b/sdk/ts/docs/HandlersMemberOut.md new file mode 100644 index 0000000..69de153 --- /dev/null +++ b/sdk/ts/docs/HandlersMemberOut.md @@ -0,0 +1,34 @@ +# HandlersMemberOut + +## Properties + +| Name | Type | +| --------- | ------ | +| `email` | string | +| `role` | string | +| `user_id` | string | + +## Example + +```typescript +import type { HandlersMemberOut } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + email: null, + role: null, + user_id: null, +} satisfies HandlersMemberOut; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersMemberOut; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersMemberUpsertReq.md b/sdk/ts/docs/HandlersMemberUpsertReq.md new file mode 100644 index 0000000..df0de2f --- /dev/null +++ b/sdk/ts/docs/HandlersMemberUpsertReq.md @@ -0,0 +1,32 @@ +# HandlersMemberUpsertReq + +## Properties + +| Name | Type | +| --------- | ------ | +| `role` | string | +| `user_id` | string | + +## Example + +```typescript +import type { HandlersMemberUpsertReq } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + role: member, + user_id: null, +} satisfies HandlersMemberUpsertReq; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersMemberUpsertReq; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersOrgCreateReq.md b/sdk/ts/docs/HandlersOrgCreateReq.md new file mode 100644 index 0000000..b01d23a --- /dev/null +++ b/sdk/ts/docs/HandlersOrgCreateReq.md @@ -0,0 +1,32 @@ +# HandlersOrgCreateReq + +## Properties + +| Name | Type | +| -------- | ------ | +| `domain` | string | +| `name` | string | + +## Example + +```typescript +import type { HandlersOrgCreateReq } from '@glueops/autoglue-sdk' + +// TODO: Update the object below with actual values +const example = { + "domain": acme.com, + "name": Acme Corp, +} satisfies HandlersOrgCreateReq + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersOrgCreateReq +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersOrgKeyCreateReq.md b/sdk/ts/docs/HandlersOrgKeyCreateReq.md new file mode 100644 index 0000000..b612083 --- /dev/null +++ b/sdk/ts/docs/HandlersOrgKeyCreateReq.md @@ -0,0 +1,32 @@ +# HandlersOrgKeyCreateReq + +## Properties + +| Name | Type | +| ------------------ | ------ | +| `expires_in_hours` | number | +| `name` | string | + +## Example + +```typescript +import type { HandlersOrgKeyCreateReq } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + expires_in_hours: 720, + name: automation - bot, +} satisfies HandlersOrgKeyCreateReq; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersOrgKeyCreateReq; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersOrgKeyCreateResp.md b/sdk/ts/docs/HandlersOrgKeyCreateResp.md new file mode 100644 index 0000000..51321e7 --- /dev/null +++ b/sdk/ts/docs/HandlersOrgKeyCreateResp.md @@ -0,0 +1,42 @@ +# HandlersOrgKeyCreateResp + +## Properties + +| Name | Type | +| ------------ | ------ | +| `created_at` | string | +| `expires_at` | string | +| `id` | string | +| `name` | string | +| `org_key` | string | +| `org_secret` | string | +| `scope` | string | + +## Example + +```typescript +import type { HandlersOrgKeyCreateResp } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + created_at: null, + expires_at: null, + id: null, + name: null, + org_key: null, + org_secret: null, + scope: null, +} satisfies HandlersOrgKeyCreateResp; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersOrgKeyCreateResp; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersOrgUpdateReq.md b/sdk/ts/docs/HandlersOrgUpdateReq.md new file mode 100644 index 0000000..7eb3b58 --- /dev/null +++ b/sdk/ts/docs/HandlersOrgUpdateReq.md @@ -0,0 +1,32 @@ +# HandlersOrgUpdateReq + +## Properties + +| Name | Type | +| -------- | ------ | +| `domain` | string | +| `name` | string | + +## Example + +```typescript +import type { HandlersOrgUpdateReq } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + domain: null, + name: null, +} satisfies HandlersOrgUpdateReq; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersOrgUpdateReq; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersUpdateMeRequest.md b/sdk/ts/docs/HandlersUpdateMeRequest.md new file mode 100644 index 0000000..f5c45a6 --- /dev/null +++ b/sdk/ts/docs/HandlersUpdateMeRequest.md @@ -0,0 +1,30 @@ +# HandlersUpdateMeRequest + +## Properties + +| Name | Type | +| -------------- | ------ | +| `display_name` | string | + +## Example + +```typescript +import type { HandlersUpdateMeRequest } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + display_name: null, +} satisfies HandlersUpdateMeRequest; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersUpdateMeRequest; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/HandlersUserAPIKeyOut.md b/sdk/ts/docs/HandlersUserAPIKeyOut.md new file mode 100644 index 0000000..e245359 --- /dev/null +++ b/sdk/ts/docs/HandlersUserAPIKeyOut.md @@ -0,0 +1,42 @@ +# HandlersUserAPIKeyOut + +## Properties + +| Name | Type | +| -------------- | ------ | +| `created_at` | string | +| `expires_at` | string | +| `id` | string | +| `last_used_at` | string | +| `name` | string | +| `plain` | string | +| `scope` | string | + +## Example + +```typescript +import type { HandlersUserAPIKeyOut } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + created_at: null, + expires_at: null, + id: null, + last_used_at: null, + name: null, + plain: null, + scope: null, +} satisfies HandlersUserAPIKeyOut; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as HandlersUserAPIKeyOut; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/MeAPIKeysApi.md b/sdk/ts/docs/MeAPIKeysApi.md new file mode 100644 index 0000000..734d5a2 --- /dev/null +++ b/sdk/ts/docs/MeAPIKeysApi.md @@ -0,0 +1,203 @@ +# MeAPIKeysApi + +All URIs are relative to _http://localhost:8080/api/v1_ + +| Method | HTTP request | Description | +| -------------------------------------------------------- | ---------------------------- | ------------------------- | +| [**createUserAPIKey**](MeAPIKeysApi.md#createuserapikey) | **POST** /me/api-keys | Create a new user API key | +| [**deleteUserAPIKey**](MeAPIKeysApi.md#deleteuserapikey) | **DELETE** /me/api-keys/{id} | Delete a user API key | +| [**listUserAPIKeys**](MeAPIKeysApi.md#listuserapikeys) | **GET** /me/api-keys | List my API keys | + +## createUserAPIKey + +> HandlersUserAPIKeyOut createUserAPIKey(body) + +Create a new user API key + +Returns the plaintext key once. Store it securely on the client side. + +### Example + +```ts +import { + Configuration, + MeAPIKeysApi, +} from '@glueops/autoglue-sdk'; +import type { CreateUserAPIKeyRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: ApiKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new MeAPIKeysApi(config); + + const body = { + // HandlersCreateUserKeyRequest | Key options + body: ..., + } satisfies CreateUserAPIKeyRequest; + + try { + const data = await api.createUserAPIKey(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| -------- | --------------------------------------------------------------- | ----------- | ----- | +| **body** | [HandlersCreateUserKeyRequest](HandlersCreateUserKeyRequest.md) | Key options | | + +### Return type + +[**HandlersUserAPIKeyOut**](HandlersUserAPIKeyOut.md) + +### Authorization + +[ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **201** | Created | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## deleteUserAPIKey + +> deleteUserAPIKey(id) + +Delete a user API key + +### Example + +```ts +import { Configuration, MeAPIKeysApi } from "@glueops/autoglue-sdk"; +import type { DeleteUserAPIKeyRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new MeAPIKeysApi(config); + + const body = { + // string | Key ID (UUID) + id: id_example, + } satisfies DeleteUserAPIKeyRequest; + + try { + const data = await api.deleteUserAPIKey(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ------ | -------- | ------------- | ------------------------- | +| **id** | `string` | Key ID (UUID) | [Defaults to `undefined`] | + +### Return type + +`void` (Empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: Not defined + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **204** | No Content | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## listUserAPIKeys + +> Array<HandlersUserAPIKeyOut> listUserAPIKeys() + +List my API keys + +### Example + +```ts +import { Configuration, MeAPIKeysApi } from "@glueops/autoglue-sdk"; +import type { ListUserAPIKeysRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: ApiKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new MeAPIKeysApi(config); + + try { + const data = await api.listUserAPIKeys(); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**Array<HandlersUserAPIKeyOut>**](HandlersUserAPIKeyOut.md) + +### Authorization + +[ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/MeApi.md b/sdk/ts/docs/MeApi.md new file mode 100644 index 0000000..a649361 --- /dev/null +++ b/sdk/ts/docs/MeApi.md @@ -0,0 +1,136 @@ +# MeApi + +All URIs are relative to _http://localhost:8080/api/v1_ + +| Method | HTTP request | Description | +| --------------------------------- | ------------- | --------------------------- | +| [**getMe**](MeApi.md#getme) | **GET** /me | Get current user profile | +| [**updateMe**](MeApi.md#updateme) | **PATCH** /me | Update current user profile | + +## getMe + +> HandlersMeResponse getMe() + +Get current user profile + +### Example + +```ts +import { Configuration, MeApi } from "@glueops/autoglue-sdk"; +import type { GetMeRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: ApiKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new MeApi(config); + + try { + const data = await api.getMe(); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**HandlersMeResponse**](HandlersMeResponse.md) + +### Authorization + +[ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## updateMe + +> ModelsUser updateMe(body) + +Update current user profile + +### Example + +```ts +import { + Configuration, + MeApi, +} from '@glueops/autoglue-sdk'; +import type { UpdateMeRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: ApiKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new MeApi(config); + + const body = { + // HandlersUpdateMeRequest | Patch profile + body: ..., + } satisfies UpdateMeRequest; + + try { + const data = await api.updateMe(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| -------- | ----------------------------------------------------- | ------------- | ----- | +| **body** | [HandlersUpdateMeRequest](HandlersUpdateMeRequest.md) | Patch profile | | + +### Return type + +[**ModelsUser**](ModelsUser.md) + +### Authorization + +[ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------- | ---------------- | +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/ModelsAPIKey.md b/sdk/ts/docs/ModelsAPIKey.md new file mode 100644 index 0000000..e8a8ef9 --- /dev/null +++ b/sdk/ts/docs/ModelsAPIKey.md @@ -0,0 +1,50 @@ +# ModelsAPIKey + +## Properties + +| Name | Type | +| -------------- | ------- | +| `created_at` | Date | +| `expires_at` | Date | +| `id` | string | +| `last_used_at` | Date | +| `name` | string | +| `org_id` | string | +| `prefix` | string | +| `revoked` | boolean | +| `scope` | string | +| `updated_at` | Date | +| `user_id` | string | + +## Example + +```typescript +import type { ModelsAPIKey } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + created_at: null, + expires_at: null, + id: null, + last_used_at: null, + name: null, + org_id: null, + prefix: null, + revoked: null, + scope: null, + updated_at: null, + user_id: null, +} satisfies ModelsAPIKey; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as ModelsAPIKey; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/ModelsOrganization.md b/sdk/ts/docs/ModelsOrganization.md new file mode 100644 index 0000000..ef4c802 --- /dev/null +++ b/sdk/ts/docs/ModelsOrganization.md @@ -0,0 +1,38 @@ +# ModelsOrganization + +## Properties + +| Name | Type | +| ------------ | ------ | +| `created_at` | Date | +| `domain` | string | +| `id` | string | +| `name` | string | +| `updated_at` | Date | + +## Example + +```typescript +import type { ModelsOrganization } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + created_at: null, + domain: null, + id: null, + name: null, + updated_at: null, +} satisfies ModelsOrganization; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as ModelsOrganization; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/ModelsUser.md b/sdk/ts/docs/ModelsUser.md new file mode 100644 index 0000000..93e00d0 --- /dev/null +++ b/sdk/ts/docs/ModelsUser.md @@ -0,0 +1,42 @@ +# ModelsUser + +## Properties + +| Name | Type | +| --------------- | ------- | +| `avatar_url` | string | +| `created_at` | Date | +| `display_name` | string | +| `id` | string | +| `is_disabled` | boolean | +| `primary_email` | string | +| `updated_at` | Date | + +## Example + +```typescript +import type { ModelsUser } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + avatar_url: null, + created_at: null, + display_name: null, + id: null, + is_disabled: null, + primary_email: null, + updated_at: null, +} satisfies ModelsUser; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as ModelsUser; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/ModelsUserEmail.md b/sdk/ts/docs/ModelsUserEmail.md new file mode 100644 index 0000000..53e8b43 --- /dev/null +++ b/sdk/ts/docs/ModelsUserEmail.md @@ -0,0 +1,44 @@ +# ModelsUserEmail + +## Properties + +| Name | Type | +| ------------- | --------------------------- | +| `created_at` | Date | +| `email` | string | +| `id` | string | +| `is_primary` | boolean | +| `is_verified` | boolean | +| `updated_at` | Date | +| `user` | [ModelsUser](ModelsUser.md) | +| `user_id` | string | + +## Example + +```typescript +import type { ModelsUserEmail } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + created_at: null, + email: null, + id: null, + is_primary: null, + is_verified: null, + updated_at: null, + user: null, + user_id: null, +} satisfies ModelsUserEmail; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as ModelsUserEmail; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/OrgsApi.md b/sdk/ts/docs/OrgsApi.md new file mode 100644 index 0000000..acacf5c --- /dev/null +++ b/sdk/ts/docs/OrgsApi.md @@ -0,0 +1,757 @@ +# OrgsApi + +All URIs are relative to _http://localhost:8080/api/v1_ + +| Method | HTTP request | Description | +| ----------------------------------------------------- | --------------------------------------- | ---------------------------------------- | +| [**addOrUpdateMember**](OrgsApi.md#addorupdatemember) | **POST** /orgs/{id}/members | Add or update a member (owner/admin) | +| [**createOrg**](OrgsApi.md#createorg) | **POST** /orgs | Create organization | +| [**createOrgKey**](OrgsApi.md#createorgkey) | **POST** /orgs/{id}/api-keys | Create org key/secret pair (owner/admin) | +| [**deleteOrg**](OrgsApi.md#deleteorg) | **DELETE** /orgs/{id} | Delete organization (owner) | +| [**deleteOrgKey**](OrgsApi.md#deleteorgkey) | **DELETE** /orgs/{id}/api-keys/{key_id} | Delete org key (owner/admin) | +| [**getOrg**](OrgsApi.md#getorg) | **GET** /orgs/{id} | Get organization | +| [**listMembers**](OrgsApi.md#listmembers) | **GET** /orgs/{id}/members | List members in org | +| [**listMyOrgs**](OrgsApi.md#listmyorgs) | **GET** /orgs | List organizations I belong to | +| [**listOrgKeys**](OrgsApi.md#listorgkeys) | **GET** /orgs/{id}/api-keys | List org-scoped API keys (no secrets) | +| [**removeMember**](OrgsApi.md#removemember) | **DELETE** /orgs/{id}/members/{user_id} | Remove a member (owner/admin) | +| [**updateOrg**](OrgsApi.md#updateorg) | **PATCH** /orgs/{id} | Update organization (owner/admin) | + +## addOrUpdateMember + +> HandlersMemberOut addOrUpdateMember(id, body) + +Add or update a member (owner/admin) + +### Example + +```ts +import { + Configuration, + OrgsApi, +} from '@glueops/autoglue-sdk'; +import type { AddOrUpdateMemberRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + // HandlersMemberUpsertReq | User & role + body: ..., + } satisfies AddOrUpdateMemberRequest; + + try { + const data = await api.addOrUpdateMember(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| -------- | ----------------------------------------------------- | --------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | +| **body** | [HandlersMemberUpsertReq](HandlersMemberUpsertReq.md) | User & role | | + +### Return type + +[**HandlersMemberOut**](HandlersMemberOut.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## createOrg + +> ModelsOrganization createOrg(body) + +Create organization + +### Example + +```ts +import { + Configuration, + OrgsApi, +} from '@glueops/autoglue-sdk'; +import type { CreateOrgRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // HandlersOrgCreateReq | Org payload + body: ..., + } satisfies CreateOrgRequest; + + try { + const data = await api.createOrg(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| -------- | ----------------------------------------------- | ----------- | ----- | +| **body** | [HandlersOrgCreateReq](HandlersOrgCreateReq.md) | Org payload | | + +### Return type + +[**ModelsOrganization**](ModelsOrganization.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **201** | Created | - | +| **400** | Bad Request | - | +| **401** | Unauthorized | - | +| **409** | Conflict | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## createOrgKey + +> HandlersOrgKeyCreateResp createOrgKey(id, body) + +Create org key/secret pair (owner/admin) + +### Example + +```ts +import { + Configuration, + OrgsApi, +} from '@glueops/autoglue-sdk'; +import type { CreateOrgKeyRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + // HandlersOrgKeyCreateReq | Key name + optional expiry + body: ..., + } satisfies CreateOrgKeyRequest; + + try { + const data = await api.createOrgKey(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| -------- | ----------------------------------------------------- | -------------------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | +| **body** | [HandlersOrgKeyCreateReq](HandlersOrgKeyCreateReq.md) | Key name + optional expiry | | + +### Return type + +[**HandlersOrgKeyCreateResp**](HandlersOrgKeyCreateResp.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **201** | Created | - | +| **401** | Unauthorized | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## deleteOrg + +> deleteOrg(id) + +Delete organization (owner) + +### Example + +```ts +import { Configuration, OrgsApi } from "@glueops/autoglue-sdk"; +import type { DeleteOrgRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + } satisfies DeleteOrgRequest; + + try { + const data = await api.deleteOrg(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ------ | -------- | ------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | + +### Return type + +`void` (Empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **204** | Deleted | - | +| **401** | Unauthorized | - | +| **404** | Not Found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## deleteOrgKey + +> deleteOrgKey(id, keyId) + +Delete org key (owner/admin) + +### Example + +```ts +import { Configuration, OrgsApi } from "@glueops/autoglue-sdk"; +import type { DeleteOrgKeyRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + // string | Key ID (UUID) + keyId: keyId_example, + } satisfies DeleteOrgKeyRequest; + + try { + const data = await api.deleteOrgKey(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| --------- | -------- | ------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | +| **keyId** | `string` | Key ID (UUID) | [Defaults to `undefined`] | + +### Return type + +`void` (Empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **204** | Deleted | - | +| **401** | Unauthorized | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## getOrg + +> ModelsOrganization getOrg(id) + +Get organization + +### Example + +```ts +import { Configuration, OrgsApi } from "@glueops/autoglue-sdk"; +import type { GetOrgRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + } satisfies GetOrgRequest; + + try { + const data = await api.getOrg(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ------ | -------- | ------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | + +### Return type + +[**ModelsOrganization**](ModelsOrganization.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | +| **404** | Not Found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## listMembers + +> Array<HandlersMemberOut> listMembers(id) + +List members in org + +### Example + +```ts +import { Configuration, OrgsApi } from "@glueops/autoglue-sdk"; +import type { ListMembersRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + } satisfies ListMembersRequest; + + try { + const data = await api.listMembers(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ------ | -------- | ------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | + +### Return type + +[**Array<HandlersMemberOut>**](HandlersMemberOut.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## listMyOrgs + +> Array<ModelsOrganization> listMyOrgs() + +List organizations I belong to + +### Example + +```ts +import { Configuration, OrgsApi } from "@glueops/autoglue-sdk"; +import type { ListMyOrgsRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + try { + const data = await api.listMyOrgs(); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**Array<ModelsOrganization>**](ModelsOrganization.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## listOrgKeys + +> Array<ModelsAPIKey> listOrgKeys(id) + +List org-scoped API keys (no secrets) + +### Example + +```ts +import { Configuration, OrgsApi } from "@glueops/autoglue-sdk"; +import type { ListOrgKeysRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + } satisfies ListOrgKeysRequest; + + try { + const data = await api.listOrgKeys(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ------ | -------- | ------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | + +### Return type + +[**Array<ModelsAPIKey>**](ModelsAPIKey.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## removeMember + +> removeMember(id, userId) + +Remove a member (owner/admin) + +### Example + +```ts +import { Configuration, OrgsApi } from "@glueops/autoglue-sdk"; +import type { RemoveMemberRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + // string | User ID (UUID) + userId: userId_example, + } satisfies RemoveMemberRequest; + + try { + const data = await api.removeMember(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | -------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | +| **userId** | `string` | User ID (UUID) | [Defaults to `undefined`] | + +### Return type + +`void` (Empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **204** | Removed | - | +| **401** | Unauthorized | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## updateOrg + +> ModelsOrganization updateOrg(id, body) + +Update organization (owner/admin) + +### Example + +```ts +import { + Configuration, + OrgsApi, +} from '@glueops/autoglue-sdk'; +import type { UpdateOrgRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new OrgsApi(config); + + const body = { + // string | Org ID (UUID) + id: id_example, + // HandlersOrgUpdateReq | Update payload + body: ..., + } satisfies UpdateOrgRequest; + + try { + const data = await api.updateOrg(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| -------- | ----------------------------------------------- | -------------- | ------------------------- | +| **id** | `string` | Org ID (UUID) | [Defaults to `undefined`] | +| **body** | [HandlersOrgUpdateReq](HandlersOrgUpdateReq.md) | Update payload | | + +### Return type + +[**ModelsOrganization**](ModelsOrganization.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------ | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | +| **404** | Not Found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/ServersApi.md b/sdk/ts/docs/ServersApi.md new file mode 100644 index 0000000..f297318 --- /dev/null +++ b/sdk/ts/docs/ServersApi.md @@ -0,0 +1,409 @@ +# ServersApi + +All URIs are relative to _http://localhost:8080/api/v1_ + +| Method | HTTP request | Description | +| ---------------------------------------------- | ------------------------ | ----------------------------- | +| [**createServer**](ServersApi.md#createserver) | **POST** /servers | Create server (org scoped) | +| [**deleteServer**](ServersApi.md#deleteserver) | **DELETE** /servers/{id} | Delete server (org scoped) | +| [**getServer**](ServersApi.md#getserver) | **GET** /servers/{id} | Get server by ID (org scoped) | +| [**listServers**](ServersApi.md#listservers) | **GET** /servers | List servers (org scoped) | +| [**updateServer**](ServersApi.md#updateserver) | **PATCH** /servers/{id} | Update server (org scoped) | + +## createServer + +> DtoServerResponse createServer(body, xOrgID) + +Create server (org scoped) + +Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id belongs to the org. + +### Example + +```ts +import { + Configuration, + ServersApi, +} from '@glueops/autoglue-sdk'; +import type { CreateServerRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new ServersApi(config); + + const body = { + // DtoCreateServerRequest | Server payload + body: ..., + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies CreateServerRequest; + + try { + const data = await api.createServer(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | --------------------------------------------------- | ----------------- | ------------------------------------ | +| **body** | [DtoCreateServerRequest](DtoCreateServerRequest.md) | Server payload | | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +[**DtoServerResponse**](DtoServerResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------------------------------------------------------------- | ---------------- | +| **201** | Created | - | +| **400** | invalid json / missing fields / invalid status / invalid ssh_key_id | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | create failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## deleteServer + +> string deleteServer(id, xOrgID) + +Delete server (org scoped) + +Permanently deletes the server. + +### Example + +```ts +import { Configuration, ServersApi } from "@glueops/autoglue-sdk"; +import type { DeleteServerRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new ServersApi(config); + + const body = { + // string | Server ID (UUID) + id: id_example, + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies DeleteServerRequest; + + try { + const data = await api.deleteServer(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | ----------------- | ------------------------------------ | +| **id** | `string` | Server ID (UUID) | [Defaults to `undefined`] | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +**string** + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------- | ---------------- | +| **204** | No Content | - | +| **400** | invalid id | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | delete failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## getServer + +> DtoServerResponse getServer(id, xOrgID) + +Get server by ID (org scoped) + +Returns one server in the given organization. + +### Example + +```ts +import { Configuration, ServersApi } from "@glueops/autoglue-sdk"; +import type { GetServerRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new ServersApi(config); + + const body = { + // string | Server ID (UUID) + id: id_example, + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies GetServerRequest; + + try { + const data = await api.getServer(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | ----------------- | ------------------------------------ | +| **id** | `string` | Server ID (UUID) | [Defaults to `undefined`] | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +[**DtoServerResponse**](DtoServerResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------- | ---------------- | +| **200** | OK | - | +| **400** | invalid id | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **404** | not found | - | +| **500** | fetch failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## listServers + +> Array<DtoServerResponse> listServers(xOrgID, status, role) + +List servers (org scoped) + +Returns servers for the organization in X-Org-ID. Optional filters: status, role. + +### Example + +```ts +import { Configuration, ServersApi } from "@glueops/autoglue-sdk"; +import type { ListServersRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new ServersApi(config); + + const body = { + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + // string | Filter by status (pending|provisioning|ready|failed) (optional) + status: status_example, + // string | Filter by role (optional) + role: role_example, + } satisfies ListServersRequest; + + try { + const data = await api.listServers(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | ------------------------- | ------------------------------------ | ----- | ------- | ------------------------------------ | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | +| **status** | `string` | Filter by status (pending | provisioning | ready | failed) | [Optional] [Defaults to `undefined`] | +| **role** | `string` | Filter by role | [Optional] [Defaults to `undefined`] | + +### Return type + +[**Array<DtoServerResponse>**](DtoServerResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ---------------------- | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | failed to list servers | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## updateServer + +> DtoServerResponse updateServer(id, body, xOrgID) + +Update server (org scoped) + +Partially update fields; changing ssh_key_id validates ownership. + +### Example + +```ts +import { + Configuration, + ServersApi, +} from '@glueops/autoglue-sdk'; +import type { UpdateServerRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new ServersApi(config); + + const body = { + // string | Server ID (UUID) + id: id_example, + // DtoUpdateServerRequest | Fields to update + body: ..., + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies UpdateServerRequest; + + try { + const data = await api.updateServer(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | --------------------------------------------------- | ----------------- | ------------------------------------ | +| **id** | `string` | Server ID (UUID) | [Defaults to `undefined`] | +| **body** | [DtoUpdateServerRequest](DtoUpdateServerRequest.md) | Fields to update | | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +[**DtoServerResponse**](DtoServerResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------------------------------------------------- | ---------------- | +| **200** | OK | - | +| **400** | invalid id / invalid json / invalid status / invalid ssh_key_id | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **404** | not found | - | +| **500** | update failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/SshApi.md b/sdk/ts/docs/SshApi.md new file mode 100644 index 0000000..f09dc1b --- /dev/null +++ b/sdk/ts/docs/SshApi.md @@ -0,0 +1,403 @@ +# SshApi + +All URIs are relative to _http://localhost:8080/api/v1_ + +| Method | HTTP request | Description | +| ---------------------------------------------------- | -------------------------- | ----------------------------------------- | +| [**createSSHKey**](SshApi.md#createsshkey) | **POST** /ssh | Create ssh keypair (org scoped) | +| [**deleteSSHKey**](SshApi.md#deletesshkey) | **DELETE** /ssh/{id} | Delete ssh keypair (org scoped) | +| [**downloadSSHKey**](SshApi.md#downloadsshkey) | **GET** /ssh/{id}/download | Download ssh key files by ID (org scoped) | +| [**getSSHKey**](SshApi.md#getsshkey) | **GET** /ssh/{id} | Get ssh key by ID (org scoped) | +| [**listPublicSshKeys**](SshApi.md#listpublicsshkeys) | **GET** /ssh | List ssh keys (org scoped) | + +## createSSHKey + +> DtoSshResponse createSSHKey(body, xOrgID) + +Create ssh keypair (org scoped) + +Generates an RSA or ED25519 keypair, saves it, and returns metadata. For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores bits. + +### Example + +```ts +import { + Configuration, + SshApi, +} from '@glueops/autoglue-sdk'; +import type { CreateSSHKeyRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new SshApi(config); + + const body = { + // DtoCreateSSHRequest | Key generation options + body: ..., + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies CreateSSHKeyRequest; + + try { + const data = await api.createSSHKey(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | --------------------------------------------- | ---------------------- | ------------------------------------ | +| **body** | [DtoCreateSSHRequest](DtoCreateSSHRequest.md) | Key generation options | | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +[**DtoSshResponse**](DtoSshResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------------- | ---------------- | +| **201** | Created | - | +| **400** | invalid json / invalid bits | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | generation/create failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## deleteSSHKey + +> string deleteSSHKey(id, xOrgID) + +Delete ssh keypair (org scoped) + +Permanently deletes a keypair. + +### Example + +```ts +import { Configuration, SshApi } from "@glueops/autoglue-sdk"; +import type { DeleteSSHKeyRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new SshApi(config); + + const body = { + // string | SSH Key ID (UUID) + id: id_example, + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies DeleteSSHKeyRequest; + + try { + const data = await api.deleteSSHKey(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | ----------------- | ------------------------------------ | +| **id** | `string` | SSH Key ID (UUID) | [Defaults to `undefined`] | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +**string** + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------- | ---------------- | +| **204** | No Content | - | +| **400** | invalid id | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | delete failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## downloadSSHKey + +> string downloadSSHKey(xOrgID, id, part) + +Download ssh key files by ID (org scoped) + +Download `part=public|private|both` of the keypair. `both` returns a zip file. + +### Example + +```ts +import { Configuration, SshApi } from "@glueops/autoglue-sdk"; +import type { DownloadSSHKeyRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new SshApi(config); + + const body = { + // string | Organization UUID + xOrgID: xOrgID_example, + // string | SSH Key ID (UUID) + id: id_example, + // 'public' | 'private' | 'both' | Which part to download + part: part_example, + } satisfies DownloadSSHKeyRequest; + + try { + const data = await api.downloadSSHKey(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | --------------------------- | ---------------------- | ------------------------------------------------------- | +| **xOrgID** | `string` | Organization UUID | [Defaults to `undefined`] | +| **id** | `string` | SSH Key ID (UUID) | [Defaults to `undefined`] | +| **part** | `public`, `private`, `both` | Which part to download | [Defaults to `undefined`] [Enum: public, private, both] | + +### Return type + +**string** + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------------------- | ---------------- | +| **200** | file content | - | +| **400** | invalid id / invalid part | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **404** | not found | - | +| **500** | download failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## getSSHKey + +> DtoSshRevealResponse getSSHKey(id, xOrgID, reveal) + +Get ssh key by ID (org scoped) + +Returns public key fields. Append `?reveal=true` to include the private key PEM. + +### Example + +```ts +import { Configuration, SshApi } from "@glueops/autoglue-sdk"; +import type { GetSSHKeyRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new SshApi(config); + + const body = { + // string | SSH Key ID (UUID) + id: id_example, + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + // boolean | Reveal private key PEM (optional) + reveal: true, + } satisfies GetSSHKeyRequest; + + try { + const data = await api.getSSHKey(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | --------- | ---------------------- | ------------------------------------ | +| **id** | `string` | SSH Key ID (UUID) | [Defaults to `undefined`] | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | +| **reveal** | `boolean` | Reveal private key PEM | [Optional] [Defaults to `undefined`] | + +### Return type + +[**DtoSshRevealResponse**](DtoSshRevealResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------- | ---------------- | +| **200** | When reveal=true | - | +| **400** | invalid id | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **404** | not found | - | +| **500** | fetch failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## listPublicSshKeys + +> Array<DtoSshResponse> listPublicSshKeys(xOrgID) + +List ssh keys (org scoped) + +Returns ssh keys for the organization in X-Org-ID. + +### Example + +```ts +import { Configuration, SshApi } from "@glueops/autoglue-sdk"; +import type { ListPublicSshKeysRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new SshApi(config); + + const body = { + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies ListPublicSshKeysRequest; + + try { + const data = await api.listPublicSshKeys(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | ----------------- | ------------------------------------ | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +[**Array<DtoSshResponse>**](DtoSshResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------- | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | failed to list keys | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/TaintsApi.md b/sdk/ts/docs/TaintsApi.md new file mode 100644 index 0000000..00f2f59 --- /dev/null +++ b/sdk/ts/docs/TaintsApi.md @@ -0,0 +1,410 @@ +# TaintsApi + +All URIs are relative to _http://localhost:8080/api/v1_ + +| Method | HTTP request | Description | +| ------------------------------------------- | ----------------------- | ---------------------------------- | +| [**createTaint**](TaintsApi.md#createtaint) | **POST** /taints | Create node taint (org scoped) | +| [**deleteTaint**](TaintsApi.md#deletetaint) | **DELETE** /taints/{id} | Delete taint (org scoped) | +| [**getTaint**](TaintsApi.md#gettaint) | **GET** /taints/{id} | Get node taint by ID (org scoped) | +| [**listTaints**](TaintsApi.md#listtaints) | **GET** /taints | List node pool taints (org scoped) | +| [**updateTaint**](TaintsApi.md#updatetaint) | **PATCH** /taints/{id} | Update node taint (org scoped) | + +## createTaint + +> DtoTaintResponse createTaint(body, xOrgID) + +Create node taint (org scoped) + +Creates a taint. + +### Example + +```ts +import { + Configuration, + TaintsApi, +} from '@glueops/autoglue-sdk'; +import type { CreateTaintRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new TaintsApi(config); + + const body = { + // DtoCreateTaintRequest | Taint payload + body: ..., + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies CreateTaintRequest; + + try { + const data = await api.createTaint(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | ------------------------------------------------- | ----------------- | ------------------------------------ | +| **body** | [DtoCreateTaintRequest](DtoCreateTaintRequest.md) | Taint payload | | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +[**DtoTaintResponse**](DtoTaintResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ----------------------------------------------------- | ---------------- | +| **201** | Created | - | +| **400** | invalid json / missing fields / invalid node_pool_ids | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | create failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## deleteTaint + +> string deleteTaint(id, xOrgID) + +Delete taint (org scoped) + +Permanently deletes the taint. + +### Example + +```ts +import { Configuration, TaintsApi } from "@glueops/autoglue-sdk"; +import type { DeleteTaintRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new TaintsApi(config); + + const body = { + // string | Node Taint ID (UUID) + id: id_example, + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies DeleteTaintRequest; + + try { + const data = await api.deleteTaint(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | -------------------- | ------------------------------------ | +| **id** | `string` | Node Taint ID (UUID) | [Defaults to `undefined`] | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +**string** + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------- | ---------------- | +| **204** | No Content | - | +| **400** | invalid id | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | delete failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## getTaint + +> DtoTaintResponse getTaint(id, xOrgID) + +Get node taint by ID (org scoped) + +### Example + +```ts +import { Configuration, TaintsApi } from "@glueops/autoglue-sdk"; +import type { GetTaintRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new TaintsApi(config); + + const body = { + // string | Node Taint ID (UUID) + id: id_example, + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies GetTaintRequest; + + try { + const data = await api.getTaint(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | -------------------- | ------------------------------------ | +| **id** | `string` | Node Taint ID (UUID) | [Defaults to `undefined`] | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +[**DtoTaintResponse**](DtoTaintResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | --------------------- | ---------------- | +| **200** | OK | - | +| **400** | invalid id | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **404** | not found | - | +| **500** | fetch failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## listTaints + +> Array<DtoTaintResponse> listTaints(xOrgID, key, value, q) + +List node pool taints (org scoped) + +Returns node taints for the organization in X-Org-ID. Filters: `key`, `value`, and `q` (key contains). Add `include=node_pools` to include linked node pools. + +### Example + +```ts +import { Configuration, TaintsApi } from "@glueops/autoglue-sdk"; +import type { ListTaintsRequest } from "@glueops/autoglue-sdk"; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new TaintsApi(config); + + const body = { + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + // string | Exact key (optional) + key: key_example, + // string | Exact value (optional) + value: value_example, + // string | key contains (case-insensitive) (optional) + q: q_example, + } satisfies ListTaintsRequest; + + try { + const data = await api.listTaints(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | -------- | ------------------------------- | ------------------------------------ | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | +| **key** | `string` | Exact key | [Optional] [Defaults to `undefined`] | +| **value** | `string` | Exact value | [Optional] [Defaults to `undefined`] | +| **q** | `string` | key contains (case-insensitive) | [Optional] [Defaults to `undefined`] | + +### Return type + +[**Array<DtoTaintResponse>**](DtoTaintResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | -------------------------- | ---------------- | +| **200** | OK | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **500** | failed to list node taints | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## updateTaint + +> DtoTaintResponse updateTaint(id, body, xOrgID) + +Update node taint (org scoped) + +Partially update taint fields. + +### Example + +```ts +import { + Configuration, + TaintsApi, +} from '@glueops/autoglue-sdk'; +import type { UpdateTaintRequest } from '@glueops/autoglue-sdk'; + +async function example() { + console.log("🚀 Testing @glueops/autoglue-sdk SDK..."); + const config = new Configuration({ + // To configure API key authorization: OrgKeyAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: OrgSecretAuth + apiKey: "YOUR API KEY", + // To configure API key authorization: BearerAuth + apiKey: "YOUR API KEY", + }); + const api = new TaintsApi(config); + + const body = { + // string | Node Taint ID (UUID) + id: id_example, + // DtoUpdateTaintRequest | Fields to update + body: ..., + // string | Organization UUID (optional) + xOrgID: xOrgID_example, + } satisfies UpdateTaintRequest; + + try { + const data = await api.updateTaint(body); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---------- | ------------------------------------------------- | -------------------- | ------------------------------------ | +| **id** | `string` | Node Taint ID (UUID) | [Defaults to `undefined`] | +| **body** | [DtoUpdateTaintRequest](DtoUpdateTaintRequest.md) | Fields to update | | +| **xOrgID** | `string` | Organization UUID | [Optional] [Defaults to `undefined`] | + +### Return type + +[**DtoTaintResponse**](DtoTaintResponse.md) + +### Authorization + +[OrgKeyAuth](../README.md#OrgKeyAuth), [OrgSecretAuth](../README.md#OrgSecretAuth), [BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: `application/json` +- **Accept**: `application/json` + +### HTTP response details + +| Status code | Description | Response headers | +| ----------- | ------------------------- | ---------------- | +| **200** | OK | - | +| **400** | invalid id / invalid json | - | +| **401** | Unauthorized | - | +| **403** | organization required | - | +| **404** | not found | - | +| **500** | update failed | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/docs/UtilsErrorResponse.md b/sdk/ts/docs/UtilsErrorResponse.md new file mode 100644 index 0000000..8809f4a --- /dev/null +++ b/sdk/ts/docs/UtilsErrorResponse.md @@ -0,0 +1,32 @@ +# UtilsErrorResponse + +## Properties + +| Name | Type | +| --------- | ------ | +| `code` | string | +| `message` | string | + +## Example + +```typescript +import type { UtilsErrorResponse } from "@glueops/autoglue-sdk"; + +// TODO: Update the object below with actual values +const example = { + code: null, + message: null, +} satisfies UtilsErrorResponse; + +console.log(example); + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example); +console.log(exampleJSON); + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as UtilsErrorResponse; +console.log(exampleParsed); +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) diff --git a/sdk/ts/package.json b/sdk/ts/package.json new file mode 100644 index 0000000..228f863 --- /dev/null +++ b/sdk/ts/package.json @@ -0,0 +1,21 @@ +{ + "name": "@glueops/autoglue-sdk", + "version": "0.1.0", + "description": "OpenAPI client for @glueops/autoglue-sdk", + "author": "OpenAPI-Generator", + "repository": { + "type": "git", + "url": "https://github.com/GIT_USER_ID/GIT_REPO_ID.git" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "module": "./dist/esm/index.js", + "sideEffects": false, + "scripts": { + "build": "tsc && tsc -p tsconfig.esm.json", + "prepare": "npm run build" + }, + "devDependencies": { + "typescript": "^4.0 || ^5.0" + } +} diff --git a/sdk/ts/src/apis/AuthApi.ts b/sdk/ts/src/apis/AuthApi.ts new file mode 100644 index 0000000..4d712be --- /dev/null +++ b/sdk/ts/src/apis/AuthApi.ts @@ -0,0 +1,294 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from "../runtime"; +import type { + DtoAuthStartResponse, + DtoJWKS, + DtoLogoutRequest, + DtoRefreshRequest, + DtoTokenPair, +} from "../models/index"; +import { + DtoAuthStartResponseFromJSON, + DtoAuthStartResponseToJSON, + DtoJWKSFromJSON, + DtoJWKSToJSON, + DtoLogoutRequestFromJSON, + DtoLogoutRequestToJSON, + DtoRefreshRequestFromJSON, + DtoRefreshRequestToJSON, + DtoTokenPairFromJSON, + DtoTokenPairToJSON, +} from "../models/index"; + +export interface AuthCallbackRequest { + provider: string; +} + +export interface AuthStartRequest { + provider: string; +} + +export interface LogoutRequest { + body: DtoLogoutRequest; +} + +export interface RefreshRequest { + body: DtoRefreshRequest; +} + +/** + * + */ +export class AuthApi extends runtime.BaseAPI { + /** + * Handle social login callback + */ + async authCallbackRaw( + requestParameters: AuthCallbackRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["provider"] == null) { + throw new runtime.RequiredError( + "provider", + 'Required parameter "provider" was null or undefined when calling authCallback().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/auth/{provider}/callback`; + urlPath = urlPath.replace( + `{${"provider"}}`, + encodeURIComponent(String(requestParameters["provider"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoTokenPairFromJSON(jsonValue), + ); + } + + /** + * Handle social login callback + */ + async authCallback( + requestParameters: AuthCallbackRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authCallbackRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Returns provider authorization URL for the frontend to redirect + * Begin social login + */ + async authStartRaw( + requestParameters: AuthStartRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["provider"] == null) { + throw new runtime.RequiredError( + "provider", + 'Required parameter "provider" was null or undefined when calling authStart().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/auth/{provider}/start`; + urlPath = urlPath.replace( + `{${"provider"}}`, + encodeURIComponent(String(requestParameters["provider"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoAuthStartResponseFromJSON(jsonValue), + ); + } + + /** + * Returns provider authorization URL for the frontend to redirect + * Begin social login + */ + async authStart( + requestParameters: AuthStartRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authStartRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Returns the JSON Web Key Set for token verification + * Get JWKS + */ + async getJWKSRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/.well-known/jwks.json`; + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoJWKSFromJSON(jsonValue), + ); + } + + /** + * Returns the JSON Web Key Set for token verification + * Get JWKS + */ + async getJWKS( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getJWKSRaw(initOverrides); + return await response.value(); + } + + /** + * Revoke refresh token family (logout everywhere) + */ + async logoutRaw( + requestParameters: LogoutRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling logout().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/auth/logout`; + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DtoLogoutRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Revoke refresh token family (logout everywhere) + */ + async logout( + requestParameters: LogoutRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.logoutRaw(requestParameters, initOverrides); + } + + /** + * Rotate refresh token + */ + async refreshRaw( + requestParameters: RefreshRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling refresh().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/auth/refresh`; + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DtoRefreshRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoTokenPairFromJSON(jsonValue), + ); + } + + /** + * Rotate refresh token + */ + async refresh( + requestParameters: RefreshRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.refreshRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/sdk/ts/src/apis/MeAPIKeysApi.ts b/sdk/ts/src/apis/MeAPIKeysApi.ts new file mode 100644 index 0000000..3117f29 --- /dev/null +++ b/sdk/ts/src/apis/MeAPIKeysApi.ts @@ -0,0 +1,201 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from "../runtime"; +import type { + HandlersCreateUserKeyRequest, + HandlersUserAPIKeyOut, +} from "../models/index"; +import { + HandlersCreateUserKeyRequestFromJSON, + HandlersCreateUserKeyRequestToJSON, + HandlersUserAPIKeyOutFromJSON, + HandlersUserAPIKeyOutToJSON, +} from "../models/index"; + +export interface CreateUserAPIKeyRequest { + body: HandlersCreateUserKeyRequest; +} + +export interface DeleteUserAPIKeyRequest { + id: string; +} + +/** + * + */ +export class MeAPIKeysApi extends runtime.BaseAPI { + /** + * Returns the plaintext key once. Store it securely on the client side. + * Create a new user API key + */ + async createUserAPIKeyRaw( + requestParameters: CreateUserAPIKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling createUserAPIKey().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-API-KEY"] = + await this.configuration.apiKey("X-API-KEY"); // ApiKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/me/api-keys`; + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: HandlersCreateUserKeyRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + HandlersUserAPIKeyOutFromJSON(jsonValue), + ); + } + + /** + * Returns the plaintext key once. Store it securely on the client side. + * Create a new user API key + */ + async createUserAPIKey( + requestParameters: CreateUserAPIKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.createUserAPIKeyRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Delete a user API key + */ + async deleteUserAPIKeyRaw( + requestParameters: DeleteUserAPIKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling deleteUserAPIKey().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/me/api-keys/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Delete a user API key + */ + async deleteUserAPIKey( + requestParameters: DeleteUserAPIKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.deleteUserAPIKeyRaw(requestParameters, initOverrides); + } + + /** + * List my API keys + */ + async listUserAPIKeysRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-API-KEY"] = + await this.configuration.apiKey("X-API-KEY"); // ApiKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/me/api-keys`; + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(HandlersUserAPIKeyOutFromJSON), + ); + } + + /** + * List my API keys + */ + async listUserAPIKeys( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.listUserAPIKeysRaw(initOverrides); + return await response.value(); + } +} diff --git a/sdk/ts/src/apis/MeApi.ts b/sdk/ts/src/apis/MeApi.ts new file mode 100644 index 0000000..f04e389 --- /dev/null +++ b/sdk/ts/src/apis/MeApi.ts @@ -0,0 +1,143 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from "../runtime"; +import type { + HandlersMeResponse, + HandlersUpdateMeRequest, + ModelsUser, +} from "../models/index"; +import { + HandlersMeResponseFromJSON, + HandlersMeResponseToJSON, + HandlersUpdateMeRequestFromJSON, + HandlersUpdateMeRequestToJSON, + ModelsUserFromJSON, + ModelsUserToJSON, +} from "../models/index"; + +export interface UpdateMeRequest { + body: HandlersUpdateMeRequest; +} + +/** + * + */ +export class MeApi extends runtime.BaseAPI { + /** + * Get current user profile + */ + async getMeRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-API-KEY"] = + await this.configuration.apiKey("X-API-KEY"); // ApiKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/me`; + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + HandlersMeResponseFromJSON(jsonValue), + ); + } + + /** + * Get current user profile + */ + async getMe( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getMeRaw(initOverrides); + return await response.value(); + } + + /** + * Update current user profile + */ + async updateMeRaw( + requestParameters: UpdateMeRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling updateMe().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-API-KEY"] = + await this.configuration.apiKey("X-API-KEY"); // ApiKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/me`; + + const response = await this.request( + { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: HandlersUpdateMeRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ModelsUserFromJSON(jsonValue), + ); + } + + /** + * Update current user profile + */ + async updateMe( + requestParameters: UpdateMeRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.updateMeRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/sdk/ts/src/apis/OrgsApi.ts b/sdk/ts/src/apis/OrgsApi.ts new file mode 100644 index 0000000..289f507 --- /dev/null +++ b/sdk/ts/src/apis/OrgsApi.ts @@ -0,0 +1,742 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from "../runtime"; +import type { + HandlersMemberOut, + HandlersMemberUpsertReq, + HandlersOrgCreateReq, + HandlersOrgKeyCreateReq, + HandlersOrgKeyCreateResp, + HandlersOrgUpdateReq, + ModelsAPIKey, + ModelsOrganization, + UtilsErrorResponse, +} from "../models/index"; +import { + HandlersMemberOutFromJSON, + HandlersMemberOutToJSON, + HandlersMemberUpsertReqFromJSON, + HandlersMemberUpsertReqToJSON, + HandlersOrgCreateReqFromJSON, + HandlersOrgCreateReqToJSON, + HandlersOrgKeyCreateReqFromJSON, + HandlersOrgKeyCreateReqToJSON, + HandlersOrgKeyCreateRespFromJSON, + HandlersOrgKeyCreateRespToJSON, + HandlersOrgUpdateReqFromJSON, + HandlersOrgUpdateReqToJSON, + ModelsAPIKeyFromJSON, + ModelsAPIKeyToJSON, + ModelsOrganizationFromJSON, + ModelsOrganizationToJSON, + UtilsErrorResponseFromJSON, + UtilsErrorResponseToJSON, +} from "../models/index"; + +export interface AddOrUpdateMemberRequest { + id: string; + body: HandlersMemberUpsertReq; +} + +export interface CreateOrgRequest { + body: HandlersOrgCreateReq; +} + +export interface CreateOrgKeyRequest { + id: string; + body: HandlersOrgKeyCreateReq; +} + +export interface DeleteOrgRequest { + id: string; +} + +export interface DeleteOrgKeyRequest { + id: string; + keyId: string; +} + +export interface GetOrgRequest { + id: string; +} + +export interface ListMembersRequest { + id: string; +} + +export interface ListOrgKeysRequest { + id: string; +} + +export interface RemoveMemberRequest { + id: string; + userId: string; +} + +export interface UpdateOrgRequest { + id: string; + body: HandlersOrgUpdateReq; +} + +/** + * + */ +export class OrgsApi extends runtime.BaseAPI { + /** + * Add or update a member (owner/admin) + */ + async addOrUpdateMemberRaw( + requestParameters: AddOrUpdateMemberRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling addOrUpdateMember().', + ); + } + + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling addOrUpdateMember().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}/members`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: HandlersMemberUpsertReqToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + HandlersMemberOutFromJSON(jsonValue), + ); + } + + /** + * Add or update a member (owner/admin) + */ + async addOrUpdateMember( + requestParameters: AddOrUpdateMemberRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.addOrUpdateMemberRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Create organization + */ + async createOrgRaw( + requestParameters: CreateOrgRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling createOrg().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs`; + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: HandlersOrgCreateReqToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ModelsOrganizationFromJSON(jsonValue), + ); + } + + /** + * Create organization + */ + async createOrg( + requestParameters: CreateOrgRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.createOrgRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Create org key/secret pair (owner/admin) + */ + async createOrgKeyRaw( + requestParameters: CreateOrgKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling createOrgKey().', + ); + } + + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling createOrgKey().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}/api-keys`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: HandlersOrgKeyCreateReqToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + HandlersOrgKeyCreateRespFromJSON(jsonValue), + ); + } + + /** + * Create org key/secret pair (owner/admin) + */ + async createOrgKey( + requestParameters: CreateOrgKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.createOrgKeyRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Delete organization (owner) + */ + async deleteOrgRaw( + requestParameters: DeleteOrgRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling deleteOrg().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Delete organization (owner) + */ + async deleteOrg( + requestParameters: DeleteOrgRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.deleteOrgRaw(requestParameters, initOverrides); + } + + /** + * Delete org key (owner/admin) + */ + async deleteOrgKeyRaw( + requestParameters: DeleteOrgKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling deleteOrgKey().', + ); + } + + if (requestParameters["keyId"] == null) { + throw new runtime.RequiredError( + "keyId", + 'Required parameter "keyId" was null or undefined when calling deleteOrgKey().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}/api-keys/{key_id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + urlPath = urlPath.replace( + `{${"key_id"}}`, + encodeURIComponent(String(requestParameters["keyId"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Delete org key (owner/admin) + */ + async deleteOrgKey( + requestParameters: DeleteOrgKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.deleteOrgKeyRaw(requestParameters, initOverrides); + } + + /** + * Get organization + */ + async getOrgRaw( + requestParameters: GetOrgRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling getOrg().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ModelsOrganizationFromJSON(jsonValue), + ); + } + + /** + * Get organization + */ + async getOrg( + requestParameters: GetOrgRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getOrgRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * List members in org + */ + async listMembersRaw( + requestParameters: ListMembersRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling listMembers().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}/members`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(HandlersMemberOutFromJSON), + ); + } + + /** + * List members in org + */ + async listMembers( + requestParameters: ListMembersRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.listMembersRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * List organizations I belong to + */ + async listMyOrgsRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs`; + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(ModelsOrganizationFromJSON), + ); + } + + /** + * List organizations I belong to + */ + async listMyOrgs( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.listMyOrgsRaw(initOverrides); + return await response.value(); + } + + /** + * List org-scoped API keys (no secrets) + */ + async listOrgKeysRaw( + requestParameters: ListOrgKeysRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling listOrgKeys().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}/api-keys`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(ModelsAPIKeyFromJSON), + ); + } + + /** + * List org-scoped API keys (no secrets) + */ + async listOrgKeys( + requestParameters: ListOrgKeysRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.listOrgKeysRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Remove a member (owner/admin) + */ + async removeMemberRaw( + requestParameters: RemoveMemberRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling removeMember().', + ); + } + + if (requestParameters["userId"] == null) { + throw new runtime.RequiredError( + "userId", + 'Required parameter "userId" was null or undefined when calling removeMember().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}/members/{user_id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + urlPath = urlPath.replace( + `{${"user_id"}}`, + encodeURIComponent(String(requestParameters["userId"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.VoidApiResponse(response); + } + + /** + * Remove a member (owner/admin) + */ + async removeMember( + requestParameters: RemoveMemberRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.removeMemberRaw(requestParameters, initOverrides); + } + + /** + * Update organization (owner/admin) + */ + async updateOrgRaw( + requestParameters: UpdateOrgRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling updateOrg().', + ); + } + + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling updateOrg().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/orgs/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: HandlersOrgUpdateReqToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ModelsOrganizationFromJSON(jsonValue), + ); + } + + /** + * Update organization (owner/admin) + */ + async updateOrg( + requestParameters: UpdateOrgRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.updateOrgRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/sdk/ts/src/apis/ServersApi.ts b/sdk/ts/src/apis/ServersApi.ts new file mode 100644 index 0000000..f112748 --- /dev/null +++ b/sdk/ts/src/apis/ServersApi.ts @@ -0,0 +1,435 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from "../runtime"; +import type { + DtoCreateServerRequest, + DtoServerResponse, + DtoUpdateServerRequest, +} from "../models/index"; +import { + DtoCreateServerRequestFromJSON, + DtoCreateServerRequestToJSON, + DtoServerResponseFromJSON, + DtoServerResponseToJSON, + DtoUpdateServerRequestFromJSON, + DtoUpdateServerRequestToJSON, +} from "../models/index"; + +export interface CreateServerRequest { + body: DtoCreateServerRequest; + xOrgID?: string; +} + +export interface DeleteServerRequest { + id: string; + xOrgID?: string; +} + +export interface GetServerRequest { + id: string; + xOrgID?: string; +} + +export interface ListServersRequest { + xOrgID?: string; + status?: string; + role?: string; +} + +export interface UpdateServerRequest { + id: string; + body: DtoUpdateServerRequest; + xOrgID?: string; +} + +/** + * + */ +export class ServersApi extends runtime.BaseAPI { + /** + * Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id belongs to the org. + * Create server (org scoped) + */ + async createServerRaw( + requestParameters: CreateServerRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling createServer().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/servers`; + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DtoCreateServerRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoServerResponseFromJSON(jsonValue), + ); + } + + /** + * Creates a server bound to the org in X-Org-ID. Validates that ssh_key_id belongs to the org. + * Create server (org scoped) + */ + async createServer( + requestParameters: CreateServerRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.createServerRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Permanently deletes the server. + * Delete server (org scoped) + */ + async deleteServerRaw( + requestParameters: DeleteServerRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling deleteServer().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/servers/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + if (this.isJsonMime(response.headers.get("content-type"))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Permanently deletes the server. + * Delete server (org scoped) + */ + async deleteServer( + requestParameters: DeleteServerRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.deleteServerRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Returns one server in the given organization. + * Get server by ID (org scoped) + */ + async getServerRaw( + requestParameters: GetServerRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling getServer().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/servers/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoServerResponseFromJSON(jsonValue), + ); + } + + /** + * Returns one server in the given organization. + * Get server by ID (org scoped) + */ + async getServer( + requestParameters: GetServerRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getServerRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Returns servers for the organization in X-Org-ID. Optional filters: status, role. + * List servers (org scoped) + */ + async listServersRaw( + requestParameters: ListServersRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters["status"] != null) { + queryParameters["status"] = requestParameters["status"]; + } + + if (requestParameters["role"] != null) { + queryParameters["role"] = requestParameters["role"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/servers`; + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(DtoServerResponseFromJSON), + ); + } + + /** + * Returns servers for the organization in X-Org-ID. Optional filters: status, role. + * List servers (org scoped) + */ + async listServers( + requestParameters: ListServersRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.listServersRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Partially update fields; changing ssh_key_id validates ownership. + * Update server (org scoped) + */ + async updateServerRaw( + requestParameters: UpdateServerRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling updateServer().', + ); + } + + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling updateServer().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/servers/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: DtoUpdateServerRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoServerResponseFromJSON(jsonValue), + ); + } + + /** + * Partially update fields; changing ssh_key_id validates ownership. + * Update server (org scoped) + */ + async updateServer( + requestParameters: UpdateServerRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.updateServerRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/sdk/ts/src/apis/SshApi.ts b/sdk/ts/src/apis/SshApi.ts new file mode 100644 index 0000000..bb1c1be --- /dev/null +++ b/sdk/ts/src/apis/SshApi.ts @@ -0,0 +1,451 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from "../runtime"; +import type { + DtoCreateSSHRequest, + DtoSshResponse, + DtoSshRevealResponse, +} from "../models/index"; +import { + DtoCreateSSHRequestFromJSON, + DtoCreateSSHRequestToJSON, + DtoSshResponseFromJSON, + DtoSshResponseToJSON, + DtoSshRevealResponseFromJSON, + DtoSshRevealResponseToJSON, +} from "../models/index"; + +export interface CreateSSHKeyRequest { + body: DtoCreateSSHRequest; + xOrgID?: string; +} + +export interface DeleteSSHKeyRequest { + id: string; + xOrgID?: string; +} + +export interface DownloadSSHKeyRequest { + xOrgID: string; + id: string; + part: DownloadSSHKeyPartEnum; +} + +export interface GetSSHKeyRequest { + id: string; + xOrgID?: string; + reveal?: boolean; +} + +export interface ListPublicSshKeysRequest { + xOrgID?: string; +} + +/** + * + */ +export class SshApi extends runtime.BaseAPI { + /** + * Generates an RSA or ED25519 keypair, saves it, and returns metadata. For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores bits. + * Create ssh keypair (org scoped) + */ + async createSSHKeyRaw( + requestParameters: CreateSSHKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling createSSHKey().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/ssh`; + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DtoCreateSSHRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoSshResponseFromJSON(jsonValue), + ); + } + + /** + * Generates an RSA or ED25519 keypair, saves it, and returns metadata. For RSA you may set bits (2048/3072/4096). Default is 4096. ED25519 ignores bits. + * Create ssh keypair (org scoped) + */ + async createSSHKey( + requestParameters: CreateSSHKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.createSSHKeyRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Permanently deletes a keypair. + * Delete ssh keypair (org scoped) + */ + async deleteSSHKeyRaw( + requestParameters: DeleteSSHKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling deleteSSHKey().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/ssh/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + if (this.isJsonMime(response.headers.get("content-type"))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Permanently deletes a keypair. + * Delete ssh keypair (org scoped) + */ + async deleteSSHKey( + requestParameters: DeleteSSHKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.deleteSSHKeyRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Download `part=public|private|both` of the keypair. `both` returns a zip file. + * Download ssh key files by ID (org scoped) + */ + async downloadSSHKeyRaw( + requestParameters: DownloadSSHKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["xOrgID"] == null) { + throw new runtime.RequiredError( + "xOrgID", + 'Required parameter "xOrgID" was null or undefined when calling downloadSSHKey().', + ); + } + + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling downloadSSHKey().', + ); + } + + if (requestParameters["part"] == null) { + throw new runtime.RequiredError( + "part", + 'Required parameter "part" was null or undefined when calling downloadSSHKey().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["part"] != null) { + queryParameters["part"] = requestParameters["part"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/ssh/{id}/download`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + if (this.isJsonMime(response.headers.get("content-type"))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Download `part=public|private|both` of the keypair. `both` returns a zip file. + * Download ssh key files by ID (org scoped) + */ + async downloadSSHKey( + requestParameters: DownloadSSHKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.downloadSSHKeyRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Returns public key fields. Append `?reveal=true` to include the private key PEM. + * Get ssh key by ID (org scoped) + */ + async getSSHKeyRaw( + requestParameters: GetSSHKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling getSSHKey().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["reveal"] != null) { + queryParameters["reveal"] = requestParameters["reveal"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/ssh/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoSshRevealResponseFromJSON(jsonValue), + ); + } + + /** + * Returns public key fields. Append `?reveal=true` to include the private key PEM. + * Get ssh key by ID (org scoped) + */ + async getSSHKey( + requestParameters: GetSSHKeyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getSSHKeyRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Returns ssh keys for the organization in X-Org-ID. + * List ssh keys (org scoped) + */ + async listPublicSshKeysRaw( + requestParameters: ListPublicSshKeysRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/ssh`; + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(DtoSshResponseFromJSON), + ); + } + + /** + * Returns ssh keys for the organization in X-Org-ID. + * List ssh keys (org scoped) + */ + async listPublicSshKeys( + requestParameters: ListPublicSshKeysRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.listPublicSshKeysRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} + +/** + * @export + */ +export const DownloadSSHKeyPartEnum = { + public: "public", + private: "private", + both: "both", +} as const; +export type DownloadSSHKeyPartEnum = + (typeof DownloadSSHKeyPartEnum)[keyof typeof DownloadSSHKeyPartEnum]; diff --git a/sdk/ts/src/apis/TaintsApi.ts b/sdk/ts/src/apis/TaintsApi.ts new file mode 100644 index 0000000..0179506 --- /dev/null +++ b/sdk/ts/src/apis/TaintsApi.ts @@ -0,0 +1,435 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import * as runtime from "../runtime"; +import type { + DtoCreateTaintRequest, + DtoTaintResponse, + DtoUpdateTaintRequest, +} from "../models/index"; +import { + DtoCreateTaintRequestFromJSON, + DtoCreateTaintRequestToJSON, + DtoTaintResponseFromJSON, + DtoTaintResponseToJSON, + DtoUpdateTaintRequestFromJSON, + DtoUpdateTaintRequestToJSON, +} from "../models/index"; + +export interface CreateTaintRequest { + body: DtoCreateTaintRequest; + xOrgID?: string; +} + +export interface DeleteTaintRequest { + id: string; + xOrgID?: string; +} + +export interface GetTaintRequest { + id: string; + xOrgID?: string; +} + +export interface ListTaintsRequest { + xOrgID?: string; + key?: string; + value?: string; + q?: string; +} + +export interface UpdateTaintRequest { + id: string; + body: DtoUpdateTaintRequest; + xOrgID?: string; +} + +/** + * + */ +export class TaintsApi extends runtime.BaseAPI { + /** + * Creates a taint. + * Create node taint (org scoped) + */ + async createTaintRaw( + requestParameters: CreateTaintRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling createTaint().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/taints`; + + const response = await this.request( + { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DtoCreateTaintRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoTaintResponseFromJSON(jsonValue), + ); + } + + /** + * Creates a taint. + * Create node taint (org scoped) + */ + async createTaint( + requestParameters: CreateTaintRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.createTaintRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Permanently deletes the taint. + * Delete taint (org scoped) + */ + async deleteTaintRaw( + requestParameters: DeleteTaintRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling deleteTaint().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/taints/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + if (this.isJsonMime(response.headers.get("content-type"))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Permanently deletes the taint. + * Delete taint (org scoped) + */ + async deleteTaint( + requestParameters: DeleteTaintRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.deleteTaintRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Get node taint by ID (org scoped) + */ + async getTaintRaw( + requestParameters: GetTaintRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling getTaint().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/taints/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoTaintResponseFromJSON(jsonValue), + ); + } + + /** + * Get node taint by ID (org scoped) + */ + async getTaint( + requestParameters: GetTaintRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.getTaintRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Returns node taints for the organization in X-Org-ID. Filters: `key`, `value`, and `q` (key contains). Add `include=node_pools` to include linked node pools. + * List node pool taints (org scoped) + */ + async listTaintsRaw( + requestParameters: ListTaintsRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const queryParameters: any = {}; + + if (requestParameters["key"] != null) { + queryParameters["key"] = requestParameters["key"]; + } + + if (requestParameters["value"] != null) { + queryParameters["value"] = requestParameters["value"]; + } + + if (requestParameters["q"] != null) { + queryParameters["q"] = requestParameters["q"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/taints`; + + const response = await this.request( + { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(DtoTaintResponseFromJSON), + ); + } + + /** + * Returns node taints for the organization in X-Org-ID. Filters: `key`, `value`, and `q` (key contains). Add `include=node_pools` to include linked node pools. + * List node pool taints (org scoped) + */ + async listTaints( + requestParameters: ListTaintsRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.listTaintsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Partially update taint fields. + * Update node taint (org scoped) + */ + async updateTaintRaw( + requestParameters: UpdateTaintRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling updateTaint().', + ); + } + + if (requestParameters["body"] == null) { + throw new runtime.RequiredError( + "body", + 'Required parameter "body" was null or undefined when calling updateTaint().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (requestParameters["xOrgID"] != null) { + headerParameters["X-Org-ID"] = String(requestParameters["xOrgID"]); + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-KEY"] = + await this.configuration.apiKey("X-ORG-KEY"); // OrgKeyAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["X-ORG-SECRET"] = + await this.configuration.apiKey("X-ORG-SECRET"); // OrgSecretAuth authentication + } + + if (this.configuration && this.configuration.apiKey) { + headerParameters["Authorization"] = + await this.configuration.apiKey("Authorization"); // BearerAuth authentication + } + + let urlPath = `/taints/{id}`; + urlPath = urlPath.replace( + `{${"id"}}`, + encodeURIComponent(String(requestParameters["id"])), + ); + + const response = await this.request( + { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: DtoUpdateTaintRequestToJSON(requestParameters["body"]), + }, + initOverrides, + ); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DtoTaintResponseFromJSON(jsonValue), + ); + } + + /** + * Partially update taint fields. + * Update node taint (org scoped) + */ + async updateTaint( + requestParameters: UpdateTaintRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.updateTaintRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/sdk/ts/src/apis/index.ts b/sdk/ts/src/apis/index.ts new file mode 100644 index 0000000..9f8eb0e --- /dev/null +++ b/sdk/ts/src/apis/index.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from "./AuthApi"; +export * from "./MeApi"; +export * from "./MeAPIKeysApi"; +export * from "./OrgsApi"; +export * from "./ServersApi"; +export * from "./SshApi"; +export * from "./TaintsApi"; diff --git a/sdk/ts/src/index.ts b/sdk/ts/src/index.ts new file mode 100644 index 0000000..ee26377 --- /dev/null +++ b/sdk/ts/src/index.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from "./runtime"; +export * from "./apis/index"; +export * from "./models/index"; diff --git a/sdk/ts/src/models/DtoAuthStartResponse.ts b/sdk/ts/src/models/DtoAuthStartResponse.ts new file mode 100644 index 0000000..ac12114 --- /dev/null +++ b/sdk/ts/src/models/DtoAuthStartResponse.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoAuthStartResponse + */ +export interface DtoAuthStartResponse { + /** + * + * @type {string} + * @memberof DtoAuthStartResponse + */ + auth_url?: string; +} + +/** + * Check if a given object implements the DtoAuthStartResponse interface. + */ +export function instanceOfDtoAuthStartResponse( + value: object, +): value is DtoAuthStartResponse { + return true; +} + +export function DtoAuthStartResponseFromJSON(json: any): DtoAuthStartResponse { + return DtoAuthStartResponseFromJSONTyped(json, false); +} + +export function DtoAuthStartResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoAuthStartResponse { + if (json == null) { + return json; + } + return { + auth_url: json["auth_url"] == null ? undefined : json["auth_url"], + }; +} + +export function DtoAuthStartResponseToJSON(json: any): DtoAuthStartResponse { + return DtoAuthStartResponseToJSONTyped(json, false); +} + +export function DtoAuthStartResponseToJSONTyped( + value?: DtoAuthStartResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + auth_url: value["auth_url"], + }; +} diff --git a/sdk/ts/src/models/DtoCreateSSHRequest.ts b/sdk/ts/src/models/DtoCreateSSHRequest.ts new file mode 100644 index 0000000..c2db9ff --- /dev/null +++ b/sdk/ts/src/models/DtoCreateSSHRequest.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoCreateSSHRequest + */ +export interface DtoCreateSSHRequest { + /** + * Only for RSA + * @type {number} + * @memberof DtoCreateSSHRequest + */ + bits?: number; + /** + * + * @type {string} + * @memberof DtoCreateSSHRequest + */ + comment?: string; + /** + * + * @type {string} + * @memberof DtoCreateSSHRequest + */ + name?: string; + /** + * "rsa" (default) or "ed25519" + * @type {string} + * @memberof DtoCreateSSHRequest + */ + type?: string; +} + +/** + * Check if a given object implements the DtoCreateSSHRequest interface. + */ +export function instanceOfDtoCreateSSHRequest( + value: object, +): value is DtoCreateSSHRequest { + return true; +} + +export function DtoCreateSSHRequestFromJSON(json: any): DtoCreateSSHRequest { + return DtoCreateSSHRequestFromJSONTyped(json, false); +} + +export function DtoCreateSSHRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoCreateSSHRequest { + if (json == null) { + return json; + } + return { + bits: json["bits"] == null ? undefined : json["bits"], + comment: json["comment"] == null ? undefined : json["comment"], + name: json["name"] == null ? undefined : json["name"], + type: json["type"] == null ? undefined : json["type"], + }; +} + +export function DtoCreateSSHRequestToJSON(json: any): DtoCreateSSHRequest { + return DtoCreateSSHRequestToJSONTyped(json, false); +} + +export function DtoCreateSSHRequestToJSONTyped( + value?: DtoCreateSSHRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + bits: value["bits"], + comment: value["comment"], + name: value["name"], + type: value["type"], + }; +} diff --git a/sdk/ts/src/models/DtoCreateServerRequest.ts b/sdk/ts/src/models/DtoCreateServerRequest.ts new file mode 100644 index 0000000..2dc2ea0 --- /dev/null +++ b/sdk/ts/src/models/DtoCreateServerRequest.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoCreateServerRequest + */ +export interface DtoCreateServerRequest { + /** + * + * @type {string} + * @memberof DtoCreateServerRequest + */ + hostname?: string; + /** + * + * @type {string} + * @memberof DtoCreateServerRequest + */ + private_ip_address?: string; + /** + * + * @type {string} + * @memberof DtoCreateServerRequest + */ + public_ip_address?: string; + /** + * + * @type {string} + * @memberof DtoCreateServerRequest + */ + role?: string; + /** + * + * @type {string} + * @memberof DtoCreateServerRequest + */ + ssh_key_id?: string; + /** + * + * @type {string} + * @memberof DtoCreateServerRequest + */ + ssh_user?: string; + /** + * + * @type {string} + * @memberof DtoCreateServerRequest + */ + status?: string; +} + +/** + * Check if a given object implements the DtoCreateServerRequest interface. + */ +export function instanceOfDtoCreateServerRequest( + value: object, +): value is DtoCreateServerRequest { + return true; +} + +export function DtoCreateServerRequestFromJSON( + json: any, +): DtoCreateServerRequest { + return DtoCreateServerRequestFromJSONTyped(json, false); +} + +export function DtoCreateServerRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoCreateServerRequest { + if (json == null) { + return json; + } + return { + hostname: json["hostname"] == null ? undefined : json["hostname"], + private_ip_address: + json["private_ip_address"] == null + ? undefined + : json["private_ip_address"], + public_ip_address: + json["public_ip_address"] == null ? undefined : json["public_ip_address"], + role: json["role"] == null ? undefined : json["role"], + ssh_key_id: json["ssh_key_id"] == null ? undefined : json["ssh_key_id"], + ssh_user: json["ssh_user"] == null ? undefined : json["ssh_user"], + status: json["status"] == null ? undefined : json["status"], + }; +} + +export function DtoCreateServerRequestToJSON( + json: any, +): DtoCreateServerRequest { + return DtoCreateServerRequestToJSONTyped(json, false); +} + +export function DtoCreateServerRequestToJSONTyped( + value?: DtoCreateServerRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + hostname: value["hostname"], + private_ip_address: value["private_ip_address"], + public_ip_address: value["public_ip_address"], + role: value["role"], + ssh_key_id: value["ssh_key_id"], + ssh_user: value["ssh_user"], + status: value["status"], + }; +} diff --git a/sdk/ts/src/models/DtoCreateTaintRequest.ts b/sdk/ts/src/models/DtoCreateTaintRequest.ts new file mode 100644 index 0000000..01357eb --- /dev/null +++ b/sdk/ts/src/models/DtoCreateTaintRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoCreateTaintRequest + */ +export interface DtoCreateTaintRequest { + /** + * + * @type {string} + * @memberof DtoCreateTaintRequest + */ + effect?: string; + /** + * + * @type {string} + * @memberof DtoCreateTaintRequest + */ + key?: string; + /** + * + * @type {string} + * @memberof DtoCreateTaintRequest + */ + value?: string; +} + +/** + * Check if a given object implements the DtoCreateTaintRequest interface. + */ +export function instanceOfDtoCreateTaintRequest( + value: object, +): value is DtoCreateTaintRequest { + return true; +} + +export function DtoCreateTaintRequestFromJSON( + json: any, +): DtoCreateTaintRequest { + return DtoCreateTaintRequestFromJSONTyped(json, false); +} + +export function DtoCreateTaintRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoCreateTaintRequest { + if (json == null) { + return json; + } + return { + effect: json["effect"] == null ? undefined : json["effect"], + key: json["key"] == null ? undefined : json["key"], + value: json["value"] == null ? undefined : json["value"], + }; +} + +export function DtoCreateTaintRequestToJSON(json: any): DtoCreateTaintRequest { + return DtoCreateTaintRequestToJSONTyped(json, false); +} + +export function DtoCreateTaintRequestToJSONTyped( + value?: DtoCreateTaintRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + effect: value["effect"], + key: value["key"], + value: value["value"], + }; +} diff --git a/sdk/ts/src/models/DtoJWK.ts b/sdk/ts/src/models/DtoJWK.ts new file mode 100644 index 0000000..a9262eb --- /dev/null +++ b/sdk/ts/src/models/DtoJWK.ts @@ -0,0 +1,116 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoJWK + */ +export interface DtoJWK { + /** + * + * @type {string} + * @memberof DtoJWK + */ + alg?: string; + /** + * + * @type {string} + * @memberof DtoJWK + */ + e?: string; + /** + * + * @type {string} + * @memberof DtoJWK + */ + kid?: string; + /** + * + * @type {string} + * @memberof DtoJWK + */ + kty?: string; + /** + * + * @type {string} + * @memberof DtoJWK + */ + n?: string; + /** + * + * @type {string} + * @memberof DtoJWK + */ + use?: string; + /** + * + * @type {string} + * @memberof DtoJWK + */ + x?: string; +} + +/** + * Check if a given object implements the DtoJWK interface. + */ +export function instanceOfDtoJWK(value: object): value is DtoJWK { + return true; +} + +export function DtoJWKFromJSON(json: any): DtoJWK { + return DtoJWKFromJSONTyped(json, false); +} + +export function DtoJWKFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoJWK { + if (json == null) { + return json; + } + return { + alg: json["alg"] == null ? undefined : json["alg"], + e: json["e"] == null ? undefined : json["e"], + kid: json["kid"] == null ? undefined : json["kid"], + kty: json["kty"] == null ? undefined : json["kty"], + n: json["n"] == null ? undefined : json["n"], + use: json["use"] == null ? undefined : json["use"], + x: json["x"] == null ? undefined : json["x"], + }; +} + +export function DtoJWKToJSON(json: any): DtoJWK { + return DtoJWKToJSONTyped(json, false); +} + +export function DtoJWKToJSONTyped( + value?: DtoJWK | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + alg: value["alg"], + e: value["e"], + kid: value["kid"], + kty: value["kty"], + n: value["n"], + use: value["use"], + x: value["x"], + }; +} diff --git a/sdk/ts/src/models/DtoJWKS.ts b/sdk/ts/src/models/DtoJWKS.ts new file mode 100644 index 0000000..c227206 --- /dev/null +++ b/sdk/ts/src/models/DtoJWKS.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +import type { DtoJWK } from "./DtoJWK"; +import { + DtoJWKFromJSON, + DtoJWKFromJSONTyped, + DtoJWKToJSON, + DtoJWKToJSONTyped, +} from "./DtoJWK"; + +/** + * + * @export + * @interface DtoJWKS + */ +export interface DtoJWKS { + /** + * + * @type {Array} + * @memberof DtoJWKS + */ + keys?: Array; +} + +/** + * Check if a given object implements the DtoJWKS interface. + */ +export function instanceOfDtoJWKS(value: object): value is DtoJWKS { + return true; +} + +export function DtoJWKSFromJSON(json: any): DtoJWKS { + return DtoJWKSFromJSONTyped(json, false); +} + +export function DtoJWKSFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoJWKS { + if (json == null) { + return json; + } + return { + keys: + json["keys"] == null + ? undefined + : (json["keys"] as Array).map(DtoJWKFromJSON), + }; +} + +export function DtoJWKSToJSON(json: any): DtoJWKS { + return DtoJWKSToJSONTyped(json, false); +} + +export function DtoJWKSToJSONTyped( + value?: DtoJWKS | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + keys: + value["keys"] == null + ? undefined + : (value["keys"] as Array).map(DtoJWKToJSON), + }; +} diff --git a/sdk/ts/src/models/DtoLogoutRequest.ts b/sdk/ts/src/models/DtoLogoutRequest.ts new file mode 100644 index 0000000..054e38d --- /dev/null +++ b/sdk/ts/src/models/DtoLogoutRequest.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoLogoutRequest + */ +export interface DtoLogoutRequest { + /** + * + * @type {string} + * @memberof DtoLogoutRequest + */ + refresh_token?: string; +} + +/** + * Check if a given object implements the DtoLogoutRequest interface. + */ +export function instanceOfDtoLogoutRequest( + value: object, +): value is DtoLogoutRequest { + return true; +} + +export function DtoLogoutRequestFromJSON(json: any): DtoLogoutRequest { + return DtoLogoutRequestFromJSONTyped(json, false); +} + +export function DtoLogoutRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoLogoutRequest { + if (json == null) { + return json; + } + return { + refresh_token: + json["refresh_token"] == null ? undefined : json["refresh_token"], + }; +} + +export function DtoLogoutRequestToJSON(json: any): DtoLogoutRequest { + return DtoLogoutRequestToJSONTyped(json, false); +} + +export function DtoLogoutRequestToJSONTyped( + value?: DtoLogoutRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + refresh_token: value["refresh_token"], + }; +} diff --git a/sdk/ts/src/models/DtoRefreshRequest.ts b/sdk/ts/src/models/DtoRefreshRequest.ts new file mode 100644 index 0000000..4cf2061 --- /dev/null +++ b/sdk/ts/src/models/DtoRefreshRequest.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoRefreshRequest + */ +export interface DtoRefreshRequest { + /** + * + * @type {string} + * @memberof DtoRefreshRequest + */ + refresh_token?: string; +} + +/** + * Check if a given object implements the DtoRefreshRequest interface. + */ +export function instanceOfDtoRefreshRequest( + value: object, +): value is DtoRefreshRequest { + return true; +} + +export function DtoRefreshRequestFromJSON(json: any): DtoRefreshRequest { + return DtoRefreshRequestFromJSONTyped(json, false); +} + +export function DtoRefreshRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoRefreshRequest { + if (json == null) { + return json; + } + return { + refresh_token: + json["refresh_token"] == null ? undefined : json["refresh_token"], + }; +} + +export function DtoRefreshRequestToJSON(json: any): DtoRefreshRequest { + return DtoRefreshRequestToJSONTyped(json, false); +} + +export function DtoRefreshRequestToJSONTyped( + value?: DtoRefreshRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + refresh_token: value["refresh_token"], + }; +} diff --git a/sdk/ts/src/models/DtoServerResponse.ts b/sdk/ts/src/models/DtoServerResponse.ts new file mode 100644 index 0000000..3e94c67 --- /dev/null +++ b/sdk/ts/src/models/DtoServerResponse.ts @@ -0,0 +1,155 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoServerResponse + */ +export interface DtoServerResponse { + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + created_at?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + hostname?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + id?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + organization_id?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + private_ip_address?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + public_ip_address?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + role?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + ssh_key_id?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + ssh_user?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + status?: string; + /** + * + * @type {string} + * @memberof DtoServerResponse + */ + updated_at?: string; +} + +/** + * Check if a given object implements the DtoServerResponse interface. + */ +export function instanceOfDtoServerResponse( + value: object, +): value is DtoServerResponse { + return true; +} + +export function DtoServerResponseFromJSON(json: any): DtoServerResponse { + return DtoServerResponseFromJSONTyped(json, false); +} + +export function DtoServerResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoServerResponse { + if (json == null) { + return json; + } + return { + created_at: json["created_at"] == null ? undefined : json["created_at"], + hostname: json["hostname"] == null ? undefined : json["hostname"], + id: json["id"] == null ? undefined : json["id"], + organization_id: + json["organization_id"] == null ? undefined : json["organization_id"], + private_ip_address: + json["private_ip_address"] == null + ? undefined + : json["private_ip_address"], + public_ip_address: + json["public_ip_address"] == null ? undefined : json["public_ip_address"], + role: json["role"] == null ? undefined : json["role"], + ssh_key_id: json["ssh_key_id"] == null ? undefined : json["ssh_key_id"], + ssh_user: json["ssh_user"] == null ? undefined : json["ssh_user"], + status: json["status"] == null ? undefined : json["status"], + updated_at: json["updated_at"] == null ? undefined : json["updated_at"], + }; +} + +export function DtoServerResponseToJSON(json: any): DtoServerResponse { + return DtoServerResponseToJSONTyped(json, false); +} + +export function DtoServerResponseToJSONTyped( + value?: DtoServerResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + created_at: value["created_at"], + hostname: value["hostname"], + id: value["id"], + organization_id: value["organization_id"], + private_ip_address: value["private_ip_address"], + public_ip_address: value["public_ip_address"], + role: value["role"], + ssh_key_id: value["ssh_key_id"], + ssh_user: value["ssh_user"], + status: value["status"], + updated_at: value["updated_at"], + }; +} diff --git a/sdk/ts/src/models/DtoSshResponse.ts b/sdk/ts/src/models/DtoSshResponse.ts new file mode 100644 index 0000000..4e1aed0 --- /dev/null +++ b/sdk/ts/src/models/DtoSshResponse.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoSshResponse + */ +export interface DtoSshResponse { + /** + * + * @type {string} + * @memberof DtoSshResponse + */ + created_at?: string; + /** + * + * @type {string} + * @memberof DtoSshResponse + */ + fingerprint?: string; + /** + * + * @type {string} + * @memberof DtoSshResponse + */ + id?: string; + /** + * + * @type {string} + * @memberof DtoSshResponse + */ + name?: string; + /** + * + * @type {string} + * @memberof DtoSshResponse + */ + organization_id?: string; + /** + * + * @type {string} + * @memberof DtoSshResponse + */ + public_key?: string; + /** + * + * @type {string} + * @memberof DtoSshResponse + */ + updated_at?: string; +} + +/** + * Check if a given object implements the DtoSshResponse interface. + */ +export function instanceOfDtoSshResponse( + value: object, +): value is DtoSshResponse { + return true; +} + +export function DtoSshResponseFromJSON(json: any): DtoSshResponse { + return DtoSshResponseFromJSONTyped(json, false); +} + +export function DtoSshResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoSshResponse { + if (json == null) { + return json; + } + return { + created_at: json["created_at"] == null ? undefined : json["created_at"], + fingerprint: json["fingerprint"] == null ? undefined : json["fingerprint"], + id: json["id"] == null ? undefined : json["id"], + name: json["name"] == null ? undefined : json["name"], + organization_id: + json["organization_id"] == null ? undefined : json["organization_id"], + public_key: json["public_key"] == null ? undefined : json["public_key"], + updated_at: json["updated_at"] == null ? undefined : json["updated_at"], + }; +} + +export function DtoSshResponseToJSON(json: any): DtoSshResponse { + return DtoSshResponseToJSONTyped(json, false); +} + +export function DtoSshResponseToJSONTyped( + value?: DtoSshResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + created_at: value["created_at"], + fingerprint: value["fingerprint"], + id: value["id"], + name: value["name"], + organization_id: value["organization_id"], + public_key: value["public_key"], + updated_at: value["updated_at"], + }; +} diff --git a/sdk/ts/src/models/DtoSshRevealResponse.ts b/sdk/ts/src/models/DtoSshRevealResponse.ts new file mode 100644 index 0000000..eb60798 --- /dev/null +++ b/sdk/ts/src/models/DtoSshRevealResponse.ts @@ -0,0 +1,127 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoSshRevealResponse + */ +export interface DtoSshRevealResponse { + /** + * + * @type {string} + * @memberof DtoSshRevealResponse + */ + created_at?: string; + /** + * + * @type {string} + * @memberof DtoSshRevealResponse + */ + fingerprint?: string; + /** + * + * @type {string} + * @memberof DtoSshRevealResponse + */ + id?: string; + /** + * + * @type {string} + * @memberof DtoSshRevealResponse + */ + name?: string; + /** + * + * @type {string} + * @memberof DtoSshRevealResponse + */ + organization_id?: string; + /** + * + * @type {string} + * @memberof DtoSshRevealResponse + */ + private_key?: string; + /** + * + * @type {string} + * @memberof DtoSshRevealResponse + */ + public_key?: string; + /** + * + * @type {string} + * @memberof DtoSshRevealResponse + */ + updated_at?: string; +} + +/** + * Check if a given object implements the DtoSshRevealResponse interface. + */ +export function instanceOfDtoSshRevealResponse( + value: object, +): value is DtoSshRevealResponse { + return true; +} + +export function DtoSshRevealResponseFromJSON(json: any): DtoSshRevealResponse { + return DtoSshRevealResponseFromJSONTyped(json, false); +} + +export function DtoSshRevealResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoSshRevealResponse { + if (json == null) { + return json; + } + return { + created_at: json["created_at"] == null ? undefined : json["created_at"], + fingerprint: json["fingerprint"] == null ? undefined : json["fingerprint"], + id: json["id"] == null ? undefined : json["id"], + name: json["name"] == null ? undefined : json["name"], + organization_id: + json["organization_id"] == null ? undefined : json["organization_id"], + private_key: json["private_key"] == null ? undefined : json["private_key"], + public_key: json["public_key"] == null ? undefined : json["public_key"], + updated_at: json["updated_at"] == null ? undefined : json["updated_at"], + }; +} + +export function DtoSshRevealResponseToJSON(json: any): DtoSshRevealResponse { + return DtoSshRevealResponseToJSONTyped(json, false); +} + +export function DtoSshRevealResponseToJSONTyped( + value?: DtoSshRevealResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + created_at: value["created_at"], + fingerprint: value["fingerprint"], + id: value["id"], + name: value["name"], + organization_id: value["organization_id"], + private_key: value["private_key"], + public_key: value["public_key"], + updated_at: value["updated_at"], + }; +} diff --git a/sdk/ts/src/models/DtoTaintResponse.ts b/sdk/ts/src/models/DtoTaintResponse.ts new file mode 100644 index 0000000..f7c59e6 --- /dev/null +++ b/sdk/ts/src/models/DtoTaintResponse.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoTaintResponse + */ +export interface DtoTaintResponse { + /** + * + * @type {string} + * @memberof DtoTaintResponse + */ + effect?: string; + /** + * + * @type {string} + * @memberof DtoTaintResponse + */ + id?: string; + /** + * + * @type {string} + * @memberof DtoTaintResponse + */ + key?: string; + /** + * + * @type {string} + * @memberof DtoTaintResponse + */ + value?: string; +} + +/** + * Check if a given object implements the DtoTaintResponse interface. + */ +export function instanceOfDtoTaintResponse( + value: object, +): value is DtoTaintResponse { + return true; +} + +export function DtoTaintResponseFromJSON(json: any): DtoTaintResponse { + return DtoTaintResponseFromJSONTyped(json, false); +} + +export function DtoTaintResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoTaintResponse { + if (json == null) { + return json; + } + return { + effect: json["effect"] == null ? undefined : json["effect"], + id: json["id"] == null ? undefined : json["id"], + key: json["key"] == null ? undefined : json["key"], + value: json["value"] == null ? undefined : json["value"], + }; +} + +export function DtoTaintResponseToJSON(json: any): DtoTaintResponse { + return DtoTaintResponseToJSONTyped(json, false); +} + +export function DtoTaintResponseToJSONTyped( + value?: DtoTaintResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + effect: value["effect"], + id: value["id"], + key: value["key"], + value: value["value"], + }; +} diff --git a/sdk/ts/src/models/DtoTokenPair.ts b/sdk/ts/src/models/DtoTokenPair.ts new file mode 100644 index 0000000..54be880 --- /dev/null +++ b/sdk/ts/src/models/DtoTokenPair.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoTokenPair + */ +export interface DtoTokenPair { + /** + * + * @type {string} + * @memberof DtoTokenPair + */ + access_token?: string; + /** + * + * @type {number} + * @memberof DtoTokenPair + */ + expires_in?: number; + /** + * + * @type {string} + * @memberof DtoTokenPair + */ + refresh_token?: string; + /** + * + * @type {string} + * @memberof DtoTokenPair + */ + token_type?: string; +} + +/** + * Check if a given object implements the DtoTokenPair interface. + */ +export function instanceOfDtoTokenPair(value: object): value is DtoTokenPair { + return true; +} + +export function DtoTokenPairFromJSON(json: any): DtoTokenPair { + return DtoTokenPairFromJSONTyped(json, false); +} + +export function DtoTokenPairFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoTokenPair { + if (json == null) { + return json; + } + return { + access_token: + json["access_token"] == null ? undefined : json["access_token"], + expires_in: json["expires_in"] == null ? undefined : json["expires_in"], + refresh_token: + json["refresh_token"] == null ? undefined : json["refresh_token"], + token_type: json["token_type"] == null ? undefined : json["token_type"], + }; +} + +export function DtoTokenPairToJSON(json: any): DtoTokenPair { + return DtoTokenPairToJSONTyped(json, false); +} + +export function DtoTokenPairToJSONTyped( + value?: DtoTokenPair | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + access_token: value["access_token"], + expires_in: value["expires_in"], + refresh_token: value["refresh_token"], + token_type: value["token_type"], + }; +} diff --git a/sdk/ts/src/models/DtoUpdateServerRequest.ts b/sdk/ts/src/models/DtoUpdateServerRequest.ts new file mode 100644 index 0000000..edbde25 --- /dev/null +++ b/sdk/ts/src/models/DtoUpdateServerRequest.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoUpdateServerRequest + */ +export interface DtoUpdateServerRequest { + /** + * + * @type {string} + * @memberof DtoUpdateServerRequest + */ + hostname?: string; + /** + * + * @type {string} + * @memberof DtoUpdateServerRequest + */ + private_ip_address?: string; + /** + * + * @type {string} + * @memberof DtoUpdateServerRequest + */ + public_ip_address?: string; + /** + * + * @type {string} + * @memberof DtoUpdateServerRequest + */ + role?: string; + /** + * + * @type {string} + * @memberof DtoUpdateServerRequest + */ + ssh_key_id?: string; + /** + * + * @type {string} + * @memberof DtoUpdateServerRequest + */ + ssh_user?: string; + /** + * + * @type {string} + * @memberof DtoUpdateServerRequest + */ + status?: string; +} + +/** + * Check if a given object implements the DtoUpdateServerRequest interface. + */ +export function instanceOfDtoUpdateServerRequest( + value: object, +): value is DtoUpdateServerRequest { + return true; +} + +export function DtoUpdateServerRequestFromJSON( + json: any, +): DtoUpdateServerRequest { + return DtoUpdateServerRequestFromJSONTyped(json, false); +} + +export function DtoUpdateServerRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoUpdateServerRequest { + if (json == null) { + return json; + } + return { + hostname: json["hostname"] == null ? undefined : json["hostname"], + private_ip_address: + json["private_ip_address"] == null + ? undefined + : json["private_ip_address"], + public_ip_address: + json["public_ip_address"] == null ? undefined : json["public_ip_address"], + role: json["role"] == null ? undefined : json["role"], + ssh_key_id: json["ssh_key_id"] == null ? undefined : json["ssh_key_id"], + ssh_user: json["ssh_user"] == null ? undefined : json["ssh_user"], + status: json["status"] == null ? undefined : json["status"], + }; +} + +export function DtoUpdateServerRequestToJSON( + json: any, +): DtoUpdateServerRequest { + return DtoUpdateServerRequestToJSONTyped(json, false); +} + +export function DtoUpdateServerRequestToJSONTyped( + value?: DtoUpdateServerRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + hostname: value["hostname"], + private_ip_address: value["private_ip_address"], + public_ip_address: value["public_ip_address"], + role: value["role"], + ssh_key_id: value["ssh_key_id"], + ssh_user: value["ssh_user"], + status: value["status"], + }; +} diff --git a/sdk/ts/src/models/DtoUpdateTaintRequest.ts b/sdk/ts/src/models/DtoUpdateTaintRequest.ts new file mode 100644 index 0000000..bc3c0bf --- /dev/null +++ b/sdk/ts/src/models/DtoUpdateTaintRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface DtoUpdateTaintRequest + */ +export interface DtoUpdateTaintRequest { + /** + * + * @type {string} + * @memberof DtoUpdateTaintRequest + */ + effect?: string; + /** + * + * @type {string} + * @memberof DtoUpdateTaintRequest + */ + key?: string; + /** + * + * @type {string} + * @memberof DtoUpdateTaintRequest + */ + value?: string; +} + +/** + * Check if a given object implements the DtoUpdateTaintRequest interface. + */ +export function instanceOfDtoUpdateTaintRequest( + value: object, +): value is DtoUpdateTaintRequest { + return true; +} + +export function DtoUpdateTaintRequestFromJSON( + json: any, +): DtoUpdateTaintRequest { + return DtoUpdateTaintRequestFromJSONTyped(json, false); +} + +export function DtoUpdateTaintRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DtoUpdateTaintRequest { + if (json == null) { + return json; + } + return { + effect: json["effect"] == null ? undefined : json["effect"], + key: json["key"] == null ? undefined : json["key"], + value: json["value"] == null ? undefined : json["value"], + }; +} + +export function DtoUpdateTaintRequestToJSON(json: any): DtoUpdateTaintRequest { + return DtoUpdateTaintRequestToJSONTyped(json, false); +} + +export function DtoUpdateTaintRequestToJSONTyped( + value?: DtoUpdateTaintRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + effect: value["effect"], + key: value["key"], + value: value["value"], + }; +} diff --git a/sdk/ts/src/models/HandlersCreateUserKeyRequest.ts b/sdk/ts/src/models/HandlersCreateUserKeyRequest.ts new file mode 100644 index 0000000..5d4ed26 --- /dev/null +++ b/sdk/ts/src/models/HandlersCreateUserKeyRequest.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersCreateUserKeyRequest + */ +export interface HandlersCreateUserKeyRequest { + /** + * optional TTL + * @type {number} + * @memberof HandlersCreateUserKeyRequest + */ + expires_in_hours?: number; + /** + * + * @type {string} + * @memberof HandlersCreateUserKeyRequest + */ + name?: string; +} + +/** + * Check if a given object implements the HandlersCreateUserKeyRequest interface. + */ +export function instanceOfHandlersCreateUserKeyRequest( + value: object, +): value is HandlersCreateUserKeyRequest { + return true; +} + +export function HandlersCreateUserKeyRequestFromJSON( + json: any, +): HandlersCreateUserKeyRequest { + return HandlersCreateUserKeyRequestFromJSONTyped(json, false); +} + +export function HandlersCreateUserKeyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersCreateUserKeyRequest { + if (json == null) { + return json; + } + return { + expires_in_hours: + json["expires_in_hours"] == null ? undefined : json["expires_in_hours"], + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function HandlersCreateUserKeyRequestToJSON( + json: any, +): HandlersCreateUserKeyRequest { + return HandlersCreateUserKeyRequestToJSONTyped(json, false); +} + +export function HandlersCreateUserKeyRequestToJSONTyped( + value?: HandlersCreateUserKeyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + expires_in_hours: value["expires_in_hours"], + name: value["name"], + }; +} diff --git a/sdk/ts/src/models/HandlersMeResponse.ts b/sdk/ts/src/models/HandlersMeResponse.ts new file mode 100644 index 0000000..c97cb08 --- /dev/null +++ b/sdk/ts/src/models/HandlersMeResponse.ts @@ -0,0 +1,171 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +import type { ModelsUserEmail } from "./ModelsUserEmail"; +import { + ModelsUserEmailFromJSON, + ModelsUserEmailFromJSONTyped, + ModelsUserEmailToJSON, + ModelsUserEmailToJSONTyped, +} from "./ModelsUserEmail"; +import type { ModelsOrganization } from "./ModelsOrganization"; +import { + ModelsOrganizationFromJSON, + ModelsOrganizationFromJSONTyped, + ModelsOrganizationToJSON, + ModelsOrganizationToJSONTyped, +} from "./ModelsOrganization"; + +/** + * + * @export + * @interface HandlersMeResponse + */ +export interface HandlersMeResponse { + /** + * + * @type {string} + * @memberof HandlersMeResponse + */ + avatar_url?: string; + /** + * + * @type {Date} + * @memberof HandlersMeResponse + */ + created_at?: Date; + /** + * + * @type {string} + * @memberof HandlersMeResponse + */ + display_name?: string; + /** + * + * @type {Array} + * @memberof HandlersMeResponse + */ + emails?: Array; + /** + * example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + * @type {string} + * @memberof HandlersMeResponse + */ + id?: string; + /** + * + * @type {boolean} + * @memberof HandlersMeResponse + */ + is_disabled?: boolean; + /** + * + * @type {Array} + * @memberof HandlersMeResponse + */ + organizations?: Array; + /** + * + * @type {string} + * @memberof HandlersMeResponse + */ + primary_email?: string; + /** + * + * @type {Date} + * @memberof HandlersMeResponse + */ + updated_at?: Date; +} + +/** + * Check if a given object implements the HandlersMeResponse interface. + */ +export function instanceOfHandlersMeResponse( + value: object, +): value is HandlersMeResponse { + return true; +} + +export function HandlersMeResponseFromJSON(json: any): HandlersMeResponse { + return HandlersMeResponseFromJSONTyped(json, false); +} + +export function HandlersMeResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersMeResponse { + if (json == null) { + return json; + } + return { + avatar_url: json["avatar_url"] == null ? undefined : json["avatar_url"], + created_at: + json["created_at"] == null ? undefined : new Date(json["created_at"]), + display_name: + json["display_name"] == null ? undefined : json["display_name"], + emails: + json["emails"] == null + ? undefined + : (json["emails"] as Array).map(ModelsUserEmailFromJSON), + id: json["id"] == null ? undefined : json["id"], + is_disabled: json["is_disabled"] == null ? undefined : json["is_disabled"], + organizations: + json["organizations"] == null + ? undefined + : (json["organizations"] as Array).map(ModelsOrganizationFromJSON), + primary_email: + json["primary_email"] == null ? undefined : json["primary_email"], + updated_at: + json["updated_at"] == null ? undefined : new Date(json["updated_at"]), + }; +} + +export function HandlersMeResponseToJSON(json: any): HandlersMeResponse { + return HandlersMeResponseToJSONTyped(json, false); +} + +export function HandlersMeResponseToJSONTyped( + value?: HandlersMeResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + avatar_url: value["avatar_url"], + created_at: + value["created_at"] == null + ? value["created_at"] + : value["created_at"].toISOString(), + display_name: value["display_name"], + emails: + value["emails"] == null + ? undefined + : (value["emails"] as Array).map(ModelsUserEmailToJSON), + id: value["id"], + is_disabled: value["is_disabled"], + organizations: + value["organizations"] == null + ? undefined + : (value["organizations"] as Array).map(ModelsOrganizationToJSON), + primary_email: value["primary_email"], + updated_at: + value["updated_at"] == null + ? value["updated_at"] + : value["updated_at"].toISOString(), + }; +} diff --git a/sdk/ts/src/models/HandlersMemberOut.ts b/sdk/ts/src/models/HandlersMemberOut.ts new file mode 100644 index 0000000..4dde0ab --- /dev/null +++ b/sdk/ts/src/models/HandlersMemberOut.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersMemberOut + */ +export interface HandlersMemberOut { + /** + * + * @type {string} + * @memberof HandlersMemberOut + */ + email?: string; + /** + * owner/admin/member + * @type {string} + * @memberof HandlersMemberOut + */ + role?: string; + /** + * + * @type {string} + * @memberof HandlersMemberOut + */ + user_id?: string; +} + +/** + * Check if a given object implements the HandlersMemberOut interface. + */ +export function instanceOfHandlersMemberOut( + value: object, +): value is HandlersMemberOut { + return true; +} + +export function HandlersMemberOutFromJSON(json: any): HandlersMemberOut { + return HandlersMemberOutFromJSONTyped(json, false); +} + +export function HandlersMemberOutFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersMemberOut { + if (json == null) { + return json; + } + return { + email: json["email"] == null ? undefined : json["email"], + role: json["role"] == null ? undefined : json["role"], + user_id: json["user_id"] == null ? undefined : json["user_id"], + }; +} + +export function HandlersMemberOutToJSON(json: any): HandlersMemberOut { + return HandlersMemberOutToJSONTyped(json, false); +} + +export function HandlersMemberOutToJSONTyped( + value?: HandlersMemberOut | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + email: value["email"], + role: value["role"], + user_id: value["user_id"], + }; +} diff --git a/sdk/ts/src/models/HandlersMemberUpsertReq.ts b/sdk/ts/src/models/HandlersMemberUpsertReq.ts new file mode 100644 index 0000000..6fb27b6 --- /dev/null +++ b/sdk/ts/src/models/HandlersMemberUpsertReq.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersMemberUpsertReq + */ +export interface HandlersMemberUpsertReq { + /** + * + * @type {string} + * @memberof HandlersMemberUpsertReq + */ + role?: string; + /** + * + * @type {string} + * @memberof HandlersMemberUpsertReq + */ + user_id?: string; +} + +/** + * Check if a given object implements the HandlersMemberUpsertReq interface. + */ +export function instanceOfHandlersMemberUpsertReq( + value: object, +): value is HandlersMemberUpsertReq { + return true; +} + +export function HandlersMemberUpsertReqFromJSON( + json: any, +): HandlersMemberUpsertReq { + return HandlersMemberUpsertReqFromJSONTyped(json, false); +} + +export function HandlersMemberUpsertReqFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersMemberUpsertReq { + if (json == null) { + return json; + } + return { + role: json["role"] == null ? undefined : json["role"], + user_id: json["user_id"] == null ? undefined : json["user_id"], + }; +} + +export function HandlersMemberUpsertReqToJSON( + json: any, +): HandlersMemberUpsertReq { + return HandlersMemberUpsertReqToJSONTyped(json, false); +} + +export function HandlersMemberUpsertReqToJSONTyped( + value?: HandlersMemberUpsertReq | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + role: value["role"], + user_id: value["user_id"], + }; +} diff --git a/sdk/ts/src/models/HandlersOrgCreateReq.ts b/sdk/ts/src/models/HandlersOrgCreateReq.ts new file mode 100644 index 0000000..8b82e36 --- /dev/null +++ b/sdk/ts/src/models/HandlersOrgCreateReq.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersOrgCreateReq + */ +export interface HandlersOrgCreateReq { + /** + * + * @type {string} + * @memberof HandlersOrgCreateReq + */ + domain?: string; + /** + * + * @type {string} + * @memberof HandlersOrgCreateReq + */ + name?: string; +} + +/** + * Check if a given object implements the HandlersOrgCreateReq interface. + */ +export function instanceOfHandlersOrgCreateReq( + value: object, +): value is HandlersOrgCreateReq { + return true; +} + +export function HandlersOrgCreateReqFromJSON(json: any): HandlersOrgCreateReq { + return HandlersOrgCreateReqFromJSONTyped(json, false); +} + +export function HandlersOrgCreateReqFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersOrgCreateReq { + if (json == null) { + return json; + } + return { + domain: json["domain"] == null ? undefined : json["domain"], + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function HandlersOrgCreateReqToJSON(json: any): HandlersOrgCreateReq { + return HandlersOrgCreateReqToJSONTyped(json, false); +} + +export function HandlersOrgCreateReqToJSONTyped( + value?: HandlersOrgCreateReq | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + domain: value["domain"], + name: value["name"], + }; +} diff --git a/sdk/ts/src/models/HandlersOrgKeyCreateReq.ts b/sdk/ts/src/models/HandlersOrgKeyCreateReq.ts new file mode 100644 index 0000000..823ad90 --- /dev/null +++ b/sdk/ts/src/models/HandlersOrgKeyCreateReq.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersOrgKeyCreateReq + */ +export interface HandlersOrgKeyCreateReq { + /** + * + * @type {number} + * @memberof HandlersOrgKeyCreateReq + */ + expires_in_hours?: number; + /** + * + * @type {string} + * @memberof HandlersOrgKeyCreateReq + */ + name?: string; +} + +/** + * Check if a given object implements the HandlersOrgKeyCreateReq interface. + */ +export function instanceOfHandlersOrgKeyCreateReq( + value: object, +): value is HandlersOrgKeyCreateReq { + return true; +} + +export function HandlersOrgKeyCreateReqFromJSON( + json: any, +): HandlersOrgKeyCreateReq { + return HandlersOrgKeyCreateReqFromJSONTyped(json, false); +} + +export function HandlersOrgKeyCreateReqFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersOrgKeyCreateReq { + if (json == null) { + return json; + } + return { + expires_in_hours: + json["expires_in_hours"] == null ? undefined : json["expires_in_hours"], + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function HandlersOrgKeyCreateReqToJSON( + json: any, +): HandlersOrgKeyCreateReq { + return HandlersOrgKeyCreateReqToJSONTyped(json, false); +} + +export function HandlersOrgKeyCreateReqToJSONTyped( + value?: HandlersOrgKeyCreateReq | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + expires_in_hours: value["expires_in_hours"], + name: value["name"], + }; +} diff --git a/sdk/ts/src/models/HandlersOrgKeyCreateResp.ts b/sdk/ts/src/models/HandlersOrgKeyCreateResp.ts new file mode 100644 index 0000000..45cf555 --- /dev/null +++ b/sdk/ts/src/models/HandlersOrgKeyCreateResp.ts @@ -0,0 +1,122 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersOrgKeyCreateResp + */ +export interface HandlersOrgKeyCreateResp { + /** + * + * @type {string} + * @memberof HandlersOrgKeyCreateResp + */ + created_at?: string; + /** + * + * @type {string} + * @memberof HandlersOrgKeyCreateResp + */ + expires_at?: string; + /** + * + * @type {string} + * @memberof HandlersOrgKeyCreateResp + */ + id?: string; + /** + * + * @type {string} + * @memberof HandlersOrgKeyCreateResp + */ + name?: string; + /** + * shown once: + * @type {string} + * @memberof HandlersOrgKeyCreateResp + */ + org_key?: string; + /** + * shown once: + * @type {string} + * @memberof HandlersOrgKeyCreateResp + */ + org_secret?: string; + /** + * "org" + * @type {string} + * @memberof HandlersOrgKeyCreateResp + */ + scope?: string; +} + +/** + * Check if a given object implements the HandlersOrgKeyCreateResp interface. + */ +export function instanceOfHandlersOrgKeyCreateResp( + value: object, +): value is HandlersOrgKeyCreateResp { + return true; +} + +export function HandlersOrgKeyCreateRespFromJSON( + json: any, +): HandlersOrgKeyCreateResp { + return HandlersOrgKeyCreateRespFromJSONTyped(json, false); +} + +export function HandlersOrgKeyCreateRespFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersOrgKeyCreateResp { + if (json == null) { + return json; + } + return { + created_at: json["created_at"] == null ? undefined : json["created_at"], + expires_at: json["expires_at"] == null ? undefined : json["expires_at"], + id: json["id"] == null ? undefined : json["id"], + name: json["name"] == null ? undefined : json["name"], + org_key: json["org_key"] == null ? undefined : json["org_key"], + org_secret: json["org_secret"] == null ? undefined : json["org_secret"], + scope: json["scope"] == null ? undefined : json["scope"], + }; +} + +export function HandlersOrgKeyCreateRespToJSON( + json: any, +): HandlersOrgKeyCreateResp { + return HandlersOrgKeyCreateRespToJSONTyped(json, false); +} + +export function HandlersOrgKeyCreateRespToJSONTyped( + value?: HandlersOrgKeyCreateResp | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + created_at: value["created_at"], + expires_at: value["expires_at"], + id: value["id"], + name: value["name"], + org_key: value["org_key"], + org_secret: value["org_secret"], + scope: value["scope"], + }; +} diff --git a/sdk/ts/src/models/HandlersOrgUpdateReq.ts b/sdk/ts/src/models/HandlersOrgUpdateReq.ts new file mode 100644 index 0000000..921a0cc --- /dev/null +++ b/sdk/ts/src/models/HandlersOrgUpdateReq.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersOrgUpdateReq + */ +export interface HandlersOrgUpdateReq { + /** + * + * @type {string} + * @memberof HandlersOrgUpdateReq + */ + domain?: string; + /** + * + * @type {string} + * @memberof HandlersOrgUpdateReq + */ + name?: string; +} + +/** + * Check if a given object implements the HandlersOrgUpdateReq interface. + */ +export function instanceOfHandlersOrgUpdateReq( + value: object, +): value is HandlersOrgUpdateReq { + return true; +} + +export function HandlersOrgUpdateReqFromJSON(json: any): HandlersOrgUpdateReq { + return HandlersOrgUpdateReqFromJSONTyped(json, false); +} + +export function HandlersOrgUpdateReqFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersOrgUpdateReq { + if (json == null) { + return json; + } + return { + domain: json["domain"] == null ? undefined : json["domain"], + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function HandlersOrgUpdateReqToJSON(json: any): HandlersOrgUpdateReq { + return HandlersOrgUpdateReqToJSONTyped(json, false); +} + +export function HandlersOrgUpdateReqToJSONTyped( + value?: HandlersOrgUpdateReq | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + domain: value["domain"], + name: value["name"], + }; +} diff --git a/sdk/ts/src/models/HandlersUpdateMeRequest.ts b/sdk/ts/src/models/HandlersUpdateMeRequest.ts new file mode 100644 index 0000000..fbe0a9e --- /dev/null +++ b/sdk/ts/src/models/HandlersUpdateMeRequest.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersUpdateMeRequest + */ +export interface HandlersUpdateMeRequest { + /** + * + * @type {string} + * @memberof HandlersUpdateMeRequest + */ + display_name?: string; +} + +/** + * Check if a given object implements the HandlersUpdateMeRequest interface. + */ +export function instanceOfHandlersUpdateMeRequest( + value: object, +): value is HandlersUpdateMeRequest { + return true; +} + +export function HandlersUpdateMeRequestFromJSON( + json: any, +): HandlersUpdateMeRequest { + return HandlersUpdateMeRequestFromJSONTyped(json, false); +} + +export function HandlersUpdateMeRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersUpdateMeRequest { + if (json == null) { + return json; + } + return { + display_name: + json["display_name"] == null ? undefined : json["display_name"], + }; +} + +export function HandlersUpdateMeRequestToJSON( + json: any, +): HandlersUpdateMeRequest { + return HandlersUpdateMeRequestToJSONTyped(json, false); +} + +export function HandlersUpdateMeRequestToJSONTyped( + value?: HandlersUpdateMeRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + display_name: value["display_name"], + }; +} diff --git a/sdk/ts/src/models/HandlersUserAPIKeyOut.ts b/sdk/ts/src/models/HandlersUserAPIKeyOut.ts new file mode 100644 index 0000000..f111e84 --- /dev/null +++ b/sdk/ts/src/models/HandlersUserAPIKeyOut.ts @@ -0,0 +1,121 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface HandlersUserAPIKeyOut + */ +export interface HandlersUserAPIKeyOut { + /** + * + * @type {string} + * @memberof HandlersUserAPIKeyOut + */ + created_at?: string; + /** + * + * @type {string} + * @memberof HandlersUserAPIKeyOut + */ + expires_at?: string; + /** + * + * @type {string} + * @memberof HandlersUserAPIKeyOut + */ + id?: string; + /** + * + * @type {string} + * @memberof HandlersUserAPIKeyOut + */ + last_used_at?: string; + /** + * + * @type {string} + * @memberof HandlersUserAPIKeyOut + */ + name?: string; + /** + * Shown only on create: + * @type {string} + * @memberof HandlersUserAPIKeyOut + */ + plain?: string; + /** + * "user" + * @type {string} + * @memberof HandlersUserAPIKeyOut + */ + scope?: string; +} + +/** + * Check if a given object implements the HandlersUserAPIKeyOut interface. + */ +export function instanceOfHandlersUserAPIKeyOut( + value: object, +): value is HandlersUserAPIKeyOut { + return true; +} + +export function HandlersUserAPIKeyOutFromJSON( + json: any, +): HandlersUserAPIKeyOut { + return HandlersUserAPIKeyOutFromJSONTyped(json, false); +} + +export function HandlersUserAPIKeyOutFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HandlersUserAPIKeyOut { + if (json == null) { + return json; + } + return { + created_at: json["created_at"] == null ? undefined : json["created_at"], + expires_at: json["expires_at"] == null ? undefined : json["expires_at"], + id: json["id"] == null ? undefined : json["id"], + last_used_at: + json["last_used_at"] == null ? undefined : json["last_used_at"], + name: json["name"] == null ? undefined : json["name"], + plain: json["plain"] == null ? undefined : json["plain"], + scope: json["scope"] == null ? undefined : json["scope"], + }; +} + +export function HandlersUserAPIKeyOutToJSON(json: any): HandlersUserAPIKeyOut { + return HandlersUserAPIKeyOutToJSONTyped(json, false); +} + +export function HandlersUserAPIKeyOutToJSONTyped( + value?: HandlersUserAPIKeyOut | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + created_at: value["created_at"], + expires_at: value["expires_at"], + id: value["id"], + last_used_at: value["last_used_at"], + name: value["name"], + plain: value["plain"], + scope: value["scope"], + }; +} diff --git a/sdk/ts/src/models/ModelsAPIKey.ts b/sdk/ts/src/models/ModelsAPIKey.ts new file mode 100644 index 0000000..ad325db --- /dev/null +++ b/sdk/ts/src/models/ModelsAPIKey.ts @@ -0,0 +1,164 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface ModelsAPIKey + */ +export interface ModelsAPIKey { + /** + * + * @type {Date} + * @memberof ModelsAPIKey + */ + created_at?: Date; + /** + * + * @type {Date} + * @memberof ModelsAPIKey + */ + expires_at?: Date; + /** + * + * @type {string} + * @memberof ModelsAPIKey + */ + id?: string; + /** + * + * @type {Date} + * @memberof ModelsAPIKey + */ + last_used_at?: Date; + /** + * + * @type {string} + * @memberof ModelsAPIKey + */ + name?: string; + /** + * + * @type {string} + * @memberof ModelsAPIKey + */ + org_id?: string; + /** + * + * @type {string} + * @memberof ModelsAPIKey + */ + prefix?: string; + /** + * + * @type {boolean} + * @memberof ModelsAPIKey + */ + revoked?: boolean; + /** + * + * @type {string} + * @memberof ModelsAPIKey + */ + scope?: string; + /** + * + * @type {Date} + * @memberof ModelsAPIKey + */ + updated_at?: Date; + /** + * + * @type {string} + * @memberof ModelsAPIKey + */ + user_id?: string; +} + +/** + * Check if a given object implements the ModelsAPIKey interface. + */ +export function instanceOfModelsAPIKey(value: object): value is ModelsAPIKey { + return true; +} + +export function ModelsAPIKeyFromJSON(json: any): ModelsAPIKey { + return ModelsAPIKeyFromJSONTyped(json, false); +} + +export function ModelsAPIKeyFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ModelsAPIKey { + if (json == null) { + return json; + } + return { + created_at: + json["created_at"] == null ? undefined : new Date(json["created_at"]), + expires_at: + json["expires_at"] == null ? undefined : new Date(json["expires_at"]), + id: json["id"] == null ? undefined : json["id"], + last_used_at: + json["last_used_at"] == null ? undefined : new Date(json["last_used_at"]), + name: json["name"] == null ? undefined : json["name"], + org_id: json["org_id"] == null ? undefined : json["org_id"], + prefix: json["prefix"] == null ? undefined : json["prefix"], + revoked: json["revoked"] == null ? undefined : json["revoked"], + scope: json["scope"] == null ? undefined : json["scope"], + updated_at: + json["updated_at"] == null ? undefined : new Date(json["updated_at"]), + user_id: json["user_id"] == null ? undefined : json["user_id"], + }; +} + +export function ModelsAPIKeyToJSON(json: any): ModelsAPIKey { + return ModelsAPIKeyToJSONTyped(json, false); +} + +export function ModelsAPIKeyToJSONTyped( + value?: ModelsAPIKey | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + created_at: + value["created_at"] == null + ? value["created_at"] + : value["created_at"].toISOString(), + expires_at: + value["expires_at"] == null + ? value["expires_at"] + : value["expires_at"].toISOString(), + id: value["id"], + last_used_at: + value["last_used_at"] == null + ? value["last_used_at"] + : value["last_used_at"].toISOString(), + name: value["name"], + org_id: value["org_id"], + prefix: value["prefix"], + revoked: value["revoked"], + scope: value["scope"], + updated_at: + value["updated_at"] == null + ? value["updated_at"] + : value["updated_at"].toISOString(), + user_id: value["user_id"], + }; +} diff --git a/sdk/ts/src/models/ModelsOrganization.ts b/sdk/ts/src/models/ModelsOrganization.ts new file mode 100644 index 0000000..bb81f80 --- /dev/null +++ b/sdk/ts/src/models/ModelsOrganization.ts @@ -0,0 +1,110 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface ModelsOrganization + */ +export interface ModelsOrganization { + /** + * + * @type {Date} + * @memberof ModelsOrganization + */ + created_at?: Date; + /** + * + * @type {string} + * @memberof ModelsOrganization + */ + domain?: string; + /** + * example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + * @type {string} + * @memberof ModelsOrganization + */ + id?: string; + /** + * + * @type {string} + * @memberof ModelsOrganization + */ + name?: string; + /** + * + * @type {Date} + * @memberof ModelsOrganization + */ + updated_at?: Date; +} + +/** + * Check if a given object implements the ModelsOrganization interface. + */ +export function instanceOfModelsOrganization( + value: object, +): value is ModelsOrganization { + return true; +} + +export function ModelsOrganizationFromJSON(json: any): ModelsOrganization { + return ModelsOrganizationFromJSONTyped(json, false); +} + +export function ModelsOrganizationFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ModelsOrganization { + if (json == null) { + return json; + } + return { + created_at: + json["created_at"] == null ? undefined : new Date(json["created_at"]), + domain: json["domain"] == null ? undefined : json["domain"], + id: json["id"] == null ? undefined : json["id"], + name: json["name"] == null ? undefined : json["name"], + updated_at: + json["updated_at"] == null ? undefined : new Date(json["updated_at"]), + }; +} + +export function ModelsOrganizationToJSON(json: any): ModelsOrganization { + return ModelsOrganizationToJSONTyped(json, false); +} + +export function ModelsOrganizationToJSONTyped( + value?: ModelsOrganization | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + created_at: + value["created_at"] == null + ? value["created_at"] + : value["created_at"].toISOString(), + domain: value["domain"], + id: value["id"], + name: value["name"], + updated_at: + value["updated_at"] == null + ? value["updated_at"] + : value["updated_at"].toISOString(), + }; +} diff --git a/sdk/ts/src/models/ModelsUser.ts b/sdk/ts/src/models/ModelsUser.ts new file mode 100644 index 0000000..2eebc65 --- /dev/null +++ b/sdk/ts/src/models/ModelsUser.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface ModelsUser + */ +export interface ModelsUser { + /** + * + * @type {string} + * @memberof ModelsUser + */ + avatar_url?: string; + /** + * + * @type {Date} + * @memberof ModelsUser + */ + created_at?: Date; + /** + * + * @type {string} + * @memberof ModelsUser + */ + display_name?: string; + /** + * example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + * @type {string} + * @memberof ModelsUser + */ + id?: string; + /** + * + * @type {boolean} + * @memberof ModelsUser + */ + is_disabled?: boolean; + /** + * + * @type {string} + * @memberof ModelsUser + */ + primary_email?: string; + /** + * + * @type {Date} + * @memberof ModelsUser + */ + updated_at?: Date; +} + +/** + * Check if a given object implements the ModelsUser interface. + */ +export function instanceOfModelsUser(value: object): value is ModelsUser { + return true; +} + +export function ModelsUserFromJSON(json: any): ModelsUser { + return ModelsUserFromJSONTyped(json, false); +} + +export function ModelsUserFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ModelsUser { + if (json == null) { + return json; + } + return { + avatar_url: json["avatar_url"] == null ? undefined : json["avatar_url"], + created_at: + json["created_at"] == null ? undefined : new Date(json["created_at"]), + display_name: + json["display_name"] == null ? undefined : json["display_name"], + id: json["id"] == null ? undefined : json["id"], + is_disabled: json["is_disabled"] == null ? undefined : json["is_disabled"], + primary_email: + json["primary_email"] == null ? undefined : json["primary_email"], + updated_at: + json["updated_at"] == null ? undefined : new Date(json["updated_at"]), + }; +} + +export function ModelsUserToJSON(json: any): ModelsUser { + return ModelsUserToJSONTyped(json, false); +} + +export function ModelsUserToJSONTyped( + value?: ModelsUser | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + avatar_url: value["avatar_url"], + created_at: + value["created_at"] == null + ? value["created_at"] + : value["created_at"].toISOString(), + display_name: value["display_name"], + id: value["id"], + is_disabled: value["is_disabled"], + primary_email: value["primary_email"], + updated_at: + value["updated_at"] == null + ? value["updated_at"] + : value["updated_at"].toISOString(), + }; +} diff --git a/sdk/ts/src/models/ModelsUserEmail.ts b/sdk/ts/src/models/ModelsUserEmail.ts new file mode 100644 index 0000000..a188962 --- /dev/null +++ b/sdk/ts/src/models/ModelsUserEmail.ts @@ -0,0 +1,142 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +import type { ModelsUser } from "./ModelsUser"; +import { + ModelsUserFromJSON, + ModelsUserFromJSONTyped, + ModelsUserToJSON, + ModelsUserToJSONTyped, +} from "./ModelsUser"; + +/** + * + * @export + * @interface ModelsUserEmail + */ +export interface ModelsUserEmail { + /** + * + * @type {Date} + * @memberof ModelsUserEmail + */ + created_at?: Date; + /** + * + * @type {string} + * @memberof ModelsUserEmail + */ + email?: string; + /** + * example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + * @type {string} + * @memberof ModelsUserEmail + */ + id?: string; + /** + * + * @type {boolean} + * @memberof ModelsUserEmail + */ + is_primary?: boolean; + /** + * + * @type {boolean} + * @memberof ModelsUserEmail + */ + is_verified?: boolean; + /** + * + * @type {Date} + * @memberof ModelsUserEmail + */ + updated_at?: Date; + /** + * + * @type {ModelsUser} + * @memberof ModelsUserEmail + */ + user?: ModelsUser; + /** + * + * @type {string} + * @memberof ModelsUserEmail + */ + user_id?: string; +} + +/** + * Check if a given object implements the ModelsUserEmail interface. + */ +export function instanceOfModelsUserEmail( + value: object, +): value is ModelsUserEmail { + return true; +} + +export function ModelsUserEmailFromJSON(json: any): ModelsUserEmail { + return ModelsUserEmailFromJSONTyped(json, false); +} + +export function ModelsUserEmailFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ModelsUserEmail { + if (json == null) { + return json; + } + return { + created_at: + json["created_at"] == null ? undefined : new Date(json["created_at"]), + email: json["email"] == null ? undefined : json["email"], + id: json["id"] == null ? undefined : json["id"], + is_primary: json["is_primary"] == null ? undefined : json["is_primary"], + is_verified: json["is_verified"] == null ? undefined : json["is_verified"], + updated_at: + json["updated_at"] == null ? undefined : new Date(json["updated_at"]), + user: json["user"] == null ? undefined : ModelsUserFromJSON(json["user"]), + user_id: json["user_id"] == null ? undefined : json["user_id"], + }; +} + +export function ModelsUserEmailToJSON(json: any): ModelsUserEmail { + return ModelsUserEmailToJSONTyped(json, false); +} + +export function ModelsUserEmailToJSONTyped( + value?: ModelsUserEmail | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + created_at: + value["created_at"] == null + ? value["created_at"] + : value["created_at"].toISOString(), + email: value["email"], + id: value["id"], + is_primary: value["is_primary"], + is_verified: value["is_verified"], + updated_at: + value["updated_at"] == null + ? value["updated_at"] + : value["updated_at"].toISOString(), + user: ModelsUserToJSON(value["user"]), + user_id: value["user_id"], + }; +} diff --git a/sdk/ts/src/models/UtilsErrorResponse.ts b/sdk/ts/src/models/UtilsErrorResponse.ts new file mode 100644 index 0000000..5e83fd3 --- /dev/null +++ b/sdk/ts/src/models/UtilsErrorResponse.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from "../runtime"; +/** + * + * @export + * @interface UtilsErrorResponse + */ +export interface UtilsErrorResponse { + /** + * A machine-readable error code, e.g. "validation_error" + * example: validation_error + * @type {string} + * @memberof UtilsErrorResponse + */ + code?: string; + /** + * Human-readable message + * example: slug is required + * @type {string} + * @memberof UtilsErrorResponse + */ + message?: string; +} + +/** + * Check if a given object implements the UtilsErrorResponse interface. + */ +export function instanceOfUtilsErrorResponse( + value: object, +): value is UtilsErrorResponse { + return true; +} + +export function UtilsErrorResponseFromJSON(json: any): UtilsErrorResponse { + return UtilsErrorResponseFromJSONTyped(json, false); +} + +export function UtilsErrorResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UtilsErrorResponse { + if (json == null) { + return json; + } + return { + code: json["code"] == null ? undefined : json["code"], + message: json["message"] == null ? undefined : json["message"], + }; +} + +export function UtilsErrorResponseToJSON(json: any): UtilsErrorResponse { + return UtilsErrorResponseToJSONTyped(json, false); +} + +export function UtilsErrorResponseToJSONTyped( + value?: UtilsErrorResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + code: value["code"], + message: value["message"], + }; +} diff --git a/sdk/ts/src/models/index.ts b/sdk/ts/src/models/index.ts new file mode 100644 index 0000000..1f95a32 --- /dev/null +++ b/sdk/ts/src/models/index.ts @@ -0,0 +1,32 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from "./DtoAuthStartResponse"; +export * from "./DtoCreateSSHRequest"; +export * from "./DtoCreateServerRequest"; +export * from "./DtoCreateTaintRequest"; +export * from "./DtoJWK"; +export * from "./DtoJWKS"; +export * from "./DtoLogoutRequest"; +export * from "./DtoRefreshRequest"; +export * from "./DtoServerResponse"; +export * from "./DtoSshResponse"; +export * from "./DtoSshRevealResponse"; +export * from "./DtoTaintResponse"; +export * from "./DtoTokenPair"; +export * from "./DtoUpdateServerRequest"; +export * from "./DtoUpdateTaintRequest"; +export * from "./HandlersCreateUserKeyRequest"; +export * from "./HandlersMeResponse"; +export * from "./HandlersMemberOut"; +export * from "./HandlersMemberUpsertReq"; +export * from "./HandlersOrgCreateReq"; +export * from "./HandlersOrgKeyCreateReq"; +export * from "./HandlersOrgKeyCreateResp"; +export * from "./HandlersOrgUpdateReq"; +export * from "./HandlersUpdateMeRequest"; +export * from "./HandlersUserAPIKeyOut"; +export * from "./ModelsAPIKey"; +export * from "./ModelsOrganization"; +export * from "./ModelsUser"; +export * from "./ModelsUserEmail"; +export * from "./UtilsErrorResponse"; diff --git a/sdk/ts/src/runtime.ts b/sdk/ts/src/runtime.ts new file mode 100644 index 0000000..71111cd --- /dev/null +++ b/sdk/ts/src/runtime.ts @@ -0,0 +1,530 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * AutoGlue API + * API for managing K3s clusters across cloud providers + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +export const BASE_PATH = "http://localhost:8080/api/v1".replace(/\/+$/, ""); + +export interface ConfigurationParameters { + basePath?: string; // override base path + fetchApi?: FetchAPI; // override for fetch implementation + middleware?: Middleware[]; // middleware to apply before/after fetch requests + queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings + username?: string; // parameter for basic security + password?: string; // parameter for basic security + apiKey?: + | string + | Promise + | ((name: string) => string | Promise); // parameter for apiKey security + accessToken?: + | string + | Promise + | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security + headers?: HTTPHeaders; //header params we want to use on every request + credentials?: RequestCredentials; //value for the credentials param we want to use on each request +} + +export class Configuration { + constructor(private configuration: ConfigurationParameters = {}) {} + + set config(configuration: Configuration) { + this.configuration = configuration; + } + + get basePath(): string { + return this.configuration.basePath != null + ? this.configuration.basePath + : BASE_PATH; + } + + get fetchApi(): FetchAPI | undefined { + return this.configuration.fetchApi; + } + + get middleware(): Middleware[] { + return this.configuration.middleware || []; + } + + get queryParamsStringify(): (params: HTTPQuery) => string { + return this.configuration.queryParamsStringify || querystring; + } + + get username(): string | undefined { + return this.configuration.username; + } + + get password(): string | undefined { + return this.configuration.password; + } + + get apiKey(): ((name: string) => string | Promise) | undefined { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === "function" ? apiKey : () => apiKey; + } + return undefined; + } + + get accessToken(): + | ((name?: string, scopes?: string[]) => string | Promise) + | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === "function" + ? accessToken + : async () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export const DefaultConfig = new Configuration(); + +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + private static readonly jsonRegex = new RegExp( + "^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$", + "i", + ); + private middleware: Middleware[]; + + constructor(protected configuration = DefaultConfig) { + this.middleware = configuration.middleware; + } + + withMiddleware(this: T, ...middlewares: Middleware[]) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + + withPreMiddleware( + this: T, + ...preMiddlewares: Array + ) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + + withPostMiddleware( + this: T, + ...postMiddlewares: Array + ) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + + protected async request( + context: RequestOpts, + initOverrides?: RequestInit | InitOverrideFunction, + ): Promise { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && response.status >= 200 && response.status < 300) { + return response; + } + throw new ResponseError(response, "Response returned an error code"); + } + + private async createFetchParams( + context: RequestOpts, + initOverrides?: RequestInit | InitOverrideFunction, + ) { + let url = this.configuration.basePath + context.path; + if ( + context.query !== undefined && + Object.keys(context.query).length !== 0 + ) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += "?" + this.configuration.queryParamsStringify(context.query); + } + + const headers = Object.assign( + {}, + this.configuration.headers, + context.headers, + ); + Object.keys(headers).forEach((key) => + headers[key] === undefined ? delete headers[key] : {}, + ); + + const initOverrideFn = + typeof initOverrides === "function" + ? initOverrides + : async () => initOverrides; + + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + + const overriddenInit: RequestInit = { + ...initParams, + ...(await initOverrideFn({ + init: initParams, + context, + })), + }; + + let body: any; + if ( + isFormData(overriddenInit.body) || + overriddenInit.body instanceof URLSearchParams || + isBlob(overriddenInit.body) + ) { + body = overriddenInit.body; + } else if (this.isJsonMime(headers["Content-Type"])) { + body = JSON.stringify(overriddenInit.body); + } else { + body = overriddenInit.body; + } + + const init: RequestInit = { + ...overriddenInit, + body, + }; + + return { url, init }; + } + + private fetchApi = async (url: string, init: RequestInit) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = + (await middleware.pre({ + fetch: this.fetchApi, + ...fetchParams, + })) || fetchParams; + } + } + let response: Response | undefined = undefined; + try { + response = await (this.configuration.fetchApi || fetch)( + fetchParams.url, + fetchParams.init, + ); + } catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = + (await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + })) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError( + e, + "The request failed and the interceptors did not return an alternative response", + ); + } else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = + (await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + })) || response; + } + } + return response; + }; + + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone(this: T): T { + const constructor = this.constructor as any; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +} + +function isBlob(value: any): value is Blob { + return typeof Blob !== "undefined" && value instanceof Blob; +} + +function isFormData(value: any): value is FormData { + return typeof FormData !== "undefined" && value instanceof FormData; +} + +export class ResponseError extends Error { + override name: "ResponseError" = "ResponseError"; + constructor( + public response: Response, + msg?: string, + ) { + super(msg); + } +} + +export class FetchError extends Error { + override name: "FetchError" = "FetchError"; + constructor( + public cause: Error, + msg?: string, + ) { + super(msg); + } +} + +export class RequiredError extends Error { + override name: "RequiredError" = "RequiredError"; + constructor( + public field: string, + msg?: string, + ) { + super(msg); + } +} + +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +export type FetchAPI = WindowOrWorkerGlobalScope["fetch"]; + +export type Json = any; +export type HTTPMethod = + | "GET" + | "POST" + | "PUT" + | "PATCH" + | "DELETE" + | "OPTIONS" + | "HEAD"; +export type HTTPHeaders = { [key: string]: string }; +export type HTTPQuery = { + [key: string]: + | string + | number + | null + | boolean + | Array + | Set + | HTTPQuery; +}; +export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { + headers?: HTTPHeaders; + method: HTTPMethod; + credentials?: RequestCredentials; + body?: HTTPBody; +}; +export type ModelPropertyNaming = + | "camelCase" + | "snake_case" + | "PascalCase" + | "original"; + +export type InitOverrideFunction = (requestContext: { + init: HTTPRequestInit; + context: RequestOpts; +}) => Promise; + +export interface FetchParams { + url: string; + init: RequestInit; +} + +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} + +export function querystring(params: HTTPQuery, prefix: string = ""): string { + return Object.keys(params) + .map((key) => querystringSingleKey(key, params[key], prefix)) + .filter((part) => part.length > 0) + .join("&"); +} + +function querystringSingleKey( + key: string, + value: + | string + | number + | null + | undefined + | boolean + | Array + | Set + | HTTPQuery, + keyPrefix: string = "", +): string { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value + .map((singleValue) => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} + +export function exists(json: any, key: string) { + const value = json[key]; + return value !== null && value !== undefined; +} + +export function mapValues(data: any, fn: (item: any) => any) { + const result: { [key: string]: any } = {}; + for (const key of Object.keys(data)) { + result[key] = fn(data[key]); + } + return result; +} + +export function canConsumeForm(consumes: Consume[]): boolean { + for (const consume of consumes) { + if ("multipart/form-data" === consume.contentType) { + return true; + } + } + return false; +} + +export interface Consume { + contentType: string; +} + +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} + +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} + +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} + +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; +} + +export interface ApiResponse { + raw: Response; + value(): Promise; +} + +export interface ResponseTransformer { + (json: any): T; +} + +export class JSONApiResponse { + constructor( + public raw: Response, + private transformer: ResponseTransformer = (jsonValue: any) => jsonValue, + ) {} + + async value(): Promise { + return this.transformer(await this.raw.json()); + } +} + +export class VoidApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return undefined; + } +} + +export class BlobApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.blob(); + } +} + +export class TextApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.text(); + } +} diff --git a/sdk/ts/tsconfig.esm.json b/sdk/ts/tsconfig.esm.json new file mode 100644 index 0000000..2c0331c --- /dev/null +++ b/sdk/ts/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm" + } +} diff --git a/sdk/ts/tsconfig.json b/sdk/ts/tsconfig.json new file mode 100644 index 0000000..e69c9c2 --- /dev/null +++ b/sdk/ts/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "declaration": true, + "target": "es6", + "module": "commonjs", + "moduleResolution": "node", + "outDir": "dist", + "typeRoots": ["node_modules/@types"] + }, + "exclude": ["dist", "node_modules"] +} diff --git a/terraform-provider-autoglue/Makefile b/terraform-provider-autoglue/Makefile new file mode 100644 index 0000000..efe381a --- /dev/null +++ b/terraform-provider-autoglue/Makefile @@ -0,0 +1,23 @@ +BIN ?= terraform-provider-autoglue +VER ?= 0.0.1 +OS ?= $(shell uname -s | tr '[:upper:]' '[:lower:]') +ARCH ?= $(shell uname -m | sed 's/x86_64/amd64/;s/arm64/arm64/') + +.PHONY: build tidy dev clean + +build: + go build -o $(BIN) . + +tidy: + go mod tidy + +dev: + @echo "Installing dev provider v$(VER) for $(OS)_$(ARCH)..." + @DST="$${HOME}/.terraform.d/plugins/glueops/autoglue/autoglue/$(VER)/$(OS)_$(ARCH)"; \ + mkdir -p "$$DST"; \ + go build -o "$$DST/terraform-provider-autoglue_v$(VER)" .; \ + echo "Provider installed to $$DST"; \ + echo "Run: terraform init -upgrade" + +clean: + rm -f $(BIN) diff --git a/terraform-provider-autoglue/go.mod b/terraform-provider-autoglue/go.mod new file mode 100644 index 0000000..88be9f8 --- /dev/null +++ b/terraform-provider-autoglue/go.mod @@ -0,0 +1,36 @@ +module github.com/glueops/terraform-provider-gsot + +go 1.25.3 + +require ( + github.com/glueops/autoglue-sdk v0.0.0-00010101000000-000000000000 + github.com/hashicorp/terraform-plugin-framework v1.16.1 + github.com/hashicorp/terraform-plugin-framework-validators v0.19.0 +) + +require ( + github.com/fatih/color v1.15.0 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-plugin v1.7.0 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/terraform-plugin-go v0.29.0 // indirect + github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect + github.com/hashicorp/terraform-registry-address v0.4.0 // indirect + github.com/hashicorp/terraform-svchost v0.1.1 // indirect + github.com/hashicorp/yamux v0.1.2 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + google.golang.org/grpc v1.75.1 // indirect + google.golang.org/protobuf v1.36.9 // indirect +) + +replace github.com/glueops/autoglue-sdk => ../sdk/go diff --git a/terraform-provider-autoglue/go.sum b/terraform-provider-autoglue/go.sum new file mode 100644 index 0000000..e1c012b --- /dev/null +++ b/terraform-provider-autoglue/go.sum @@ -0,0 +1,101 @@ +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshfk+mA= +github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/terraform-plugin-framework v1.16.1 h1:1+zwFm3MEqd/0K3YBB2v9u9DtyYHyEuhVOfeIXbteWA= +github.com/hashicorp/terraform-plugin-framework v1.16.1/go.mod h1:0xFOxLy5lRzDTayc4dzK/FakIgBhNf/lC4499R9cV4Y= +github.com/hashicorp/terraform-plugin-framework-validators v0.19.0 h1:Zz3iGgzxe/1XBkooZCewS0nJAaCFPFPHdNJd8FgE4Ow= +github.com/hashicorp/terraform-plugin-framework-validators v0.19.0/go.mod h1:GBKTNGbGVJohU03dZ7U8wHqc2zYnMUawgCN+gC0itLc= +github.com/hashicorp/terraform-plugin-go v0.29.0 h1:1nXKl/nSpaYIUBU1IG/EsDOX0vv+9JxAltQyDMpq5mU= +github.com/hashicorp/terraform-plugin-go v0.29.0/go.mod h1:vYZbIyvxyy0FWSmDHChCqKvI40cFTDGSb3D8D70i9GM= +github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= +github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= +github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= +github.com/hashicorp/terraform-registry-address v0.4.0/go.mod h1:LRS1Ay0+mAiRkUyltGT+UHWkIqTFvigGn/LbMshfflE= +github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= +github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= +github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= +github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= +github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/terraform-provider-autoglue/internal/provider/client.go b/terraform-provider-autoglue/internal/provider/client.go new file mode 100644 index 0000000..849d03c --- /dev/null +++ b/terraform-provider-autoglue/internal/provider/client.go @@ -0,0 +1,78 @@ +package provider + +import ( + "context" + "net/http" + + "github.com/glueops/autoglue-sdk" + "github.com/hashicorp/terraform-plugin-framework/diag" +) + +type Client struct { + SDK *autoglue.APIClient +} + +func NewClient(_ context.Context, cfg providerModel) (*Client, diag.Diagnostics) { + var diags diag.Diagnostics + + conf := autoglue.NewConfiguration() + conf.Servers = autoglue.ServerConfigurations{{URL: cfg.Addr.ValueString()}} + + // Attach auth headers for *every* request + rt := http.DefaultTransport + conf.HTTPClient = &http.Client{ + Transport: headerRoundTripper{ + under: rt, + bearer: strOrEmpty(cfg.Bearer), + apiKey: strOrEmpty(cfg.APIKey), + orgKey: strOrEmpty(cfg.OrgKey), + orgSecret: strOrEmpty(cfg.OrgSecret), + orgID: strOrEmpty(cfg.OrgID), + }, + } + + return &Client{SDK: autoglue.NewAPIClient(conf)}, diags +} + +type headerRoundTripper struct { + under http.RoundTripper + bearer string + apiKey string + orgKey string + orgSecret string + orgID string +} + +func (h headerRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + // Bearer -> Authorization + if h.bearer != "" { + req.Header.Set("Authorization", "Bearer "+h.bearer) + } + // User API Key + if h.apiKey != "" { + req.Header.Set("X-API-KEY", h.apiKey) + } + // Org key/secret + if h.orgKey != "" { + req.Header.Set("X-ORG-KEY", h.orgKey) + } + if h.orgSecret != "" { + req.Header.Set("X-ORG-SECRET", h.orgSecret) + } + // Org selection header (user or key where needed) + if h.orgID != "" { + req.Header.Set("X-Org-ID", h.orgID) + } + return h.under.RoundTrip(req) +} + +func strOrEmpty(v interface { + IsNull() bool + IsUnknown() bool + ValueString() string +}) string { + if v.IsNull() || v.IsUnknown() { + return "" + } + return v.ValueString() +} diff --git a/terraform-provider-autoglue/internal/provider/config.go b/terraform-provider-autoglue/internal/provider/config.go new file mode 100644 index 0000000..506ed78 --- /dev/null +++ b/terraform-provider-autoglue/internal/provider/config.go @@ -0,0 +1,99 @@ +package provider + +import ( + "context" + "os" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/provider" + pschema "github.com/hashicorp/terraform-plugin-framework/provider/schema" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +type providerModel struct { + Addr types.String `tfsdk:"addr"` + Bearer types.String `tfsdk:"bearer"` + APIKey types.String `tfsdk:"api_key"` + OrgKey types.String `tfsdk:"org_key"` + OrgSecret types.String `tfsdk:"org_secret"` + OrgID types.String `tfsdk:"org_id"` +} + +func providerConfigSchema() map[string]pschema.Attribute { + return map[string]pschema.Attribute{ + "addr": pschema.StringAttribute{ + Optional: true, + Description: "Base URL to the autoglue API (e.g. https://gsot.example.com/api/v1). Defaults to http://localhost:8080/api/v1.", + }, + "bearer": pschema.StringAttribute{ + Optional: true, + Sensitive: true, + Description: "Bearer token (user access token).", + }, + "api_key": pschema.StringAttribute{ + Optional: true, + Sensitive: true, + Description: "User API key for key-only auth.", + }, + "org_key": pschema.StringAttribute{ + Optional: true, + Sensitive: true, + Description: "Org-scoped key for machine auth.", + }, + "org_secret": pschema.StringAttribute{ + Optional: true, + Sensitive: true, + Description: "Org-scoped secret for machine auth.", + }, + "org_id": pschema.StringAttribute{ + Optional: true, + Description: "Organization ID (UUID). Required for user/bearer and user API key auth unless single-org membership. Omitted for org key/secret (derived server-side).", + Validators: []validator.String{stringvalidator.LengthAtLeast(1)}, + }, + } +} + +func readConfig(ctx context.Context, req provider.ConfigureRequest) (providerModel, diag.Diagnostics) { + var cfg providerModel + var diags diag.Diagnostics + + req.Config.Get(ctx, &cfg) + + if cfg.Addr.IsNull() || cfg.Addr.IsUnknown() { + if v := os.Getenv("AUTOGLUE_ADDR"); v != "" { + cfg.Addr = types.StringValue(v) + } else { + cfg.Addr = types.StringValue("http://localhost:8080/api/v1") + } + } + if cfg.Bearer.IsNull() || cfg.Bearer.IsUnknown() { + if v := os.Getenv("AUTOGLUE_TOKEN"); v != "" { + cfg.Bearer = types.StringValue(v) + } + } + if cfg.APIKey.IsNull() || cfg.APIKey.IsUnknown() { + if v := os.Getenv("AUTOGLUE_API_KEY"); v != "" { + cfg.APIKey = types.StringValue(v) + } + } + if cfg.OrgKey.IsNull() || cfg.OrgKey.IsUnknown() { + if v := os.Getenv("AUTOGLUE_ORG_KEY"); v != "" { + cfg.OrgKey = types.StringValue(v) + } + } + if cfg.OrgSecret.IsNull() || cfg.OrgSecret.IsUnknown() { + if v := os.Getenv("AUTOGLUE_ORG_SECRET"); v != "" { + cfg.OrgSecret = types.StringValue(v) + } + } + if cfg.OrgID.IsNull() || cfg.OrgID.IsUnknown() { + if v := os.Getenv("AUTOGLUE_ORG_ID"); v != "" { + cfg.OrgID = types.StringValue(v) + } else { + cfg.OrgID = types.StringNull() + } + } + return cfg, diags +} diff --git a/terraform-provider-autoglue/internal/provider/datasource_ssh.go b/terraform-provider-autoglue/internal/provider/datasource_ssh.go new file mode 100644 index 0000000..5e4707a --- /dev/null +++ b/terraform-provider-autoglue/internal/provider/datasource_ssh.go @@ -0,0 +1,121 @@ +package provider + +import ( + "context" + "fmt" + "strings" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + dschema "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ datasource.DataSource = &SshDataSource{} +var _ datasource.DataSourceWithConfigure = &SshDataSource{} + +type SshDataSource struct{ client *Client } + +func NewSshDataSource() datasource.DataSource { return &SshDataSource{} } + +type sshDSModel struct { + NameContains types.String `tfsdk:"name_contains"` + Fingerprint types.String `tfsdk:"fingerprint"` + Keys []sshItem `tfsdk:"keys"` +} + +type sshItem struct { + ID types.String `tfsdk:"id"` + Name types.String `tfsdk:"name"` + PublicKey types.String `tfsdk:"public_key"` + Fingerprint types.String `tfsdk:"fingerprint"` + CreatedAt types.String `tfsdk:"created_at"` + UpdatedAt types.String `tfsdk:"updated_at"` +} + +func (d *SshDataSource) Metadata(_ context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_ssh_keys" +} + +func (d *SshDataSource) Schema(_ context.Context, _ datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = dschema.Schema{ + Attributes: map[string]dschema.Attribute{ + "name_contains": dschema.StringAttribute{ + Optional: true, + Description: "Filter by substring of name (client-side).", + }, + "fingerprint": dschema.StringAttribute{ + Optional: true, + Description: "Filter by exact fingerprint (client-side).", + }, + "keys": dschema.ListNestedAttribute{ + Computed: true, + Description: "SSH keys", + NestedObject: dschema.NestedAttributeObject{ + Attributes: map[string]dschema.Attribute{ + "id": dschema.StringAttribute{Computed: true}, + "name": dschema.StringAttribute{Computed: true}, + "public_key": dschema.StringAttribute{Computed: true}, + "fingerprint": dschema.StringAttribute{Computed: true}, + "created_at": dschema.StringAttribute{Computed: true}, + "updated_at": dschema.StringAttribute{Computed: true}, + }, + }, + }, + }, + } +} + +func (d *SshDataSource) Configure(_ context.Context, req datasource.ConfigureRequest, _ *datasource.ConfigureResponse) { + if req.ProviderData == nil { + return + } + d.client = req.ProviderData.(*Client) +} + +func (d *SshDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + if d.client == nil || d.client.SDK == nil { + resp.Diagnostics.AddError("Client not configured", "Provider configuration missing") + return + } + + var conf sshDSModel + resp.Diagnostics.Append(req.Config.Get(ctx, &conf)...) + if resp.Diagnostics.HasError() { + return + } + + items, httpResp, err := d.client.SDK.SshAPI.ListPublicSshKeys(ctx).Execute() + if err != nil { + resp.Diagnostics.AddError("List ssh keys failed", fmt.Sprintf("%v", httpErr(err, httpResp))) + return + } + + nc := strings.ToLower(conf.NameContains.ValueString()) + fp := conf.Fingerprint.ValueString() + out := sshDSModel{NameContains: conf.NameContains, Fingerprint: conf.Fingerprint} + out.Keys = make([]sshItem, 0, len(items)) + + for _, s := range items { + name := "" + if s.Name != nil { + name = *s.Name + } + if nc != "" && !strings.Contains(strings.ToLower(name), nc) { + continue + } + if fp != "" && (s.Fingerprint == nil || *s.Fingerprint != fp) { + continue + } + + out.Keys = append(out.Keys, sshItem{ + ID: types.StringPointerValue(s.Id), + Name: types.StringPointerValue(s.Name), + PublicKey: types.StringPointerValue(s.PublicKey), + Fingerprint: types.StringPointerValue(s.Fingerprint), + CreatedAt: types.StringPointerValue(s.CreatedAt), + UpdatedAt: types.StringPointerValue(s.UpdatedAt), + }) + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &out)...) +} diff --git a/terraform-provider-autoglue/internal/provider/http_err.go b/terraform-provider-autoglue/internal/provider/http_err.go new file mode 100644 index 0000000..1c7a802 --- /dev/null +++ b/terraform-provider-autoglue/internal/provider/http_err.go @@ -0,0 +1,20 @@ +package provider + +import ( + "fmt" + "io" + "net/http" +) + +func httpErr(err error, resp *http.Response) string { + if resp == nil { + return err.Error() + } + defer resp.Body.Close() + b, _ := io.ReadAll(resp.Body) + return fmt.Sprintf("status=%d: %s (body=%s)", resp.StatusCode, resp.Status, string(b)) +} + +func isNotFound(resp *http.Response) bool { + return resp != nil && resp.StatusCode == http.StatusNotFound +} diff --git a/terraform-provider-autoglue/internal/provider/num.go b/terraform-provider-autoglue/internal/provider/num.go new file mode 100644 index 0000000..3c4a2d4 --- /dev/null +++ b/terraform-provider-autoglue/internal/provider/num.go @@ -0,0 +1,14 @@ +package provider + +import "math" + +func round6(x float64) float64 { + return math.Round(x*1e6) / 1e6 +} + +func f32ptrToTF64(v *float32) float64 { + if v == nil { + return 0 + } + return round6(float64(*v)) +} diff --git a/terraform-provider-autoglue/internal/provider/provider.go b/terraform-provider-autoglue/internal/provider/provider.go new file mode 100644 index 0000000..4d659f0 --- /dev/null +++ b/terraform-provider-autoglue/internal/provider/provider.go @@ -0,0 +1,58 @@ +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/provider" + pschema "github.com/hashicorp/terraform-plugin-framework/provider/schema" + "github.com/hashicorp/terraform-plugin-framework/resource" +) + +var _ provider.Provider = &AutoglueProvider{} + +func New() provider.Provider { return &AutoglueProvider{} } + +type AutoglueProvider struct { + version string +} + +func (p *AutoglueProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "autoglue" + resp.Version = p.version +} + +func (p *AutoglueProvider) Schema(_ context.Context, _ provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = pschema.Schema{ + Attributes: providerConfigSchema(), + } +} + +func (p *AutoglueProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + cfg, diags := readConfig(ctx, req) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + client, diags := NewClient(ctx, cfg) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + resp.DataSourceData = client + resp.ResourceData = client +} + +func (p *AutoglueProvider) DataSources(_ context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + NewSshDataSource, + } +} + +func (p *AutoglueProvider) Resources(_ context.Context) []func() resource.Resource { + return []func() resource.Resource{ + NewSshResource, + } +} diff --git a/terraform-provider-autoglue/internal/provider/resource_ssh.go b/terraform-provider-autoglue/internal/provider/resource_ssh.go new file mode 100644 index 0000000..bf019ef --- /dev/null +++ b/terraform-provider-autoglue/internal/provider/resource_ssh.go @@ -0,0 +1,230 @@ +package provider + +import ( + "context" + "fmt" + + "github.com/glueops/autoglue-sdk" + "github.com/hashicorp/terraform-plugin-framework-validators/int64validator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + rschema "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = &SshResource{} +var _ resource.ResourceWithConfigure = &SshResource{} +var _ resource.ResourceWithImportState = &SshResource{} + +type SshResource struct{ client *Client } + +func NewSshResource() resource.Resource { return &SshResource{} } + +type sshResModel struct { + ID types.String `tfsdk:"id"` + Name types.String `tfsdk:"name"` + Comment types.String `tfsdk:"comment"` + Type types.String `tfsdk:"type"` + Bits types.Int64 `tfsdk:"bits"` + PublicKey types.String `tfsdk:"public_key"` + Fingerprint types.String `tfsdk:"fingerprint"` + CreatedAt types.String `tfsdk:"created_at"` + UpdatedAt types.String `tfsdk:"updated_at"` + PrivateKeyPEM types.String `tfsdk:"private_key_pem"` // not populated by resource +} + +func (r *SshResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_ssh_key" +} + +func (r *SshResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = rschema.Schema{ + Attributes: map[string]rschema.Attribute{ + "id": rschema.StringAttribute{ + Computed: true, + Description: "SSH key ID (UUID)", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "name": rschema.StringAttribute{ + Required: true, + Description: "Display name", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + "comment": rschema.StringAttribute{ + Required: true, + Description: "Comment appended to authorized key", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + "type": rschema.StringAttribute{ + Optional: true, + Description: "Key type: rsa or ed25519 (default rsa)", + Validators: []validator.String{ + stringvalidator.OneOf("rsa", "ed25519", ""), + }, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + "bits": rschema.Int64Attribute{ + Optional: true, + Description: "RSA key size (2048/3072/4096). Ignored for ed25519.", + Validators: []validator.Int64{ + int64validator.OneOf(2048, 3072, 4096), + }, + PlanModifiers: []planmodifier.Int64{ + int64planmodifier.RequiresReplace(), + }, + }, + "public_key": rschema.StringAttribute{ + Computed: true, + Description: "OpenSSH authorized key", + }, + "fingerprint": rschema.StringAttribute{ + Computed: true, + Description: "SHA256 fingerprint", + }, + "created_at": rschema.StringAttribute{ + Computed: true, + Description: "Creation time (RFC3339, UTC)", + }, + "updated_at": rschema.StringAttribute{ + Computed: true, + Description: "Update time (RFC3339, UTC)", + }, + "private_key_pem": rschema.StringAttribute{ + Computed: true, + Sensitive: true, + Description: "Private key PEM (resource doesn’t reveal; stays empty).", + }, + }, + } +} + +func (r *SshResource) Configure(_ context.Context, req resource.ConfigureRequest, _ *resource.ConfigureResponse) { + if req.ProviderData == nil { + return + } + r.client = req.ProviderData.(*Client) +} + +func (r *SshResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + if r.client == nil || r.client.SDK == nil { + resp.Diagnostics.AddError("Client not configured", "Provider configuration missing") + return + } + + var plan sshResModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + body := autoglue.DtoCreateSSHRequest{ + Name: plan.Name.ValueStringPointer(), + Comment: plan.Comment.ValueStringPointer(), + } + if t := plan.Type.ValueString(); t != "" { + body.Type = &t + } + if !plan.Bits.IsNull() && !plan.Bits.IsUnknown() { + b := int32(plan.Bits.ValueInt64()) + body.Bits = &b + } + + created, httpResp, err := r.client.SDK.SshAPI.CreateSSHKey(ctx).Body(body).Execute() + if err != nil { + resp.Diagnostics.AddError("Create ssh key failed", fmt.Sprintf("%v", httpErr(err, httpResp))) + return + } + + state := sshResModel{ + ID: types.StringPointerValue(created.Id), + Name: types.StringPointerValue(created.Name), + Comment: plan.Comment, + Type: plan.Type, + Bits: plan.Bits, + PublicKey: types.StringPointerValue(created.PublicKey), + Fingerprint: types.StringPointerValue(created.Fingerprint), + CreatedAt: types.StringPointerValue(created.CreatedAt), + UpdatedAt: types.StringPointerValue(created.UpdatedAt), + // PrivateKeyPEM left empty (no reveal on resource) + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *SshResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + if r.client == nil || r.client.SDK == nil { + resp.Diagnostics.AddError("Client not configured", "Provider configuration missing") + return + } + + var state sshResModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + got, httpResp, err := r.client.SDK.SshAPI.GetSSHKey(ctx, state.ID.ValueString()).Execute() + if err != nil { + if isNotFound(httpResp) { + resp.State.RemoveResource(ctx) + return + } + resp.Diagnostics.AddError("Read ssh key failed", fmt.Sprintf("%v", httpErr(err, httpResp))) + return + } + + // Map from flat fields on DtoSshRevealResponse + state.Name = types.StringPointerValue(got.Name) + state.PublicKey = types.StringPointerValue(got.PublicKey) + state.Fingerprint = types.StringPointerValue(got.Fingerprint) + state.CreatedAt = types.StringPointerValue(got.CreatedAt) + state.UpdatedAt = types.StringPointerValue(got.UpdatedAt) + // We intentionally do NOT set PrivateKeyPEM here (resource doesn't reveal) + + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *SshResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + // All changes are RequiresReplace; no server-side update. + var state sshResModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *SshResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + if r.client == nil || r.client.SDK == nil { + resp.Diagnostics.AddError("Client not configured", "Provider configuration missing") + return + } + + var state sshResModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + _, httpResp, err := r.client.SDK.SshAPI.DeleteSSHKey(ctx, state.ID.ValueString()).Execute() + if err != nil && !isNotFound(httpResp) { + resp.Diagnostics.AddError("Delete ssh key failed", fmt.Sprintf("%v", httpErr(err, httpResp))) + } +} + +func (r *SshResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("id"), req.ID)...) +} diff --git a/terraform-provider-autoglue/main.go b/terraform-provider-autoglue/main.go new file mode 100644 index 0000000..3725550 --- /dev/null +++ b/terraform-provider-autoglue/main.go @@ -0,0 +1,25 @@ +package main + +import ( + "context" + "flag" + + "github.com/glueops/terraform-provider-gsot/internal/provider" + "github.com/hashicorp/terraform-plugin-framework/providerserver" +) + +var ( + version = "0.10.0" +) + +func main() { + var debug bool + + flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve") + flag.Parse() + + providerserver.Serve(context.Background(), provider.New, providerserver.ServeOpts{ + Address: "terraform.gpkg.io/glueops/autoglue", //"registry.terraform.io/glueops/autoglue", + Debug: debug, + }) +} diff --git a/terraform/envs/dev/.terraform.lock.hcl b/terraform/envs/dev/.terraform.lock.hcl new file mode 100644 index 0000000..68d22e7 --- /dev/null +++ b/terraform/envs/dev/.terraform.lock.hcl @@ -0,0 +1,63 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "glueops/autoglue/autoglue" { + version = "0.0.1" + constraints = "0.0.1" + hashes = [ + "h1:XW1zYWB6NTuE7jgJwWAkZeBBhL3Me36KE4Puy6lN6+o=", + ] +} + +provider "registry.opentofu.org/hashicorp/http" { + version = "3.5.0" + constraints = ">= 3.4.0" + hashes = [ + "h1:eClUBisXme48lqiUl3U2+H2a2mzDawS9biqfkd9synw=", + "zh:0a2b33494eec6a91a183629cf217e073be063624c5d3f70870456ddb478308e9", + "zh:180f40124fa01b98b3d2f79128646b151818e09d6a1a9ca08e0b032a0b1e9cb1", + "zh:3e29e1de149dc10bf78620526c7cb8c62cd76087f5630dfaba0e93cda1f3aa7b", + "zh:4420950200cf86042ec940d0e2c9b7c89966bf556bf8038ba36217eae663bca5", + "zh:5d1f7d02109b2e2dca7ec626e5563ee765583792d0fd64081286f16f9433bd0d", + "zh:8500b138d338b1994c4206aa577b5c44e1d7260825babcf43245a7075bfa52a5", + "zh:b42165a6c4cfb22825938272d12b676e4a6946ac4e750f85df870c947685df2d", + "zh:b919bf3ee8e3b01051a0da3433b443a925e272893d3724ee8fc0f666ec7012c9", + "zh:d13b81ea6755cae785b3e11634936cdff2dc1ec009dc9610d8e3c7eb32f42e69", + "zh:f1c9d2eb1a6b618ae77ad86649679241bd8d6aacec06d0a68d86f748687f4eb3", + ] +} + +provider "registry.opentofu.org/hashicorp/local" { + version = "2.5.3" + constraints = ">= 2.5.1" + hashes = [ + "h1:31Clmfoe7hzkcdgwuhUuGuPGfeG2Ksk+YWcJgzBTN7M=", + "zh:32e1d4b0595cea6cda4ca256195c162772ddff25594ab4008731a2ec7be230bf", + "zh:48c390af0c87df994ec9796f04ec2582bcac581fb81ed6bb58e0671da1c17991", + "zh:4be7289c969218a57b40902e2f359914f8d35a7f97b439140cb711aa21e494bd", + "zh:4cf958e631e99ed6c8b522c9b22e1f1b568c0bdadb01dd002ca7dffb1c927764", + "zh:7a0132c0faca4c4c96aa70808effd6817e28712bf5a39881666ac377b4250acf", + "zh:7d60de08fac427fb045e4590d1b921b6778498eee9eb16f78c64d4c577bde096", + "zh:91003bee5981e99ec3925ce2f452a5f743827f9d0e131a86613549c1464796f0", + "zh:9fe2fe75977c8149e2515fb30c6cc6cfd57b225d4ce592c570d81a3831d7ffa3", + "zh:e210e6be54933ce93e03d0994e520ba289aa01b2c1f70e77afb8f2ee796b0fe3", + "zh:e8793e5f9422f2b31a804e51806595f335b827c9a38db18766960464566f21d5", + ] +} + +provider "registry.opentofu.org/hashicorp/null" { + version = "3.2.4" + hashes = [ + "h1:i+WKhUHL2REY5EGmiHjfUljJB8UKZ9QdhdM5uTeUhC4=", + "zh:1769783386610bed8bb1e861a119fe25058be41895e3996d9216dd6bb8a7aee3", + "zh:32c62a9387ad0b861b5262b41c5e9ed6e940eda729c2a0e58100e6629af27ddb", + "zh:339bf8c2f9733fce068eb6d5612701144c752425cebeafab36563a16be460fb2", + "zh:36731f23343aee12a7e078067a98644c0126714c4fe9ac930eecb0f2361788c4", + "zh:3d106c7e32a929e2843f732625a582e562ff09120021e510a51a6f5d01175b8d", + "zh:74bcb3567708171ad83b234b92c9d63ab441ef882b770b0210c2b14fdbe3b1b6", + "zh:90b55bdbffa35df9204282251059e62c178b0ac7035958b93a647839643c0072", + "zh:ae24c0e5adc692b8f94cb23a000f91a316070fdc19418578dcf2134ff57cf447", + "zh:b5c10d4ad860c4c21273203d1de6d2f0286845edf1c64319fa2362df526b5f58", + "zh:e05bbd88e82e1d6234988c85db62fd66f11502645838fff594a2ec25352ecd80", + ] +} diff --git a/terraform/envs/dev/.terraform/modules/modules.json b/terraform/envs/dev/.terraform/modules/modules.json new file mode 100644 index 0000000..8096847 --- /dev/null +++ b/terraform/envs/dev/.terraform/modules/modules.json @@ -0,0 +1 @@ +{"Modules":[{"Key":"","Source":"","Dir":"."},{"Key":"ssh","Source":"../../modules/ssh-key","Dir":"../../modules/ssh-key"}]} \ No newline at end of file diff --git a/terraform/envs/dev/.terraform/providers/glueops/autoglue/autoglue/0.0.1/darwin_arm64 b/terraform/envs/dev/.terraform/providers/glueops/autoglue/autoglue/0.0.1/darwin_arm64 new file mode 120000 index 0000000..e01b400 --- /dev/null +++ b/terraform/envs/dev/.terraform/providers/glueops/autoglue/autoglue/0.0.1/darwin_arm64 @@ -0,0 +1 @@ +/Users/dragon/.terraform.d/plugins/glueops/autoglue/autoglue/0.0.1/darwin_arm64 \ No newline at end of file diff --git a/terraform/envs/dev/.terraform/providers/glueops/autoglue/autoglue/0.0.1/darwin_arm64.lock b/terraform/envs/dev/.terraform/providers/glueops/autoglue/autoglue/0.0.1/darwin_arm64.lock new file mode 100644 index 0000000..e69de29 diff --git a/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64.lock b/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64.lock new file mode 100644 index 0000000..e69de29 diff --git a/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/CHANGELOG.md b/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/CHANGELOG.md new file mode 100644 index 0000000..b4c6f18 --- /dev/null +++ b/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/CHANGELOG.md @@ -0,0 +1,178 @@ +## 3.5.0 (April 23, 2025) + +FEATURES: + +* Add mTLS support (client cert & key) to http datasource ([#211](https://github.com/hashicorp/terraform-provider-http/issues/211)) + +## 3.4.5 (September 10, 2024) + +NOTES: + +* all: This release introduces no functional changes. It does however include dependency updates which address upstream CVEs. ([#452](https://github.com/hashicorp/terraform-provider-http/issues/452)) + +## 3.4.4 (July 31, 2024) + +NOTES: + +* data-source/http: Previous versions of this provider ignored any `Host` headers specified in the `request_headers` attribute when setting the HTTP request. Any specified `Host` request header will now be set on the HTTP request. + +For example, in the following configuration: +```hcl +data "http" "example" { + url = "https://www.example.com" + request_headers = { + Host = "www.differentexample.com" + } +} +``` +The HTTP request URL host is still `www.example.com` but the HTTP request `Host` header will now be `www.differentexample.com` instead of `www.example.com`. + ([#440](https://github.com/hashicorp/terraform-provider-http/issues/440)) + +BUG FIXES: + +* data-source/http: Allow `Host` header in `request_headers` to be set on HTTP request ([#440](https://github.com/hashicorp/terraform-provider-http/issues/440)) + +## 3.4.3 (June 03, 2024) + +BUG FIXES: + +* data-source/http: Avoid potentially leaking URL-embedded basic authentication credentials in logs and error messages ([#429](https://github.com/hashicorp/terraform-provider-http/issues/429)) + +## 3.4.2 (February 29, 2024) + +NOTES: + +* data-source/http: Previously the HTTP request would unexpectedly always contain a body for all requests. Certain HTTP server implementations are sensitive to this data existing if it is not expected. Requests now only contain a request body if the `request_body` attribute is explicitly set. To exactly preserve the previous behavior, set `request_body = ""`. ([#388](https://github.com/hashicorp/terraform-provider-http/issues/388)) + +BUG FIXES: + +* data-source/http: Ensured HTTP request body is not sent unless configured ([#388](https://github.com/hashicorp/terraform-provider-http/issues/388)) + +## 3.4.1 (December 19, 2023) + +BUG FIXES: + +* data-source/http: Includes update to go-retryablehttp fixing preservation of request body on temporary redirects or re-established HTTP/2 connections ([#346](https://github.com/hashicorp/terraform-provider-http/issues/346)) + +## 3.4.0 (June 21, 2023) + +ENHANCEMENTS: + +* data-source/http: `response_body_base64` has been added and contains a standard base64 encoding of the response body ([#158](https://github.com/hashicorp/terraform-provider-http/issues/158)) +* data-source/http: Replaced issuing warning on the basis of possible non-text `Content-Type` with issuing warning if response body does not contain valid UTF-8. ([#158](https://github.com/hashicorp/terraform-provider-http/issues/158)) + +## 3.3.0 (April 25, 2023) + +NOTES: + +* This Go module has been updated to Go 1.19 per the [Go support policy](https://golang.org/doc/devel/release.html#policy). Any consumers building on earlier Go versions may experience errors. ([#245](https://github.com/hashicorp/terraform-provider-http/issues/245)) + +ENHANCEMENTS: + +* data-source/http: Added `retry` with nested `attempts`, `max_delay_ms` and `min_delay_ms` ([#151](https://github.com/hashicorp/terraform-provider-http/issues/151)) +* data-source/http: Added `request_timeout_ms` ([#151](https://github.com/hashicorp/terraform-provider-http/issues/151)) + +## 3.2.1 (November 7, 2022) + +BUG FIXES + +* data-source/http: Using DefaultTransport to reinstate previous behavior (e.g., ProxyFromEnvironment) ([#198](https://github.com/hashicorp/terraform-provider-http/pull/198)). + +## 3.2.0 (October 31, 2022) + +ENHANCEMENTS: + +* data-source/http: Added `ca_cert_pem` attribute which allows PEM encoded certificate(s) to be included in the set of root certificate authorities used when verifying server certificates ([#125](https://github.com/hashicorp/terraform-provider-http/pull/125)). +* data-source/http: Added `insecure` attribute to allow disabling the verification of a server's certificate chain and host name. Defaults to `false` ([#125](https://github.com/hashicorp/terraform-provider-http/pull/125)). + +## 3.1.0 (August 30, 2022) + +ENHANCEMENTS: + +* data-source/http: Allow optionally specifying HTTP request method and body ([#21](https://github.com/hashicorp/terraform-provider-http/issues/21)). + +## 3.0.1 (July 27, 2022) + +BUG FIXES + +* data-source/http: Reinstated previously deprecated and removed `body` attribute ([#166](https://github.com/hashicorp/terraform-provider-http/pull/166)). + + +## 3.0.0 (July 27, 2022) + +NOTES: + +* Provider has been re-written using the new [`terraform-plugin-framework`](https://www.terraform.io/plugin/framework) ([#177](https://github.com/hashicorp/terraform-provider-http/pull/142)). + +BREAKING CHANGES: + +* data-source/http: Response status code is not checked anymore. A new read-only attribute, `status_code`, has been added. It can be used either with + [precondition and postcondition](https://www.terraform.io/language/expressions/custom-conditions#preconditions-and-postconditions) checks (Terraform >= 1.2.0), or, for instance, + with [local-exec Provisioner](https://www.terraform.io/language/resources/provisioners/local-exec) ([114](https://github.com/hashicorp/terraform-provider-http/pull/114)). +* data-source/http: Deprecated `body` has been removed ([#137](https://github.com/hashicorp/terraform-provider-http/pull/137)). + +## 2.2.0 (June 02, 2022) + +ENHANCEMENTS: + +* data-source/http: `body` is now deprecated and has been superseded by `response_body`. `body` will be removed in the next major release ([#137](https://github.com/hashicorp/terraform-provider-http/pull/137)). + +NOTES: + +* "Uplift" aligned with Utility Providers Upgrade ([#135](https://github.com/hashicorp/terraform-provider-http/issues/135)). + +## 2.1.0 (February 19, 2021) + +Binary releases of this provider now include the darwin-arm64 platform. This version contains no further changes. + +## 2.0.0 (October 14, 2020) + +Binary releases of this provider now include the linux-arm64 platform. + +BREAKING CHANGES: + +* Upgrade to version 2 of the Terraform Plugin SDK, which drops support for Terraform 0.11. This provider will continue to work as expected for users of Terraform 0.11, which will not download the new version. ([#47](https://github.com/terraform-providers/terraform-provider-http/issues/47)) + +IMPROVEMENTS: + +* Relaxed error on non-text `Content-Type` headers to be a warning instead ([#50](https://github.com/terraform-providers/terraform-provider-http/issues/50)) + +BUG FIXES: + +* Modified some of the documentation to work a bit better in the registry ([#42](https://github.com/terraform-providers/terraform-provider-http/issues/42)) +* Allowed the `us-ascii` charset in addition to `utf-8` ([#43](https://github.com/terraform-providers/terraform-provider-http/issues/43)) + +## 1.2.0 (March 17, 2020) + +IMPROVEMENTS: + +* Switch to v1.7.0 of the standalone plugin SDK ([#35](https://github.com/terraform-providers/terraform-provider-http/issues/35)) +* Added response_headers to datasource ([#31](https://github.com/terraform-providers/terraform-provider-http/issues/31)) + +BUG FIXES: + +* Fix request error message to include the `err` and not just url ([#26](https://github.com/terraform-providers/terraform-provider-http/issues/26)) + +## 1.1.1 (May 01, 2019) + +* This release includes an upgrade to the Terraform SDK, in an effort to help align with what other providers are releasing with, as we lead up to Core v0.12. It should have no noticeable impact on the provider. + +## 1.1.0 (April 18, 2019) + +IMPROVEMENTS: + +* The provider is now compatible with Terraform v0.12, while retaining compatibility with prior versions. + +## 1.0.1 (January 03, 2018) + +* Allow `charset` argument on `Content-Type` ([#5](https://github.com/terraform-providers/terraform-provider-http/issues/5)) + +## 1.0.0 (September 14, 2017) + +* add content type for ADFS FederationMetadata.xml ([#4](https://github.com/terraform-providers/terraform-provider-http/issues/4)) + +## 0.1.0 (June 20, 2017) + +NOTES: + +* Same functionality as that of Terraform 0.9.8. Repacked as part of [Provider Splitout](https://www.hashicorp.com/blog/upcoming-provider-changes-in-terraform-0-10/) diff --git a/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/LICENSE b/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/LICENSE new file mode 100644 index 0000000..b9ac071 --- /dev/null +++ b/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/LICENSE @@ -0,0 +1,375 @@ +Copyright (c) 2017 HashiCorp, Inc. + +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/README.md b/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/README.md new file mode 100644 index 0000000..dca5b7b --- /dev/null +++ b/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/README.md @@ -0,0 +1,113 @@ +# Terraform Provider: HTTP + +The HTTP provider interacts with generic HTTP servers. +It provides a data source that issues an HTTP request exposing the response headers and body +for use within a Terraform deployment. + +## Documentation, questions and discussions + +Official documentation on how to use this provider can be found on the +[Terraform Registry](https://registry.terraform.io/providers/hashicorp/http/latest/docs). +In case of specific questions or discussions, please use the +HashiCorp [Terraform Providers Discuss forums](https://discuss.hashicorp.com/c/terraform-providers/31), +in accordance with HashiCorp [Community Guidelines](https://www.hashicorp.com/community-guidelines). + +We also provide: + +* [Support](.github/SUPPORT.md) page for help when using the provider +* [Contributing](.github/CONTRIBUTING.md) guidelines in case you want to help this project +* [Design](DESIGN.md) documentation to understand the scope and maintenance decisions + +The remainder of this document will focus on the development aspects of the provider. + +## Compatibility + +Compatibility table between this provider, +the [Terraform Plugin Protocol](https://www.terraform.io/plugin/how-terraform-works#terraform-plugin-protocol) +version it implements, and Terraform: + +| HTTP Provider | Terraform Plugin Protocol | Terraform | +|:----------------------:|:-------------------------:|:---------:| +| `>= 2.x` | `5` | `>= 0.12` | +| `>= 1.1.x`, `<= 1.2.x` | `4`, `5` | `>= 0.11` | +| `<= 1.0.x` | `4` | `<= 0.11` | + +## Requirements + +* [Terraform](https://www.terraform.io/downloads) +* [Go](https://go.dev/doc/install) (1.23) +* [GNU Make](https://www.gnu.org/software/make/) +* [golangci-lint](https://golangci-lint.run/welcome/install/#local-installation) (optional) + +## Development + +### Building + +1. `git clone` this repository and `cd` into its directory +2. `make` will trigger the Golang build + +The provided `GNUmakefile` defines additional commands generally useful during development, +like for running tests, generating documentation, code formatting and linting. +Taking a look at it's content is recommended. + +### Testing + +In order to test the provider, you can run + +* `make test` to run provider tests +* `make testacc` to run provider acceptance tests + +It's important to note that acceptance tests (`testacc`) will actually spawn +`terraform` and the provider. Read more about they work on the +[official page](https://www.terraform.io/plugin/sdkv2/testing/acceptance-tests). + +### Generating documentation + +This provider uses [terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs/) +to generate documentation and store it in the `docs/` directory. +Once a release is cut, the Terraform Registry will download the documentation from `docs/` +and associate it with the release version. Read more about how this works on the +[official page](https://www.terraform.io/registry/providers/docs). + +Use `make generate` to ensure the documentation is regenerated with any changes. + +### Using a development build + +If [running tests and acceptance tests](#testing) isn't enough, it's possible to set up a local terraform configuration +to use a development builds of the provider. This can be achieved by leveraging the Terraform CLI +[configuration file development overrides](https://www.terraform.io/cli/config/config-file#development-overrides-for-provider-developers). + +First, use `make install` to place a fresh development build of the provider in your +[`${GOBIN}`](https://pkg.go.dev/cmd/go#hdr-Compile_and_install_packages_and_dependencies) +(defaults to `${GOPATH}/bin` or `${HOME}/go/bin` if `${GOPATH}` is not set). Repeat +this every time you make changes to the provider locally. + +Then, setup your environment following [these instructions](https://www.terraform.io/plugin/debugging#terraform-cli-development-overrides) +to make your local terraform use your local build. + +### Testing GitHub Actions + +This project uses [GitHub Actions](https://docs.github.com/en/actions/automating-builds-and-tests) to realize its CI. + +Sometimes it might be helpful to locally reproduce the behaviour of those actions, +and for this we use [act](https://github.com/nektos/act). Once installed, you can _simulate_ the actions executed +when opening a PR with: + +```shell +# List of workflows for the 'pull_request' action +$ act -l pull_request + +# Execute the workflows associated with the `pull_request' action +$ act pull_request +``` + +## Releasing + +The release process is automated via GitHub Actions, and it's defined in the Workflow +[release.yml](./.github/workflows/release.yml). + +Each release is cut by pushing a [semantically versioned](https://semver.org/) tag to the default branch. + +## License + +[Mozilla Public License v2.0](./LICENSE) diff --git a/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/terraform-provider-http b/terraform/envs/dev/.terraform/providers/registry.opentofu.org/hashicorp/http/3.5.0/darwin_arm64/terraform-provider-http new file mode 100755 index 0000000000000000000000000000000000000000..1a6f2af558d9c10cdd84443006d74d2eedccd48c GIT binary patch literal 15981538 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 &j{4<+xq2I_IDAjn>S0y>XUSDbI0;{iF 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 z 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

`gsC8b(HVxypz3W#RI7`Y(?`=B&G?T;^S85 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%0A1(Re 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

6Pv9PaKPsMZ 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®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

XBtO2%Z|T=bq9NYh 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

syfLwO!HE^|HAtGtSV zE$YMe3kNpgb4CD@_U9X&UgpD6>eRKUUK#f*<$n!{zjEZjQ}`jCBwtc69T&pWu=7_A zSoG}IIjcoJQ%b%Ez+Xec$B6@%x1R?v9W{B&0gLeQogv^O9*Pf}{4M>y?Ee4x>PsA8Tm~%ZoG-u7jdH(ZOkZ%|FV{t*Ojcp41d7e3%O@L_pE}~>(NQkA|R%9}jlQ#ZZ_Wo-%Z)Wai z=%%-@^$AjNA`_y)$3n159{v!5x75+K>VM$M>vRKeI=*Y@kt3hH$HKMEw*lK6xCG1T z0W1T}Co5mj-}B|K+x-+z@a%9*cSGp;BZu((62p&~^B)uR53@0B`Q^fE4g8m64Y~jx ztcIsP2j3}1rrz}v;kyaITZ#UN!FP)H)DY`#;rf|eo8r9ycQ=M$e`%(#TT=adl0m(% zvo~4mA<<6%ti9|Hf07@IL&a5p7^2_Y5DZTSFdPl~eLV~P&IvtV=b=l#4(9oD4F9J6 z`5%luxP}Co?(vApfBA9tw)wfwK%aztB8|B?n3JoYH9t$gWubVge6MSXF)eARWPe0H zzQlN9{5qRUaZ%OFYA;q%^H<3eK7g*&y1R>Yp<)}qU*c_Eu$n#-{H^_3te1(5tNtXh zXnr@pH3YwXg*_hn?W@jjHwVAf`FlGQ$NbXhgKHLOU$GZyQm(#Z#XOaP8tdyq`%mB*MqSuT-M%TpZ*#kNjW2!TAHlK{g&>?j7s{wQ&~Z z%C-k{w)DR&@0Hfih8Mn8Nj@NA_|TV!{N_8zpB!y@_#XHekURuB-s%I%z(Qy4JDBUQ7L6Te z=c>OSU!3{*s?hHr3w^fuxzp&s^!i19LSJ1Tapx$nd|n0dKGrHVEB|?Sq~zh(S{uBk z$$gxAg-uEpt-Wu)7u#*K?CWUvLXKnTXEJgP-!KpU|0vd814nMdJeO!2;zZiH9jCsd^N>pM-5tpIPN3 z^T|o-c?*F zh7X2)m7}P^1cna}5)Ys54+i8Xg$HCRg$LF~S@H0&kB5^6iHDC29}N2{&-L+e;N-L{ z4ulq`^asOK2M@&lQg}d4v*O{WJ|6xH7_3ej2n+|wd*|fI!NIVv@>4z@elSQp{H{M3 zW;l4b(80qwIq|;Nb!v562D?59bXZ4Erj7>EmJF`v#{U z#`Ooo5(f|0Ie4hefrn4|c=!b{3`Re^PM$ocei$4K`zqh^@$lFn@vyr;7{27-;bsR9 zU(A7rdLIw}G)O#rclcn~S2<~%v74VABpw?3gW)R<9#%VeXvl$wjXoYOA0!^GA3hlN zRbJua;j}^G;bZ;5u*Si|{SF@P$$^I#d_0s45)U63J{a~@-st0@>!iWyhf)2(@Q{Ot zM;ttC$bpAfd^|i441>`RJ>W9I>u&?spd^|kZ4<1ftze0G8`;*)-Y+m@o6dpD& zdNPHF&5OU6!b783>zA=UqSmPLm*=t0zV-3j`oTjs7~;bR!{*8{Q;h9iI7mF)(H{)Y zJ9yaX;9*-z>+m-ir}0x?1Z-^%A|_Q+O(n+{~irT3+xH@u~NYA%0Ð#B?wu6yx5;HdgQubIq~gfxRq*#J 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 z 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%0DcIx(|$3Z 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ɗPZX?s{Vf&G2z#wvSQ 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 z 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 z z`)R6u7x@SVd=br_4FU${vf&O5%gvKFc|2nFpS#@rDjf8LCr?Y;Z_SR0qfD#^XYX>7 zP58Io%e;JoSF_eLI?TO z0QTa6dxFV3*ax|6_2kG)t-)mXmS8fmiC5Oh-46wmOIe$(;XFq71HokPBeeD1VDi9Y z!Q>jASyRegK9AB~7wzq)53)~aOJ_f{H=n#6+x&%Ev*)PXpwXY#(!W~l3gvSu?wF9@ z^qlrO6F*3`zFHJYzB(tEJUEQ_hsnX@A4hRMVFa>&9b>wlvE4ww62n(@_YGgw(?5Jw z?;nP*>igsHRr_BbzUsgq$5y`798C7F3npK#J+tza4Z-B^YfoMEhk2*2I-Gb9eyY(O zhr(ksXmF!P1J>9(4{bRmZKm;0Ut*jG>c2A8dieR#5uLg4pTGH#*QYl}<#SGmedDe(%z2^1TSi6> zQQlwn{kE(rL)p7Vo3e(7=UkkWFFdC8L3z-%#j7q(My@#2+BB9mXnAe2^WE&#TzT25 z#cMdL$ytTirVm$E2k`Z8T38w2Ea_ora)@^QZJzG6sd2qiFX)EZm;4BFLat!wq&MB3JRt8a2`vWPvyV(l4vJa73t zW9`LnuFdT7y6w-Opoe)akZUbWsl zmOk>Yd4E47w_RZMl3nwD(sx#QKtFZ8%k}r1t$2sg8Tu) z1M`Q1`9s0{(>%-{m4RPxLKERS{?naSp9|ZS!_Vb;#Xl*Y&4=k-qmRb)2KqKFFB!dn zf7%kJfAI?8A()wk>Cbp=rZIh_hw0!O<^A~jLtC~>WrXRcSWMryBm>j)j9s$?Oh5A@ z#N?hKOs`4SjTWX~ylU|Wot35HAFpo-`sT1VADdQ#E~+7Rzb5$;gEgl`rhF`Szwfqv z8Rp?QSnT5X(f!_F%bGIa`1(^!**4lV{QgjJ#yFe3@`+7pe!m1?p`YK+hTmfq(05jz z_Oe=>rjp1(;>{8j?9F4pOMcThUSn|le@+vQ*Q9Zr@oJ6GbLCuv;~Km5n~4Snw^z^x z?>*dZS%WX8E9v3(iW-C4YRlsGGqjP7+pAn$-X|Z}GxX8ovhg)qT*jW1uhEY?J=mJP zb7~AOZ&%;>Z1x`c&g?yc%RQ58%-vABht2XR>jC!3vSMC6J_V0WKkh%tezg3J`?2OE z`|;VoQ9m@dmhVsdcVb_BpEK4?9{q%!!_WbPVW<2)TZ(gIBo7at9e)CNh@CAw z9QXZq9uFU7oPRGoeE&ysSwuP??f&BE;k-fwjl@32GtxIWMO-H&%);cTfN?_PSthj&wjcQYb8uRAv0 zZ628$?@kQorbKQ(GC0oNN!{5v*X+Z&JL%iW;M|Ss^WPBXu06?qeC%)BkIPQ7AJhLv z{WuX^`!Cu$7Os7!C^xR{_1S!`e`tiU_pTu~*`cn}GVQ%uY@>PDZS%4D7GUq`tT6cY z(tmpR_Va*i?>!nw+j}Fh_eSyD7@i9kuj+0nUe&XrcvbIp#jE885as>2P;JY0sf_Hs;@tM$mcW3$*Y=Nx zS{>PYTdI>y2H)ncS{(B5&Ffpkhgmyv?j!yXaf=TSxA-)1j|mbv{1ET?(Dpez-%Z?B9DkE+7M8rD#S0{#$H1i^ZtaB zzh3(amvct&V#&eYK(hC{@ZBQ;VsP`xn_FaJ-xRO6AB;>C)g;3_+YR5W=K1&|@I3q* z-K*Dt*`t`cKebRim?+AFx5zg`J>+zRPYe6=xMQ#Hd3gFU_#6MX_NL*@eQTUyk%#}} z%0ka$#CbnY%sD*zJM{^^%jK^xF3gR|-}W%s#bYnt!sM$+=ig7U|D1Z!Q7)oao!@a5 zaaiN_pPcG!Tp8F7GwZH57yuEz|_IYRV{Sx94 zv?ru}Y}@xG_;cgrHGb?8vVq6cV_7M-hAFK4sF-j&&kBtu}6%rx}-znY{oC3HuX7=&%%`EBSkag z<DI5SHg^aFnfp5LjOp-h&XIhi`&ZaidrR=%AC zbWj|T`h6eg-qwWjBWvDz@hkcGxZC*b@OjS#oOOv#i9A|`&kVj!F#b1RbaOAH8uQy5 zIR`zSv(fd+HzHo=x5dgg0#8Y|xb{J?^a{Ic@d z+|T*tr{KvKm%8Vdw>EK>Wche=epz#~6dsFvdd$wD_WQ199?KLDMSr_#vynZr&B#{} zdRo7hV)3Io*F%o|E!T42GW`jl`;1TGcNe;`c04ctF}iS{jepX9u43)((0u{CFGnv1 ziKUQC#ORCT(0Hx%pV-JR#<*pTj?x6(0P|Hy8@ zzLU*y7dDe{5!upNXPp_;_~+i?<)`#wCQW=LzjgDQ^o+UNgZi~Md@DAt>yJJ5`Qy8C z&_Hp9d!U2C^X4LBUmt*X4mA(Su&<-D&|6jLl{x6J1?ZUhfn@hQ^iXZU(BlE<(Z~4v zphraxdc1WZ^q5u6bLgH0)rKBR2k7C(t1GVi+t8y<^q7PFR0SW_VoT0L|M6T8&%NtT zZ>-Hj+;a((Nl>PnGPZ8*`I-9wX)i`S-`a)E94p(3AOxC#>vu z3#aFU(FrCnJ#TN%34CUx7w6&0($QzS-Mcl1!IPVH zwxpaffJ-rSl47W0v>T`01nqu;x?*5#w4CoN_#T{a>Fe^Q-Q)3pcRZT+aGvy7adBHc z{x$e-i~&?UihuWd-R zKB4@L(877y8VT3FJqT@n;KMe*e*9bETe0YK0{C_g^vQ*9 zpW}R(8Q%%u+W|`#uWT-U5iJ%CLJNy;$BK87Eq_n>vE!Z8Moo@34*2-b&ApU9FCg9F zaMv&Qh$NrjPIKuK;atlT>(HyR1C2eW?_XdY;M4s- zxa?3XdiS~LSa_!denZ~Eh0aXJ#Cgw-Jn?C4VQgIK-fG1jhd$uyUgm5ZeW{(oxrvFy z_;`BQ+tZldL7a$UgA~VDPPwJ$QSWqgGkXHk*GpNuE@kc7MmeLS*;_E>W>fBilw-fZ zS8hf({gMs&O|QH@E0#RSo^OJF2TPq~{&>dE`SG%*5yW_*+ZmIeH;iqe-#N>BFS&MV zq9fh28-wtJ=IPgYM`K2-PbMrr-)`_ZbH3m&Ghg@dYUk^%CsVC^xO-6ZrMc3aSz2EM ztv5Taol~#;KxcaA7>+~h1t&=Bi{2)!KlBdM`qmt@)_qLE9s6hLJ;cyEonN{Q8t1`h zOGInw6MSE{cBNXIpmhvdN5`b;JR+OUANS}CwjPV850k&#^0X-jPuIZHL64^`@Auns z@U$rhPuIZHL64{HzFz|V6i+9-^7^biPI>Tj9D6Dco(_tq#mmYK0bd(_4tn+(_P+x! zuO^nM%<{7Rje5kt6Fr)4_vl!Heb9+s6|HXLHN+UI8AE4q@vp4yt@oDRN0nzR)r@7Z z@^*d>nEX9ydC>W$I_9Q;c8M1;@}Rn9yN*Ar>A81zzTVnN{9FuqP+o+n&ek{0j@)+* z_=CUF!=HU+#qQaD#Y5+qD|?=P`WXc1FU(meqD1_&hKVU`y6K zus`X|gT)QAwy<#}$Cw*ip1JY+N;FSD(mCm(5Z{BrBhdMyLdoy=^ugPq=iF19o_l8+v|r5PH6~{N(sEPP~f6k`v|6|Ms2{zrNG_`R?P; z^Y*NKU8No#$EE8$JU(j-vCqog1r{4j_GJ8_!DyHpkFDHJkGvfkdRY4vOT%MhZCb`H zp893nes>)Fm5fWapLWu+t(-F!TlH%3@);yrvhR==Dg+NJH=ePwN)eR~|WX?Y^VzTg#80&Y$ejiv+i0I+e%&+S!pk+yNq;ZTam|{LTJ+ zMAEs^y;`4!M=2MDyLOOGAb*;^UoxgTxozGdcfHl+<{-kxHM&fEKHN7?y&j+EmExlt zuX)Hb_f*^V518Dt>GgFRYa6YxHD`JFe+%)UUyP5S0DpS3^4vIXUQG3;wvkvuvxdPg zV$EB?+5BbX71z31vG)OTY~0Itn)?v3`-*}0*D>Jtl1$@Qn3i21xqv9ML-qE^2cb5V zH#{`a2Rz3?fTwdZ<6n$o!Hc~Z{=di-nskoHaT-yPAK!vDSIO!Kvw`(I>p+~dO}J3qIZ ze9US4TJxyBB*45ddz6de4}9PYWt#?}g|Sf?Pd&cnJo>AgR<&S#J#*Q_y3=VYj^w}f z;xo`<*IMRy3eV&*zqR&v>eTNw-tWpEw8U{toTK=!hC1zh`fcEgoq{`_;w;QlrA}ns z@~e-0*(qF~qHp*L7AoInQ7W}lx<-4fr|G^*a9?Xft+gMgZJjL&``W2D?c{ZoLT`UN zSLbXe(C^TW_HfjWu;s|7$OVDyCTQa&>h7YA{k&S5&-G}2Ki~QB{~B|a$wzOVTYLuR z?m15=TfLV2Bjd0A>T^pUe)u)~gjc<=}HY^zS~`-(Vj8-gABHapwBjzqs`+-H{wxtlcc1%J`zlhFd+H^yy7&t9{bzgVtff zh~v?Zz3CR`3-6EA2VDIsS<0k$=4VUq_ALD?-7DQ?^e^YVs(kvl2-!8?mt^|xetJ=E zU2OKN!1qbMv1m;hV?4r=0CQ^farWn<`=7}_w*Sv^pO&9r>>h)EFG9X@@NtJ?85*!3 z`kIDD_Ji?5!1$qoQ1YJ{S1;MMk6q=U)4nCpPp@G^ufmQ;CKDfn@7(-`ZDW4JmXYnCdLH6;`Y_XemOeAO znf}C>6WK;apGz(&Uq|~!&ogIjUhaUKmVr0;3IgnhV0`_orC5G)`^E=2_FTHjh zF%kN{EJ(eKYn=3P6>B=y3o0|7{YLpaVyyGDzbPMTtd{rqljLiP&F4KnBKb&Tj6L84 zDq}D5n$Ig^;w(KmkEW4tlQUFfHr*X44pjQ(aB^Vi9V=eB<@pt5PUMtpRvZ}?7`A>> zps>FU8JbkUcj&UHk>A3Oxu0ZQjQOa&A=>#m{M1muJTQkUf2ZVyu}GHeo~hmUlD)B( zvrV!${5}qwpG0Sagi+c2X!)(3GqwJFC3Tz&lutDXPvpZZU{Xuj?2<@)ScrSIN;m>uPxL0c?it=vnLfdcd`P8FrTUy=b9v&-2EuGq;XYUFpY%0H3j=X2!q`>F7Xyb*1>;ma*f% z)Zp9u2F|h)<7Un>@4+4`!!CWCJ@pd&X=-mW?Y-vF(>{N|;7!^eH;`)x9(K$+_I<>= z1tOO$V!j!tat$PyW9?_SXLSl(AEYxaGVDPw=D|14fjOuBVOjJ1qSqJAukFwA#&f4{ zJg;+>;%$$o>2x!m(HhTyOq^@-%VdrzlzicVV~^(r+V}HquJK%B_6y%LFh5bSFIMaB z5#9?P)HLNsYS`1p=2iR#_ORLGZz(IC9GN!@{{ZqY8DGSm7fUvn^cN> zFH!~V!USPbETMP}uu1zs<>bNVvwNOb`7Cu$d}#Zv|HS=v9=2+~)bMPV%d^^BG`R?A zvy}S%zgZa;FMZQD_9vM~JAcO1jfPeiNB3{HH zZ|fJhKS6wakIuI}_F0|joN323mojTY(<6&+3EkEF)|+2x4Cbxq0pGN@m0jkZw-%e< zk*$TzZ;ky5Yn+`b`y_kVrY-8(HRDgM19eh&-3HE`dTlSE?R$~SJaT(Cwb?%qU89p&37 z{|x2jw^#~h%D=D#odTAyj}Sy&Lfg;4rcnLfy^k|u)T42K-)l#o$AOX3S*7SDGd^#g zE#3|Dc;;DezHL6GOU<32>3j{kBT4xhQz@r%EaQUS+iJj;BZ* zIoz3L*7ZEU1e$9Pb%{rJOGnucqT_PtsQ1}(VCPwLKJBH~TcO1c$&&Pwcw1}WJP!{- z$ZIccJ^) zjqy9#-(0?S>v;Vwi)Zd<%jX~Ae6;k!yd3h}o`sJsV1e#8tf72}xzgNz^b%Wd8XwN2 zPUTDV=TfZq7aKF;g=VD;T@;t@0Nd(nMMsZCC03fXyyJW!ii zBbxXfu*#W69w?_c@}Eo4w_{wpRda9S@?^h@hwmfq!PxR(PyiW;QkS7MGTs?v53+*q zk>xV>{$k=Q$!arlOxs3|X@3)K&&5C2BmVQX{jKA)y*5YN8qXWpx0ZLJ$gaOX%EPLC zdhORM_GT{fB)P$9rJlfPM9B7C(spl+Uvo{wo7BkZBXYx~=Ev_|==K|Lw%D9&8S}=V>Yx?^lo+ z@Aqh$H_m5%qBlT;N6F1bzC5$e;{Efyzl}QrqSrywT7HLCvL}~#@z_^=2%e(<+;RRN z=&*%xY!(}nO-{_wvYVpUg_37N_tk$+?J#wO)AiI8xpCbW`RXZUJz?vqy}(%*4TD+O zz48?hYd<=AgU1KW1%@xn6h|Kn?5%mL@h<#nUuUJVel_a~)+?2Zo1B#nvH6R~J1aYp z)x{H?l}&n`?yL;)nn!(#wcUIqwPPIh1iAaCk!R|7rjch#^~y6*$~N*$8?QfOUYn-K zCYlvVa0fsPUxs*XwR}QLi%bj-wm=lh+amd7~n)ud-Ldl0I8-FFWBe4j*3q~a1ojAM`4c@#xN-X~~A58O3Co-Yu z#5?8X&O&nknRw{tan8cIPGB$b&BU9xtn;3gnK6YHN zL-^b_!r9rq0RKDVjL{Z+-QSE2HXfR1jP+)0okslB&G@{izbsI&Uh947SYft*e9BiY z8><_hTZ@gfmV1`^=F$H3(fLhg&Tlf-y5xPI!2Z$B*_o>Hj8dPqou~J?+n< z{rREfYU=EP_C4$PZ9VmFaFTs@QFkll%{c|^LwG>;MbEDfw+dV3H(kvb6&q)8fwgY* z0r7xxONF+t;r#s?XIA9T2k;3zz}^rztUlWFQ$eq9TXdYxL*IK`zLo!!h99SQI z_15RZZO$)NJHhpOR`z$|rPTD;7W!rGm7f)fm*+=*qO(O?Ldg#!zm~7<+=;huLtd7O zcRcyp!g&C4bVTNQPwNhmZ-D(X#;7sLPQ$jE5o>_YnK$KZ>}20x zpQXo2p^d(;1ykg!k`A;OB>ZvjpUcD;+tzm4s`g^|_Xxv2S$JFw`#0J?9){H^zDf2y z-Z0~> zbDZ_!d&zG4ED-lFlM8zCaByb@Z7&W~8l0L3PtX_X+j~7ddGj3f^r%p>1by4dK44Tj z8T^RN!-hatH?fA+dwpllOop+~cpvAxhvBp6eCh)ycTv`0Cvq)0ukT0x(ACPj8l+xw zd*P!j><<&m=f6|5Z*g^H-U*fK&BK5=bP)|$pKM#xR2BKle%dx=Gi5*D<1xSNZ_bkWfM4d(t-@&hF54XH zjc>_|{G9yn=8nA$m!YTTw~sr;L2m`x;|HoJS9KtwS(A)+5Ve=&nBFl z$g~M9ub%GJtM!TF{aJsI8?T(+&ywA)eFovPn6;r2ged);Fk)p zWh^?4^>=p(@6lo6onOAhIodI-%b8o9jkwK;r-y=-SE+qoonxI zeyjNoo&8$JoNYl)dPh-rIrBA{f8^A?Bf6mD+mg-6@N_x6NnLuT7oOMo#{@Zn<@>xE zJ)!ly#m247{f)#pj0X#KW>Pwge$iKN|CDu#)-b`QP$g~8WDUR5zlN7xqcLsLn5e&z z`r}5=xU%XmD_d0dn&{y2hUd3q{>S>}T=V^1&I=1e{*8ID^D)Hi-)GLpzi{8!68r;E z+U9Q6WD&I1Il{}B51k9tUZ41&$0^*~$63Cok+r-)5m-`yUCex3ARkL!uDh_SmoYBcy!xHJmTgO)*M3&MiAC4=g&Ahu$h_$H?3na1RmhX( zh51n(QFrfV+tS}=)+7C7o_~?O9PD=Ctmsw5^Lh>(G=BB^CiaH-{-ccFPfP!Mdv5y) z=C{O$&mZ?_tGgG(@|M2s@Q8oE(SdHOdS7p?f#(e7G0ybeusW0J+ zqTa=n?+3WLv`S{^kvwxC~FNiYV z8mH?wE$R5u?_O_3kL;A+u{7iS{O7jc+y{TrC)W7vISh;JCXT||K+V_-lFx4XCOdB% z@eTT1j*RF#6T^g^Py$aRf}h*2a{~FuObK&hY-;Fa=E063`!h0TaqTc?kHzQ0wIAo4 zkM#Zq_?-L{Yun?_N3Ay>V2Q%|;Q@*}G@Aci!PnTx#ll%^e3us@s#a!7vi+4feZu-?jzXI5Vap;qPk7BHKzE}a}Mz6<$X;@E<+oh6Sy;k>eJ+zk4A^tStV>U*oN?>091xh(qM zJ|c5JSpFL6fJ80y!xnf7*~_C(+T(WlOZgSJ|FV}kWsH^=q$^~%z>D~Ib#E~D^34e) zb?)>P_E?PHmhs0mU$f9J%j;)r?^Nr)ZfuKgXc31NmwB|P%RlmHlsOZglu*Yx#5wH8 z-Y9pRy;@i0v*wfyd>^*C&Wp&8tK5^f5l`3)y`CP4Ed{>@i7^t-H((<_fFAf0d+X8z zPcILfeBnj`F`uBU;179Dw}BY71k~2vxRG%yuDh7 zUZiy>^=!r7iSb+`{U1mF3r7amKS7_Cx_#Pb*D=4KPZQ`<;d1h(Ll4g49-+R7@jrOa zKO_H%!OBd%V!vCX_$09M^X65#YV$kR@m_QF8D90f#Yf4dpHGJ8;FBADyzb}sYYZNx z??W^?+UR}v?7DDV``7=#c#Xfr$y<2`eXnIa`d<6!apbjo7kI^=Km8)+@BN%3zJ@k z-^V+_z0xTO@M{A6x!DPTVffU*uzcoB ziiwl`zc3daz!Ayz{~Suow$*c;gV4iW?_}Cj_3TL)nS9t;Sq)7jZ+_pM=pb2CKNM4; zy|%_3&dNQ|C6|nAzgqT(Y_FaTPNlWg6c1)?Ov7KE?G#5}O71?*92m?4Ge1q;7eiCE zm8fubee*xT%L?uQ-VmykkIS6@N9JVDtRu&W{36fL_af)P=Ng@&72|jxE)K45IMVoh zbAE7rSY@DZ`&+4nLH5RFgX>i|<@PBvmb3?7L7u5AZ$+5C#BT^~*E3I=y>+#bx8fSU zR~hjGxPQ)W$N79H|F+)@$gi~xJ>1b;ecm@$?Coc)N9}$y_i1CJXYMzrb~}}Iii>_` zSY$IXd$a$XYF({70oW+`v)Fg4h{Uj2qVvEw_M~F-^@@Lq=NPkz`!+Q9_7@emv4!uK zkWWT_QLSUG-M7Tszo?ky;-kqYgC5o#En&~e;Ek3)KHLPu0-)W9|p~uDKl|kPg9Dam-4%+(h>#2pZnbh8kKY;)F9D{FVhbO=Z z*)+}4W9Sgcgn04^@cdq6f_Sy$9O5tP*OL=$veuXvL_Yo8;a2%`_vAUV%AY|l(Mh&U z9Q#$e!j=s`f4Eig1K4N#?0#c6`b9kXRbmnJUbY(h8fMLoZsT4TWD33)&uUD<9r&*Q zYX?&c@p~O?LN7+KOAD~Eda;=wC%4v<*n(SFBg-ZVc{y|D(zfh4)hU01+ETqQ8@zGt zrxN0!&gNhEyY#T#^L6(-#ml?@c)0ZnkB9C0@t5nfiG*Fe`boo@b_Cx~CNcN|!ot%=_qe&4KEH1d^?Iv3vxG_m%s?lJh-|Mk}1 z*1qy&*>6AIO26&;&f@Q{eX^ZlFJ+(i;hdRb2k-TrH{12d>#efIYxzC_FV@M10qYH> zo+mz=9XW;guzGMHfIUqN;kL4UvyER`aygFY{O8-nU*6f>>94VWjxCOV3mWA(U+ODs z*2e|#*a7buvp#10=A18fYhEeqi}CaeJnqbK&eweBp7U+VbZ70TIQP@* znymBE4mkrvug7&3SD1yJF!iZSdYQA+(m&8F>d~w76JQzf=%QD(_8E3~cS0YBUibUx zW$1bym^VFS;#qyPn*Oi0T#mETzH$RJ-S~H=>91c)^Q8Yg?upQ|{sicGE%Yo)^IuEZ zzrOE;`0ol!C;0DJ^t{BDJ3)Ge{?7DVlSNPAOB1mO@}Grx)w)QSY}ZHP(a=Qpx2L#g z&a-8~mJ_e*?|8pke4Uhqcd1mMJqlmP!cJt~NB`8?hD{)!Th+dzgR)OnU)c1V)^5u*l^v&NDX;b(Kb7{--STCk!?!t2BO_lI z9p?$Fo%SZ>HgP6KzQ%XP<_n!>WDb1UCi`IzKFv6EO3b7E`Sjx|H*SA5aWVQ{xUb)| zSFGR1gTE>>VFcp?7nN^}JD|pPl4oA~e%`*4?1_}IvT$N$-Tj8a%9b3bk0){tL%eU#V#F43wh*3>k3_OzcnDgI17GS3m}_3` z+QZmY;LpT^Y5gUeD(cIHEKIU^c#ZKtr~OZJhtUqQbrJT-W7yU;@NF&aUR;DC_HQC&gVB5 zcK-LPZr@+X!cUW*3ykyMSKWl|=1iFqsb$C_WZKwbFjd&eZ!GF=U_elq4p`nMlNP7Va7uF?q>K@K86kO9oPeCZL9;A%>KDBj_)@92X`7EyXK71 z0uP(IyjW0vxAJJ_$opPx=zcC!KXt3U_j2!~se3;4qN`N*t+sCAB68xdL%-*$TjNvx zZr_6)z3bs~+E9CH2flLKnMWJaY19+8?V!8j^G>Xt*p)n6)PVJ`a<|eCyA=b*S z?lbhLqOL2m>arMT>4O}}_P1-OZuFhKtF12>sMLM12PVUl@K`^6eHpq)uF5^Riox4< zoz;zeOGhbRYhSRMXNd)y9O7Bdr!%gXq2Y&+Ln9Afe9D1;kPN2dQxfof_d3RP19}d5 z=vhzyZl-_80{bXC6vt)Dh`&2c9MaUtLsyyoM5BA9J9Lk(bjP=dH_&_WVsr(32&TlC zj{x>XyxHV0A`iHmKY29etI?}b=C2g}r{DFg_5x%>L{~7cJS+dnIF(~gWh)F;Zpc*1 zPD1`pa}LJf_4$F&u7`j2wdbY`|L$vzfm2q1vkT9luBtNUU>QC#eoxxpU%vcjuT6RQ z6_x96LoRftv1*cYaCKI>Q_lU#Yu8@umIJF6&Oa@*>fx{6`JAaAJf2(t?gWPQPpaX! zYgWu|{007czHj_*{PoCP0@>^iV`rR&K13GxP`|6UhhirU=?IhKEL=A!(ha^o_gU;v zc(pssyh0P=0}V}N6CU+U>3H+ZlY>0-#$BQ0B|+%f2>%3!;>!$n6p~l6ZUz{~JjD1;7?NOKx|yRM=0dp8EZfJML)jWju;T)<<>X^wejb0nv$M%! z27H{LuBFBwru}}`Mrgj2II(kurL?oaZO7K{?$45I!RrHfw4-|g^-$Nn18o(Www8#m z)JN)3+@!%SXl0*`?MUfd2L3Q|E>qu<(m>@XLqGRUM^}%yF+5sN%h&7wF2Fh_k9CY} z@1fg>p_s_nsmG;1wl+>@8W%r_xxqs;vo=IrgvrV4ap{QWH1(4XAMXkD`%@%J8o?n7P+6b z<2=@m&rqJdfYI`^vsU~62d^}Fyu$c|He2if) z%O+}?sx|wWk*y!qdehB4TBexc&VcJ1t8#5!))y_--!K1%Y=*DWKfTvlBQL$)+@|%W zzpY&OocX(N|JaMm>_#S=TpVc8x@H-+O3wzDE;rF`8EvlhFhJi=00+Jd4xBxLbq_dj z8#u7m#Q~2l#CM+~KTeu1Ke&-GV`m+3itm`j8U0C|(f{%CYmPkY3|YT8kl&9kT-e86 z#Zb<{85>eIDC;lnN&M60Jd4d3m+WD){gQgd6@-$C)rkg&QD#WTTlBL8+bd(8I0`#r z4E7r9y517jGv$u46TkIJ=Gsv)P#Jb&c_?|ypVPiAhd*N<*1GGZN#kW7j!DNaqj!74 zw1JN6X0GGNipG#YM=0-!*15$xw@?P&fvM6N(!;BHjWVZo*aPEA`3-!&?G)G7r1g`= zgDnY7r$)|zXZ(E8!}H>cLdLE4ijR?AVy%1+hD|Kx=eoxxp_haKt#Kxmse;u(b#>SiI+IaqQ#n^buvGG)HGdk<(k)c%&V&j?m z(a9C;iB&m8{nu~?vTWIqH9^N zGUwXkl`Sz)#uw%K;sS@SrLioIp_Q{mGlPp-eaa1gnMXFWesTCQu| z`TGWO3US^KD%Z8{n$fJM#(HC+Pj&EBEbNXkS6{xWzHr~O_A|hkSIdr!b}{A{eYySw z`x2#nzs>ix@4Vhxr+eG@Ub?-f2K$cp$FPlBa@a;K;m%CGZty&Me7$bU)t!W{;Qnmc zMpnSVU zHyG^A+R$Yy)Q}M6O&sAK1?`ygLQxCDINjokLEU@axgM?S9};>-+~vVo2RL!&*aGTYi!9 z4?aMi174RtQ2u!=C3JH`YMkyCSo$#hwpDeJsQNG`@O#gUb8UbAhu<`x|lMa}(@M>-qb6 zz6rfz^{jktv2t(ZRD{Q;& ze0$#&Im{O{XMKcUxKi_YOZGfAhbr%4{i3yn{_Ol+YU0P!`&DM#(9Iq9m$qBFEkA*A z4?Br*zsA1)F~^;?mvyl>u6@3-_{Vd=#OGw5*BWe07idh_)lue8_B`{~qV@8BbCM+V#}&+!4~^}6-q?h1 zd*8;pJZc#T)Wtg zuQpVfbN)V7a_M3IBO3qFn4iWBANC2~#lMAi{P1sA4*q@CoOMsjr}QA0urEx$D*WOzwP&&v z{8|$_J+jtGkRK|zUV9N4-j^~~8lo!y=srAGE0x!T9 zdoB*&!M2;Q8)}2DuPKUOOtGRmkI8z;-IFK(uJ(W4{SovrWn;*>cpo0txd%(If z{GxHzM-Kfpy4k~?7-Rh59O5XHXVb$x=+iQ=SIyW<@f+Fxe1QJcr)>xF=)eEC{V97J z{V}xm=FQ*F3_m7(b}i@p{dVATAFuiK?Xy|(h7WH?0qg8S)}_1g2Ug>6dlG+O&pe0! z(5|h;ouAnH!Mg3Naa*o_gu8F)i_T*14v|BfvQL+C|24K+L%Gx5S6h2ze^>1h@r3@( zGmrAjDV@J57~c6C=>R?N=GA2158e#oi_0g5%RPr&NbFNl$LWET$zi&MGXQ4HR<3w9 zrgb~71F=W;H%}Ly4v24!jTl?cof% z?8<7MFKap*K4xEb5qAH4{Je~FYw0ADFT3w5)|B&zm7`AW{~KGBa*7EtZHFeCwzYQe zrQBr7xjg3X=R=;>gae5j3x{`j?az@_Y zFV$^nV*5q8Udk0@^^3XOmXUWh=pDPRNd^}+7q3rt~LhP|?PJ_H^zU|z; zW$y&_VqBxp*wDs)_S(ABYfHKAC1>`}w&&g_kZIp)t%Xl~XN>!uEMLBx`Ki*H2AL{y zLaV;=*{>R3`5xqzJ%Y+qCpnk+?foi;oCfqga;kF0cit~Q`-(RF?B?^&+|M!AMG4It z?a40@MIQ+38_;3O_tk?>yB9u=DW6v7jK~u7P7S#v6+0j~yx}LQ)*!I~#y4KUnv(g^ zeEiQdsn$OHntjpn#7-9VZ)UA1Ubp(i(5czK{^2Yo`!xRV+a5jKYH(P&L`-`&j?sPY zP3o`TGB;U6tV~VQ8Ih6X=M<(`nJ{Z7^pxg%sy7GzHE`Qt^8ro#=RI`R<_YrobyF96 zDcA;6BTxS0p;o_L-i^!&yB_%idw{&x9w48=tTYxyb$)?3kPIF%cvaHzIQpiBIMeV1 z_WbRAWm$ammd=A0ksr?M_W=Kx`$E$8fz|2a*)6&ck$L?;#LmTZ7b0Vj&X(@hJmuc*hxEOa?2)yU9pk=4_;jD;`*t5)4gKN! z8u*^Q1o87gxlOhld~eFZ_cidn?o0HQn<3j(eBbJoH?}N%n(Mwq;!$25xTnwZw1-1} zIWXmrfqG))a-FRbuD-xs_rfIq`Jdy{GqnBi{kiFR-AU5(qn1wK$g$`--*Ssj*%rpG4u>d5o7nIJXEA7Nix1Q7ddST` zm(HK$;2ZR>;au8Gi!98dja|dlK$~N%;r2OA@6EY}yBD7D)^NmediSSit>M;tWAf*p zYtK5bU&>h`@m|6^uiru3Uko3dUAI}=b3Fa``8l_h%|7*5HvNEpA8O?ieAM~;jCGf1 zS9<@v(Q7_ny!CQ@oqc`m=!br)XmM1)90Olx&)%{RR%PIu5zaGw8$f19iB5gEY@s8hbSS zecY9!Z9Z9%56aT>MDEu;xFu!oAh-T*OVeg(x|usPy>;aYuYaz|qG^U68Dwo!=RNaI z=m+s$n@2aBFCve5_umO`>F3^8m-fFXZmJYKbSNJMM@#TYjprWs``WyGB;NcSZ+$i3 zV*nr3pIf~C7(5&SK7fb0?pqp?B_B;5p458sA;0v_hsdMD8Tgu!o9-^-U-*(OFQ-Ue zyclz{emKVczrMBT^w-$W_sh$P;L8D?Iaz#hoK1IU%Ldr8Px`rrc;HZDal7`TT63{)Im24oIEJm+wt+4z=gGeX>5c zCT~vITXpYAWnU}~hUH<;sqglDtoHb1Q+$E)1AD*tG35K~l&>MH{~7TvKCH59w#Q>> zz3I?(+gE1&Z9LosAJhhgQ#&6l0Fw`7N^eeJ<7I!?Xw zvg+;kjnUTc#xtey)%v&J`|(inH|#x(CARja=IZ2cn1_plT>+w8EKFv&Lxc*k^oWwftqz(<>hJFC)_D z>0@DN+TbLIhsagJe*3BT0DlI5bGD-8XMvK)?^#=D5AKz4UPNc>6DzPcuEYMgp6}+< zFYozNq0I=!SYDYe2Cf3kq zuh*u(y-%r5);U|aWAm7GvyRf)#SU!dt&D#gvi3P%m5-&GHlwxBX&&RPa+2S4&!f*& zd~AFkK1wk9JF7=Tw(&YLZ%E`ncs)NaKrY?T_Op3ba9hoFKu9zHvxj@AT&TEGfh`c7JzX+T6w z+A2jIWo!o!MTOcTbfyQVV|I3q1g&^ziK6*_|Mfg;?`J>RI|(7a?|Xf@uIJi$j%%&^ z@L%_RuY0ZK*`3?n{N0bg$=)C6kbbYvL(fZ~T}k5!-;XlLEcKCZS_4@n;?mTOo7pt*DcP)0wY@V54 z?bqi_b@R{Z%I>3%X6}C}`(gTY*4Ed}m*|a8b6GPy7eC=~{Leh%_Sf_KCjFttEMMg} zKQ=!47IU9U7;n@ZsJZkjx%d=$==Q6~btgwzh&fcA3@N8)D|o(*KJZ2QnK=L3{p~{k z=Ha*PPm$@A_9Gjq=Xs5co37Nj>5J_Br1hlj`G0U;6dXr|hyVRnDi62%Xkqb7@sEZ; z|EL@ew~r1r7Cq5}zd-ET*2n7)gL2m~CDI*2pR(pgW`vJM_l~7MJt5M)fmm#c?AiVl z?3J87?bY#*)J^=c^HE%zIJw@X=AJZzlOv$v+ti2oBrAWq?TqN#V29>@w3cR>HF(rF zC^uuoiIMK3zyZxYargWYW@a~@#+c8g-D9F%%#+#=hFXksaq}o2ZjNXi&zN|*){#e! z*J#}!=cMS_GfjMEqlwRG-U;$Oj{FqmPskn)VJ9kI-Z>LH${8R1m^oQZ=)3OAE{k(- z{+LL^btjfLEEr$Wko|q9A@^TG4f&5{HB=qXGx(h;^s4pp^ez4EIrK}{cg+s)-1c2; zxSHty2c)l|q1V^rGt|u=A4;dM1;y%Hll%8+?aTX4Mke8X%VcOe0of=;4&dj858c?m zY%0a@)`$;``@MXTVhM?{mEDQ475WF`%bw0S-9+e*&Fr`He@q_2IQS}?JH_X9$Ndui zz*_rU`q-&`?i}?G8u$C5_q@(a;iVb(D?)#WH`w(P@i&QGjr4p8R}R#lMQFe5z*p%n zO`I64mA_!yx@?eby~VbnpSE6SpX;x!)7-Xx%eIyCL|exmMq4LDx_|Gr)x0xsYiS?!3fhzS z7SEQzSIJd*PExKaXt$Z4fy{hw0PVN2TPrVP2GRbH8BZSydAY>b{uezv(#lJw`6y;S zgVB%3roSFUdw+M~;p@kifwtGf6xpE1*tUTq>E<&GHouxU$Hv3WuQu-tBER|+OzdB26Zezp8 zW@6Xz+?R>V+5GBKtrroA zDcj~TUxROfEw-1k-F_^YU%lsy{`0H9)>pl*z)!?qNU7IVZhm!~@)CL9Jg5BXlzQ=; z@_Bz6te5ua%l=$+En`3a`pVCi4*azz14oiy{n$?fF-hyw+W4hc*129;newYU&3@5kvkRlZX$+uG~a2$kKi4Ay|bdv>mBUu66QKI^KJ#d-n-rU zRV+UB8+UIqeg`&Nu&#>rC>KC|xZc(JQ5D1lG)62RhB*I9mJf}tR+;z#A?1K!o8pTY z8-Vtn6T{9@++TYEEF}*@=Oy?iX3itDrA^G|<6Z2xEXDI_TL>G$@Oyiz4Pb1kO6N}T ze$SgpTfo>+m61FDRT!T}|7A}t?IYisvHFe5w_Zp)Y~ANlcRN;p4fXD0tbS#td~3!` zHfpTCQu8aUeHf6dHC{V<?%&@|<9)LA6sJ;b+S2}f(H{CXL)SR6VPbXgow+e7 zvF2cGN;F&?q~YjDcgFaCAm2oOs(jj)HQt9W_mAWjXX$_Wu+&e!t$bYk0Q|w}(PLE4 zPEXzN}pbYU(>YXY%2ZBl8@wuqDK}ys>lp z+&S7SQGP(1_q@&%W9R5iHomMGJBOx*e|GE~`8G0Hn>x0VmdExP^OfeDH^W-XSyT_S1VUfQR@(-5S4oKslxKpOP2J4&w)Rw$U!l=Qr{#xsi+`M^<)f z)y8zPLqF1&>@4)j&IHQtAWqs&>@(k!odv8Rwt%&BX7k(xFewk&G0!18?Z{5PngHjrY9HC&J@A;$Q8^OCGY5ue=Ln#pExclPxz#?pzNJtVfQ_8ZpRQ3bsLi zH+B|+PwrZ(=6P`AB5-3z0yi@AWJMaD{3u}WE;RC#?4QIBt;2aHI3e6$NFODP-{KUQ zaR${zeM<+tX@?(8@JD@>^jc$mTJNlx*p>FWDf^UoDeY35+iA1t5?B8OO|+MDE8}4) zZBC;XcI`9C*sL_|@#ka(?cD>F?s{kLo>0m4&SF>5#@P<*M6yPl=BUu#E0MdI$Y3k& z??4XQ!Lha#&Yi-r7;QD<0JPPQUGef1`CFO5t}A-W-z?v}lh+vgx7am_I-GV^q! z=GZ+<@(2A*e*jNf;DPphZd(z#a|82#+L6N!@dn&AJgH2^YGqT%&UNK54Bv{FmsQkg z-a{TQW}ZrZ%*#2m@AbpWj^Fpj3qLQlN1EdL_Rsof3r&BMoR2NusJ~gSJ_dPgfp>og zFSjXw4SPg#>0t(a`Sj>N!ZX>8#wNigC^_*sx4%I?gP7sx**ASWOUWsLXR>eW$!EEb zTo%2feIHpX>YO&@UUM?P#=E8PQT>Uoom%La=fm)II~Y&}_Ezz(=2c)PoBT!170QKY zYc&@b-WWdvd&uQYvad1s;Q`}%$+<$6=`q2^nwDmu{RSV+jeoS=)t>^hCQIsgaNF%* z8g!pXUW&$i+v}Y>ThWyk_|b+A{Qw?l&Q~*fq`04O0^Bw{I5raxX7|m5j~UChdJ~La z`+0T1drtj{@g!Yp##n*<2aAGgg`vopYA#kuODWVo$IaWuGxm zTH_q^JYBQ-CN0t@c-lf4#qd;X|7wnxu4`SjYZ~gPL=F|52`9>3j!t z*@3Lqvo6|V*4b_W=h-j7=$iCQ`sUZQ)seyJ+F~D{d+8dy>r2=EiFZE>T@y{L{9ZfA zc3sv-yClDfyjR*NJg@ZH(!#l!M~Ez&u{UH=Ii2gkhAMPlSb;CGQND!6Tat1nU(mDN zEGBTCR@UtO46>&F_paY%#_St?vL(#6c-?96y0?8H?C20?L)Z3M*c;%5@e{xb<0nj@ zt;nLKd449EqoaM{_B)KLTg(Xh39YltekBJU_i$T#2wx9ww}ThL?RMUk@1Q+abYKX(^`5lFyHd1p8eg^_N_Pf&7=E#Jn9SA@A9707`ef9;rKPw zWhTGKkoIM0p3U#C!Sz~jeO(gQ51!-0^~=)W`V}s&-$WTHxX$%nxQ@&va2?!_(XUuu zyZy5_-@h*&S0>j42>OE7=4}U46MIEG?c)3+zs;Bybr7$))u4^(Eo zQI<8TYtmTf>JKWj-}u*$${OmkoaiT|&Ku2j=-X;|x&ode2X?N1Hgo;gKlI?9dM9U5 zjJ060nd@Kg&Glc7jwm0pMAw#t|m5YsZ}%=OoKh<+w6TN@u??MFRzAAmQj z*+}b?KmAq1CsocHr+{^;M^7#MTLm9)r#>qp-Em|yhHN(7#lbt<$X(G|04=MDIg$Hr z)&r=EbWcS#%dz>?5Bd9`kNzsfM&DSn##^hJG89jW@vd@_$9Wi__`*6cKxM0p)>3yK zOb6rrx~9Hm9D1pHk_+8ef3I(7e<^FvUB~xwu?;1svg?G`nwKK1RvaNcMrTJAn|A#^ zi`(ust7AI`(Vi-=J&LtG8E8ka-o_5~>RohqxPjc5-BqhAl#{i4etm_hzu(sSXTE3R zEB&;|*8iXTsed#4m<=r}p`U16&;NeATK9}?4KIYz_fS4QO!ukqMdP+w+gr~lW{?X% zj4cOF&*Xb~v`aR(zNy^vEchaOTlq)hH+)#<>Tp>!j{eMpPim*^zDM!J=1`8o1?)TZ z#dBz{`qm^LJ)5r5OMx9)!4r=KQ&X>j@9^fRgX-)p|0oShlbFZt;WJ#7BB zpNFT=Hq%Es$Ts-z%m3c!Ks$qJVb`ZflmET4B9Q;>kP~b3zb{&!%>TA^I+i-6%m4P- zKvNy+BwY(rrwXr5Hvil5Wgc>^@j%6)KVbYkF*XRF)wgb?j}F#9b-X^+Pm+yO;p5T& zU-G|~9zD4H?;fqgl@}pa8A%)eJ+R%gCq~MLI67%h)Pj%nBgQYsKiWdh>{k4REv(B{EFX_Z zT!kKA&-WK`fFqhafqdiSwqK$%NxdzaT-oN zG1M?|d{#pfvKYg*kR8&(b7!b+)p-p))%gvkP1{4!`_(4p;n5bgNo|`mNxE7Zy@EEy z?uu;Ic#f@0^LebbOnpqhq#Ql^L;0@fBk#f^>8tu9ThCnT*mN89pnT1xEMs5Avb#eZ zSq;VLlGYp@pY3#y2Mfm0{{`z@1~x8XPK%8VE1u`tq?zp%>CLx&vf|HQ`9~kV9jJBX zrC@~QCAmLUjJ{nl;C5uC2U#g5$E62ZDQ3*e%8K$H6@TjF=-`m-Tx#fx%v9%cK<7$N zcCZr`h|c6z+SsX$S)Ix|P4K)~{6+>ozAY4;H$EjaOI{nD|+ys-P~2t!O}o+i1t;H&Fxn> z9Q-mKsP(kkSr1M1U-)!6bt!5TPqRbyk1T+%?Hr~2uYCmCXlINVtmY^f9@nPlvG{xF zH%Tn8{0+tv680th4ceEoDO>6t6LXz(5^`DKVnW%S>=^`~_j&EI_-yAIYphYc>*Bb` z@Y~g=p6Y^z9&|@~WpZNCtu63edz{IiX$BkO@VKQG9={)oE}RUH;q}7FPD3X;Ci>g} zfA>|h2ix{9A6&%xZ(Zf=POHum~*=ThV#cLmU^kUHp|oj0Meo&uN08SE3q2Cd&Ae%GYo zw?96+#M5hBee-Ah%UaLBz#sUaHr2m~t#;!{uN0Thm@v|rmaVu_9XwhGuaFDfXV3fY zx6uDN#0=ij9#YIFtAW3Z8DGAa@#R`_((hw#(-Lwhe)5Z+y0-cV7+l`4@2Lv#cm)3+ z#s4E4)>TP6g}++US2@0`<%aiza_t1{YcYt`l&O7>BmR^aNY-X+u8dv4CYo5Z>}0M zUHft&oA?6Yuf=v_qc3-DnQi10#QERYKj1Vr=Ef4%xi&Fi`0cN!zkJc>&#d{^QWv4U z>ld)rOYi3Zc#LhQn_6_N?ee~!=bM$e_EG7v6Pm&%em&t zUrSvs|GVJx;R6|9#3{n({@L+t5i%7fTaMhnC}pA$x`CWv{Px*JeeJ z4zxR??0MfY_tVLqt#=;0E`;YJ;r(cMh3r}EYxm;mkqmO^kEhS}VW5q7F2&CMbY$=K z6l3RsNASJ%GRm7txs^%TY+&9LamQzuhMZ~2hf@9LdG)XIbVnHF>X+-YFfRQ}2wBxS zh~3PI!d5l&T7u7YPNNSAAxCA%Q6+MOeV~1s+prDW`DO?B*F@hCqwktx>0IlUVd~-O zc$KH)!SAQj;{+{BX(u}U_MY@QouFlDq&waE09L;*VSnFD_C)8?Zp`vVbo}%z=UnOd z-+MY<78+s3tcPa}fUZ_{c>l)4`@_2;_%=2sCX5iK2rpXK!AJV7Mev|nwhVYt4PMNp z&k|2uyQ+YGcUa@mKD`($UO41z2>+FH>)J@3Jb3l)05cr;9P?ua{Z{Kbc)bB$gCCb! z{#rfo)$>7Y)F6IL{!)g%tExACwA8xzaSS;u`rpKa6mOtkAg;2pg8oZ(v1}3}$7$*y zTFp!8zg%1mV#pEG0!-P8J?*bYpR#W2+81sh>%my1++JZ-6AF_WkV-wor$h8}*nNL>KxNmIg99+%4)jZt) z_3u4(bD8U`cz=!A8@MF;*o+VAuwC4_V~Q_=AL>6ICPzd6oBjhk$NFzBt)V;d&4jH` z>7A#ct8nA3H`3$AX6R(`c0lvLE*SdxUq8rDH$SEY=YRFfPwdUae8A9%=-VD2Wp`#l zTlqqEE?|c|9xNJf=P2;ctu_WARnbTKQhuM}DfSi)Tc)O;6QD zo1gj=IRTmSQ%!6%!+OB?k`Ji-)KcZAC-Tf3S9j4>@$=wrS2u(CsSRelH<_O(ngrJ~ zJ@#RDUZb5uRO8KSTtPeR_#yY+?Q1<#VUNuP{Ri4PF3ebqVp^0}Nj{%l&(#0iBKsU; z0OmRJ`Rsb8zULC_nO1qv_qFCvP0GARFP@Ap3ik}=h23lBIcQp_PGJlbL9VKdR~!{o~ij`j9qrWH9-b&BS_|GN=Vv@Pvc%$ueJ%~39!kR}t-q1zUrauBaz47oBwDa7 z6^~awY|~8kNQXyDq#tL~K6utV8NI+3Y^7grnUK_tqD;KP=j=;2a(uixm2zK!S39&8 zg~ux|FK6n<2c$MezDv`f~&nsTN?>*nn`2=XA9G$ia@D^T~936C4 z^G#&0E`hE~(2-X8C}(>*5>DEy@_U<&|5emzo`naez=QRc2lm+j5B#wO>CI_r_~ExR zg6p>rB;R#0{Mi=BceQx+@8<^k)V}jw6MgC$XlL=NR}NlT%DBAMr9{5#4|!Mif4Y3v zb;y1dvY#p6buoPCE8o@JhxX&3ePV634Dv79i{`KYsy9}N=IQWi>0#tUK2BS9&=!9_ zgE88SpKICHtKTqj1 z9}*jbI8fjDkmecm8~*v`#-+DI{Mf2oIq_uA>*;mf@0b6pum5WZ_*YI~yn%^|Ag2n)Kmgt<1DuZ~AsRDLz)c*OtRsulHNvPt3Poua%eS)ZebxYkaFd z*6UR}t#5U*PhQfk*Q;j}dMY~zIXRYhjGl6C@|KnR2Hr|9wf_nF#(0)Dr@`uD*yV9b zyvVzzc#(O>#r@q0+_(4XbH)3sJbE3@dcDU$uaIxOUQ4h2QwK+{J>)@H{Ytl9ujmzA zulF_HkzPqg6E-~bO4#tUKSg(X(JZ-MFE-k4r#PIFv*pH%y>A3{D?r06kA~^u@y4DH ztUuy_QCZk*FUtPF7HkH$wrV|BFtUmM*V6L`&@%Te)~qP<$~YtTgxShN0Pf|f9Yb*bG~?%XmTX$^*+BWb-iBV z2YuGVKc1yJt@P@o+%220k#4=-r6yjJ^v@h@{xEgl?)5#&*M04OCD-dMC2vyu$2Ebs z&Db_^cr0F9KA$YT@#bW5oqStwK5u&e*ziv4dMhWhmVB!$k9Rs(JjY_rweVbfGily# ziVoq2DX;Y)`3k}u>j&$7tv@C^&*~BO!Nw|!JNU&~yEjJrg8pz?tf@@p`E-xIPkKC; zKb2VT?F5YhCf9p2>p#qbUbCss_0(|@e#p(lGjC(e;C9xO)P8B?zL-8oy**zT z@zi@;LPsrH%sQN1!~{Q2`>KoGy$^Y&+dlKo<-dCG3qN^V&vunCM%Kk1m?QP1DFc6SL@2WPq0_0ygFkia z!8p0{WK>_(J6`3sMeEpgVF#*xOXxS%F12s*@eyL6IcDAd8pbx8u8DNVW+8{OBfJ~o z8;nQYMy^aXc`?{4Hpi!sy7&9+^%1is<^3v8zG@}=X_@l!GL|QMQDdIAJiCrwy7GEG z>(#Z5@ehsjm6N}?g#X`UjY{P|=r=Y0!Sxx-PGEgt)*>{tJmY(NZhGiRL(39fD}eUD z{GOrxTH@UuUhda^#=lzNxAJ%PG49gE_?)flOMeKgU8pfE;>0QarFTtu&l*e{OU95h zQdqr7>&_}K=($T-XW=~fHIp^M%^nTYqF+4wgSyu9&@1v&{CX9~XV-Yn$>^2-mu@L< z1>Imjrt_lmg%jgAiE`a|{2Qx3tTQ^)YwtYIpUwj_3X!3a$kJ$d2!{B_j1%K%#2SQU zf48fDn=Ubq2F{%1v+oKRkM-}T*92xMuIJicZq9T$Jkd4sCcxOEqHli@3Ff(ZH&jR?EqgAabbJSqlMa8 z>TBn2UtgkO0~@ayOnWx>)1LJy?fH&r4{P{stQd2~5w+(}JCl4H%J$sXPkV0lwWmUB zSHU0J^KQl6!;h#vFZ9u#CiK=n#$)+)Nx;8oVlPL@;2g6CXDIsrs4etinPly+d~K0j z*}O>C9yr^z^Q^+~HE%mh{IDS)L;ugWgB~y52cETIS?*g*g8*`g5NbmojTx((dL7==wBb ztbA{MG5%&YeU);;6-!5dTG6NB;Er;}b)B{U!Lc*A{+&(g=eLY;^8(GD0Pyq6@K?Iq z3Wiwy{p2iYN}MkPP0wjTx8vWTVHLucLYLqPy~>Rlf9B zxTs%u%uZ|JD8Djw|In=ymH$@|ovV0O+*M4!<{pIVA6T#qb#7g_i&vcOuxlgr`# z1N0N^$U-&WBsO{V1IWTmWFd|%P(}T!;C;2n`#5%D6})fvcwg=D9{X)&6})fvcwY_g z=Yr>4-(3aoXTtkq&|CH+sC+x#Ah(y;-XR z-fP~FZLj)9wKFamfDV!Yz&az z=)VK{TfIZ?ua>?MN8h~z`ai(<_ZIj&7x|Iz*CP2+pN)*E+#1HnW6(tFfy^)bpstww zHqVz|sr@mC;cl#mc<`N+wIwJyHo5puO8+;Ie7X_$zS#E2YLJIQ<-@xUY?$Tm#oK=n4f9# zAI#j`RQ#2`YORvfN|+mm4Z0Y5Pa@y#5^QTzKd+vdas{u4=d*KMJnewro$!0oT9@DY zo^ZAU9b>(am6MKj`91qs%0Z7WhTmM@J?T5cqx;}@QD|7#Ht`!?w_oLAiF8o&fz?;o z9LFZZ`vQ2M-`G0rgSv>vdtoWI7jwo;jBjI=<$tZ~Us?V?cqaV6Dl`A@@bO={i|O(k zEe6?jO|W0h{_dJT;y};$txR}j2YGr`A3XKjtK#o7ulB90${$I$9-X@$W9s;u=Jymv zBHe}TwJ@CVtzVKWf^M#Su>7Rxe(2r=ox9eBqQfs{KZeUA^vgESf4Ip7Vx5NFJ0cgj zxn1x&pM4cN;rl-PinzD8!qw!Anw&0ll^7>+%2T3Kpt-Qp?$@Su!-R7uL2LbQeSj37 zBb*!~bM-5;jW0UgkbzD=_hFge-u*w7-&LHUp8hy;Fu%*_uUUUSxgUw-Z1GBu)}xcO z{>_vCtw+1GevzDoIRB@mwYBAt-=J+L+K%?>{6}bM`-4uCPnE2X)&!={T3HbpAC>>r zM4hs3aiSH6-uiAc{iAGCoyV%2sPdTZ&tm;Y>>#ycrR?B)_O5<+AQq& zBC@EyQ{_HKxouvVp*hZsp#5$0?c6=?dgo7St%ELfi#Wi_MT;j#O)LW}^XJK1dikr08d5 zKtJs{yz~3uqGzqgM}N%FAKxqg*L3=r5noey|HWvRhpU=rfqs}= z%Om0aA=Wqu;_GkOCp{g$zD!QQk>ab-|1>oE4^Ka=J`M;^Lqnfm`O6*s_m4sTS%0U& z%ok1iJMwkD{rNxFRWfHny5Zu4E9VY&Y)LljR)H@g@H@hzA`Lmmmp8;m=QXsB&2Qkm zJC5%YA3c-vi@Bc7Z%#v8Ha@x-pINiHrKf&RwUfPQEqidaURJXiANAI9{#Tq^x~zL! z!748wXQlFS6vLcIUG!|adnMeH@1%J7yh9bMn!#Py-Z;kWla~J+GH@I=EZ@<0HQwrP zSN0v_4wj4pr`bcSh3}NHChR`pCGiFMs7n^CeSUU+ZP#}85L3KZYo|8TkGQ^x>${Zx zrRQ0d+XBYxI{S`{skx)-U=`m~y@abVV#v+l$V*zc7`(CH(Yz+rubMsP7E#9I$dzy` zMj5Xwr^VPH*^N8-U*AdbZNQcr1N{H4udi_Uv+^12FFx9FNC4;z~JU{Ruf`s#o77#*GS zW|o&H=k`B(|2*D*&#QM&QcET z*{5f+yyx|<=&k3)_eZh$vL^Cvj@eGgJgaX@&Q(^r@7sK1(b4|d_ASJQ_s2h9AYMJE zeWuA%F2n!+9(Yb3@{Cx$GlM>UM$>9%M#*nJs9S?C;Os6$mumKu{}*%0>mxIs^YHp$8pc-h-Z(8 zM|)oWux=YXvhBYlV1G!5rDOknjJwZJF>~u3XC!L?);xS!?w{*ELT@Uid+rY1sj^cLzS(_cYGg!?hBw+50t=SB;!gTTb30 z#R|ZTXN5`9v2rt37B*vLHdfLC&MVGk`6!=HZ4)Nxw>Zx^cf3QsDRa0qR&xqEvwrJQ zQTf29^8XJ0e+Bp%YLjO)YBv=;o4 zR{E!x_*M({Z{k~3PISKSTY6{y`(K^$5_pn@oR*J~P3^WxI%Y5-?8XzC=+AmxV?WN| zHPI*rjq*h!-}j1$MQVPArBRGB=X=kJUW?7M?pUXN79BZvpyf81x&-%2>s>#^a^EL6 zqgUUm{v4hJ;}I)gN@7&H*rDv@Ymj@tyxRGe3)9S}Ze2$?^~i1=__+%EVKw#ww22Te zE@G~J3_aJ}NIkb^ielfz(Xpq~KUDL49k$47;Ljs4~o5#~>q zGe5ebp?PFJbJUriUo@=2tj#iu@7gf*|YjBDOp>uP+g z5l%z)v7v_Cld>9`Z|D33$LtSp$3!I03Eq42`sR?wi79~{rnNBKbw-Q~*?E77_)56( zf0+NTc)HdjBUZ(G$46t6lk+4i>Dv->{LApoh$l;4y?m;3TJCcF{8z~z(ErN&(O84( zWX2>D^CUevwskaX>JN|Zpsc3aRGNyG2Y-^JrKOXljiqaXmbK*T40jq{8WU=8dd({h zlq=e>wv-#kO+y>6UraZatG@D`?S0GPJWmEKUM>vu*OK>f(66HAb0$XdqQwQy%Qd#L z_4Mf9efptnw%v2ytmtL){fhECDZ_rBbum)xp;F=xSsd79U5hEZlo+S>(5>e@#JS=j z8eb~KU$kRj${E?1gRKG<#L=U<#4|KjG>6}LyxYJ%i=BS^#M;E7%M(7j{N7)`fW4Md zKlw9!f4r?9=b7sFUDYp#`g!%z7}sL2ev7$RobBDiAJV=1_$^}GZZ7n>7fhSWF_xHp z6LYG~H|RIabNp^`oG$gP^oiZ~avaTbYeWl`MXba;$FH7Ke<__4R?Z#I^Bg%m-yePE z_~@hgp5w4l6epVJWbLeQB70sG_QN;PM?Oh8{ha3Hm2&7@c1jj>D&deF(gcRfu2Eg| zYvo~5fZmp#huANDt4BYr@!JZG9_RNh{H_pVQ1fZu;~Y9)j1M-S@fD4+EOByoE}?!c zVdva=r$@RU6(RJ-a=)+M0{S$OO)1w!^mag|sh5j5b5I0ZIb-MQ)zrE;sK6K@H zis$>I>o6Z(w|KgzKETprsPv;FJF|YoxYu7jn_f)fhF?Dl0^{k(gqbIWPu{iGr>`0} z%I2_Z(l7AS5*aZv%5N`PA}{xHd~*P_e9l+L-}z|ir{_YGFPV(L+WH!NLH4Y?sjjNC zt?&7i@8r5VB}_5(<##qZT8{i_9h~bp-r{^4G`SDiyw1oc_c_1TDW7pa$IDL6PR82z ztVbTN&E^`%dSq1Ba&#@9YaI64wdlKWLRfY?d}^{7C!9dPYxosD+~Vgim|!tt9(7na z0RArU(axW*J5=&_vA=$_#p0l7Sw4XJMSS)1%U>{G-1ZBSzjAckVvzciZOCJIPGrV- zjw&a6XB9Lrg}&hvBb&!_AOnlmf?MI@n$6=mbY7zK@!aPy_rb9efNz{cZDN{8pbXW4*S z(@pCdnzmA3txc--OsC#4#ldc-Y$ueUA2~NG*RvjC>on+n9(2Z+Ybt{VmFVkv*vK>O zT(%rHU+~A^3_9HOlpEuib1dtMV2?-8kr@8ZJ>ZVkS1z8S_8uQSjrM}oE45cMzp`aF zdTXMd6MKR0Uxse+zWk=Kv|HCoXt%D9qush!TFCeZ;}gn_lRaGW$p>{kJ)_|L(G74M znMkcuPtQ@@8`+?>6l3xqO0%OeY~H5ZIo5@-MMLBty0&Nw{#`5eo_O+yb&=utaQYVb zWZNfyo3SjHo<^3kQe>$)zYkfOK>1afWofVXZdzIL-c2V<&D62NU&krbaZysnUf162 z{m9tQ$tM`FjNya#D`ShWQ)tgn$XM&@D;wI^{dGg@>H>a;HMG`YKg~w|uRuqxA~)$8 zWM&rfIh*U?KwBlb1T!VOUAC8EOdf(Qjurkb=@C<1qPpv zqs?P^t_b>-LO<>|jpjSVUwXg{eY<n>OB;?7sS#a zzULwnNqj#xx{3B0e5W7n58v0(?t$QY!^cC9?;B4X9KPS+$wOLOVFI$$2fokp-c2h@ z-n;2!sXu)G8Z_?@-!D8I85q}O`^D6I zD0Htse18ZXPvZMA(J#?naD8J%Okufu8Jm@1TA7%hDw%hoKnel!1JnJJaBK}8v(#hDh#PAQt zNBj)&edS>6_e-|*kMG~!a%A}a(l3S--&YQW{XP<17QPqIem|bipsoIM;rq9#e{cKU zU5~q9yy7#d>v8wog`e;MJ{i7L3qE*!6+XlYe2L}wBSpj)ieKr&DvxnA(}q5c$N3*bMQH7(SqRH#Ih6?*t3K4}v^sfkPB zUp5n$F}w@A>xajdd$ErdUOZ+r@t6ma@tDukZ)m=zqcPQ*vC$p0(b(%XCs{mSnTW@% z=KC}8U3p*enCEC~jB6!fc*}JYkKtZ09`lQX!t)UgJ-3Vhsr9k@XJ}51Vsf!6;xCJ6 z&uor(Ry0=HI~Mcu3FuNGu^4?zaSpF-?j_c zQFgp{)5%UVbu_UUTgPeC@v5Xu-2lD&lc}#Cj!aD(fJ|K#={}$K3|gjcLk@074sPZ^ z7Gua@vnPXo*^4NCs(6a9K=Bmx{v+fi5l`{GD@iLSbG9>{_hOqJ(Gy}`}6Hqj*fJn$vnGa#@Q8rCm)VDC_2Fyavt*nOj+CA9K+|v zxH)N}m&z&fXwykqM`uO4KZrZg`mCe7l$ZKJsS_QO#r}L=JuH1XP5H_BUn+lN7+r*y zTd6}Xb;zR*`KAuJ%nQ#l`RtmfqdB87=BJHdeNI>&i* z7(dqI@@oU-cm2DI6^Emrha-Q50X(e=l)q~b<#!GNp2nEgbaDVskMq?_cv?LOdR=1H+eqzyu4E6lNVfBgavXBN(R$Xq zp+CI39&DWpmWJtz#$d0ya~0hEo`mqCF_zornF(ya~pA3mFHz zd()|>lSel#vN?OWvpLRr3rDNQNttu3y~{K=-`|)0kC*pt``C-THfnte)5m&!*5Z$n zebyU3JYH(rmz*!4{$eHVtD${i+NT_`9NMEbeb&&nYT8&rTa|aD`PJ@TGGXeKV=2T`*^QZBNfsU9X+UTsiun#mvE|J>C7kg#VYE=|tC` z>AVqVo~QDo9}Bc|xYy2KanH2V>vzh1?fkXM4cJ?g$T9nLWODwVv1f9zXISIQ*fO+N zZByMfhOT;76;pR7)U}hkUr61xZ`Bs+T-?)h^)Q|p_wIN0R%bguo5NaCb)=ZlucVg&NaEV=PS$0eNC>-*S2k5a~$7tEi2E%ecSVT))y zkvylW01b9+cJb#mOM`WuJ=LA$^-hllw*PhWcT(l~mVD>gIjoN*e#fz?;*8nNqt4C8 z;Xgu;ma*UNp`xSy;oGOWT;ATax`bZ#^A%9^yv7UrK6`a zbN`a0#KMG_PFEQ!qN^l_h<&_W3&=9c+06ZohIgyd0EZ z*}*>J*w3>4)FV^-|MI-6PoGKq6*m}Q`~TCc$7jNS>XE7a&kdseokreL`;T{#wEkg zNUy&5rSi*|1EJhvKfhiMlzqk#@XN)gRCy6TtwCPI7k{}M0_BeM%1!8}CntU3)50`( zcnjre-GB$4_52%;#@2@Vkh!Z(d6Div1!z0hhlB6>Xe%09{`OVg&CjJT@Arc!Pw}67 zp;=;Y5ad}li}J|aoLhGvmmvR_8hWJa%azEV^hGrJr)N@qzI6T5Prds3@u|bo%9H=a zJ~@;Plc+EG-WB9_%eFd_`YH~n`rc!CxZTy0boE_4i2C-$Psyvwp7n3N`6-N0Upn7c zWr%MRev>t1<7jZZVv@K>_@vq6-X(DyUZ_o+v&@0K6` z&(rBN20z%j8A`KdDsU&eSHx1?Mr?vKAmlK$0t7)pU(G{Ih6W((*W9glCSK; z)z@_Wt8MShKHBT}${fn}-aml$#-1HKKJLyb>=v9u19H+K-_CG>rW@hNKn{5WS2{7BSyi18`c@~{tl zDi}n42ZB#=Tegp%7N7P%oy3Tt)Yp@3nSHePbzj+stFP(w#p2UnY}skryU|zXP`3A6 zTV@~ajrz(y-1hc|PmLS<$ERD5p!|ht##?V8-ZF=HpT-ZBL!-EtSr>eK9^)o=Z(97t z4^#40T3KH}F+m%j`ifT{jf;98P&Z4wN@~5aqp=Cf=v`)>hib_|5p9bP91+*2|pd=N-?UhW+?OL zUYQ!t@yCzLeKAhe$I6gx-zDkjOL;ZF^z+om|%(?8R6dzBn2798;z~=vLSuidH^DtOUrp;WC-`miseH1n@vYSMrj{@L60e^g zU>*K5Lmd+QJ`8&=6TkPTqrEqF^{g$QoV}ss_pkdX^9Q~%51-$??Vs#E%KDD4tf6dQ z`_44-?9p_Nugsxn-*3{j&(qg0+p>mOU!Uuv%!$4-52t;Z@Im%U*y5tkUa|i7a9bWS zdN}1RO@l|fefDyj?fcS{`6u?zFxWtu%180rvmu{7tNK_xaLY^WZ-qy;{~2e?+n#y+ z`VC*X7LyWq6dzoF@9%#?1E|BsG<8VekynSl`g=={zWDuHTaPrfU+F7|cM(%JU?XKb@-IXL{{h zGKe_;u80Gm-$~XM4SNfm_a`vr2JrenQR^EJeWxD*mbo4mWSHA4bXZxwc z1%W!qeoc`FUmb$;@m@>Qf2u#*>c-cY$50S0kv5Pd+F!lM3XQ@3KY>fw8{*f8%q6jQ z{!rOp{`lJ30o36)Y3lG<^j9ykMrlTRK#NU*dVCiB)!KgQ5DnB}ApKQBo(B*sl)dv= z#TWmku@Cxs^7i#W`-UQ(>-X=@89*JTr>VnW!ZvXUzvx`@80pn{T8!)_Lz-LUF$1rp#87yztY(k8@>Mi*L{?Ev9HXb zXy4D%(b9`Ao?*)xVtuXeqs&phG7qPHndm8hq09EeX?XYn^INSAa5&{HO=GX^_StK{ z>Z8ox`pO)tc+)Uj-u9$V6ts6X`^vSLl<>#mefwh#roE~0k6XY)fB)0@ME`x@57N{j zfk$2)jx@fw#nK`TzwhvsKa~7_w2v}p`N|wBem4(*)))B7{Ve#sZ2)yRF-;u?!|wsc z7tQ|cUVL$*{Ea|-ai!vm>zM2L@wbxuMcepdlw5^O@kO(?*8t*+O${!de1`GG0k!dl z3~l_|A!y?UuZ=?)UwrZL{;^}JSMFyOUtBwYIxI+2hr!5mU;WjaY34szo8w|%`2)c( z`8$z`tkHft>yMDrqPf524tXHN%rzg{=DEl>(x1l3{nyM|8LSJUc%!ac`^D}5lIxk7 zct7*8n^}jhg>~ER{ne+gzgg+79g{L&v(mY@6`-f!~7kMXt3U{z&=XIN*SwI|w& zSX0KvF00(NxwiS{U1#3EJGFi*HDCN}r#p|fcfy zr&hqY!m!3G`)Y^h*TtVm+7K3JwO*KswR-g}_tjVXJi62l#@|!xtM$A@&$gLP_rtFb zoSyBq&Yhy^FM{<7(6qglwg>8&X+1A@J)zY4y-WS#tYeuEJqw`cFz8um=$W6OWxH9+ zW*D?AG&GKd3mRwl)fQ;la+O>E?*;46*iXw-B&9_opoM+BrLt^~}&)$mp#sOrXSlJwC`+F=u`)L2?|2MY( z%{28<`@1)|dODc)yYx?8&p`BV(s;;N)^+;b7o)K}Z$HdR*9O0pH74wsh|2$cu>305 z=I)FBl3&g9Phc`UPW(SW`F!q|9(MG>pG{uf5`F7uD4(m+)JOD*2I&*;pFUPU-2Nz4 zKNYXB-)cbC^hD%?|=IE(0zZyHNC&zc9`FP&CJh8?Y~B4qrY0) z7n{J^Ei<848*7|t?XMQ}E{;vmY;p>;=2TweHy`!tlFqJC-{sjgqQNhyqm3a{l;Ym3QVE8%#i<9)5W z%=&HKnkxYeP(7da)l=(F*|PPUDBr9%nxTB^X3J+kId^Y3_KasQxI1-j>c_tD<2lTI zU;Q2&K>e2c>KE+a6ZH%1uUN{Or}T|8YMrpzzb?$4f&M-27E|ZaQRJ0yK(o|6Q=zN7 z2P5lbBLh{`k#&3AJyTg%%k0U=?>yf9<^bwH%UA#3WT0m2AOerm1kZ0whD9CrW3|9-oFeoyn&NA_PjelHBcsh8cavWUInN}&0@&}}ZqCZ1aZO=H;h<7y%^;-!)9`TSO}-(Us%4Zg^F z>Lp9qHU~D~2KepHSsE5y z%o#o)A>AL9h@6<`_^ZIQEzkW|*?`;2m?^*2YKKo+lKnHucuQ6-lpA;Q?$Gn4c!bSg8 zGnO^opYho{Vb{kq*SGe*ZtSDui=%5-x$J*ME}X`m1TL zzw1n$%sPhON%{U()-H6ODU6nfde!G$=jz_iQ_pvuZ)dpv{S4Qi>3!Xl`!Ca?a|7j? z>#t_G{y~Q8#naP&=kg5K@92G9?XUU4pX=r!XL0iAylWaK$Heq!Y3a_7LKVAq@MSvmKCncZ4jGs~XW&g?E>jZMWM4DUVL{%xa{b27McYP3Hi=GiPh@`K^ZC)Up;N^_pkL6? z*8Tsb&NFCBiv9nXiwo)U3tj&@Nxz~iodfd%b-&l1OV_D;8FQFo__4ik(WB)Ff$}$d z<)@36EDi8a@f^iVYFJlKwnVT#l-(tpH-S9^sLzMws+|7G`zbW}zE`J2ykwng^Y<4o zX`t*+N2dB?8?krSz)#iJ$W*0k?~V+VdAnC;B7RoomRaJne>I-x$H&)9c}f15^#>_$ zt5@E)dQxrF_YS4D^BZ271C9T`mWCg@;m1~wA6C8}rCwIQ#FGMhoiZSKq{XhaO)-zBtw&efrlQeXjd7l|GGu@{T!7`g8`?Yu0|LaqRduVvqGs zURU$hC6CO5R@y^-7qpbF2&3xxl`Y-FZzr^BX3blJYm8a9;cGWz!%uOX?>7;5^!G{9 z_u#qo{e0zL2{ZYBhVTD#d(pWp`uEV;;(_1yv_3;y5&MZUKd(b=0q0&{m$V~-{)1wo z?bu8m6Nq1VvMPBE`Ww|w=)fY{SzP?q|OGP~pyBg@*4O zF@5n9>zw1yoxCJ+@N$j^xjuY}b8wwA>fAFfj6DBUj$egFTzb@n&hzV>{Bx&_kKA!3 z$Ed84myR0m+_4Tj?=0-}t2l1UI{MPljx)n=qgeZG;c)5u2?sx^MdwSMH=1YSw^c%? z%ite8&&H-yUs3~(H%;c=%t-gPFniKm7U{;8d^Y|q)&^y-e3snE-g9-bF#60Yc#a&e(LTn`vC)I<<*9PTE((#tbkyXp9ECk=Er|PY~?UWqqz&CYIzJCe^ zZ#^e^-O|k1AlmMHG(8sl#7A4{zk|=UHSEq^)~V=ypwcn>oi`jK9Xc+dL)tH>Wwv9+ zL6#oP`nkhjdt_loM&g_ul;zWbM+|(L$kY@XkRCC+K6AU+!?l9I95%&!(8ve z?>j9t3_4_Y%^RWpzzeV?3maX#q@c0s3d+D&9>$u)h45n({Hb(8yWS3mcb#$Qd&?dS zg?7DzjK3Zlv0O2hHpX3Ay>F<@uJBQf`;3kb2WLk#=CFqOaN1ez4DYHfaISuf-#GH5 z{es#Uk7z}fT7(VAQ8T(^_!}OMo++NAxQ@npaw(^Cb6wLY~@rH%6T#L*`xV(N1Kk3>sC@@9aA-(tRoI z>C7EVDPdZQsw(W%vJr#wYoIJ;!6xZ`1bN#SLzCHH zfZ|CGG?KkD2fB!_|3Pk{p~-gF=A&)NcGR33eTX_sX4TjG>#I7xzqYq-NoTG8^i-YM zHB@-Dp1mN}JAXB#cr^{#6}Cj=rxy5tOTRI$&) z!K;E3)8kbhde;7V;ngdTEU3#{-Eo48SA{1ySFZ>2%ZQoHK}I^zQ}!)?V;LAN-p>x@ zcVTaEJ-cxd*UC75@pI1At=K$IIC;A|oxJ4@PQk7%4$mD+KLc*HUGHLKd=_#8UJg4R z3_CH>{Y#$Rz|rpH?0PVivul5N_^#ofJh<#ZXZZ5!knGRpkIW7Y?`pzM?Er^5!J*bF zVbL&jczEM6%7qnXTm`PoqTiVfu2e-R51S4Q=>!vs!2-XYcXDrH$k{c)adzzs=kFSJ zXxXwZ-n$O$Z3bWB;E9V*S@bh*JZ|bI?0rT#8tc|~3ql3E_EBCJLtcW|u}3~!S?K-=}* zX6Rt!9xA_`=R4>R+7I>A3C}y=b7yg+dmlXS;=TQR<88jtfnC+<+Eg1CV2|a8oT(3y zzi?U@{_^W4TWeb1efxE^ji&3AnY|EJ>L)aX|q2wVf(F9}`)+b`tWgf#=h_VsIe_?NNEV;`zeS!j{h`Y@s-^D!FY!j$+6z_S`c$$n4|b z^^TgqioSw#h1kSiVglk`{vG!%HYcD_QJrm)&Y<0;qebCjC z!Ew5W?&@BVlYihw)6d_&DTgwG_nS(oTN$z|zlQI4e$C1>ehqnUz5JSu@@sal4EQyC zPv2@O0-wf$-4mbz*s)LYR7zRcu*SC;o8GsH@qC>3TA+t3bA|X*nwOj1xR|nl+%I@Zub9tf<0cK$vE^W&UN(N+#8Qh5%=hB zrY>3NlYIh0Wuu!#=$h9ju5_H!T^ruxM~ZGZ)1nXD|6$#*P{FcG zvFk6zuJ2lK!@+%ET6HL=YYqKKevT6@#IA3dDcZ2V3_AMor|;LrsADtqGq^hw{HASp zA@djI@V~M3a~p5xJZN*+KJq{7)9cSQp6%hcKRS*7o0QiO*ut0_V>01gW!OZu$dhEZ z1%Bj!QMq8(4(_#ubGe`0b??^2k5nDHf7x0myu6l}mHd!f#bfFm;@J@NGkGM)cZE-0 z#Xp0U@Ik(<+kfT3--5;o)S-jEXcF(wrf;|$J9jp*msi1M<;6^-9;flWV)W?JW8q^c zYgfCIwW|}m|B^#XmrV@iFCS08bPDC23bwj=S9$0a_B8eC;Cd(J?n5pn(Z|7uH?;rI zY^R{>RrF*WbuNR?1}8k;x_Vg9*oF-0`R{(z^IVMY6k%V#C|`y0Zd|xv`h)QF#)T87 z+k21lJ>6Txy~{rBnYu%K1CL+gJNkXm{AR)XyvE;}|HF;{$#0QoQ_AL<>+y3{fPdEi zTFO{TI{#}neOed%_4``wV9FENE(M`%W4p+YkgwH=UUfM6%Zu<09;LrkeOlm!>ucp1 zU+ZXS)K1^o25;Kof8L=7mUYmd6_kjM&hmm1r~4G{b)xqZLV5UH>UZo|xBMge<6P$% z`B3tyTEW9OvL#=tjs9G+C;vPP-fCRZm6vd%!8ghohg`D+ibFo@Tz*rq0iUSmzQ8s5 z&AYf}`R?~6q}TqO#y|cjy?$HY=T79r_KyuGrS?a*ADYkJX!Y#LHW50_CT96IGN67+ z{gwJDJ?ALS0Uuo7qAbO?ppO_MY%bv!U8Y}{7Oi5g_Tu3+dlWA!If*&kW2QzGUlMMQ zW6Y(Z>Aa}yqD0Ko(=Ge{RlFZ#Ttx3L))>gfFAV7Y8ulN%*M}`d5ymgD-JD74AI^$i zpgp5KywU#4?!I^qwqe-#+v+DZ#@u0I0pUgmoN)V=g6J1iCt;b_x7avY3-5^MpWi@k zH~*WpBdE9RWbK*Vf)20;pXp!jL!Q?U-};9o&~gdC;<1j_QV&(KH7ogm{lf=9PaCtewnI(8Zg_Q6&hqv9@80{$f>RD==fJCc_EUpq%dmgP zA1Ysd-=XqVr)J-?cfz5HRqff4hufUo##h*5?PA8R+KE%`;C=&Rt~;E9W$Srv$)U(3_b8DRFE2FZPFQI(C-M!C=Jp9sv`3ILD zD&IT2_|P83d6#6rvT8Oy!UIPye`E{qjYCFv`s#ckbv}idSR-Yxr;h6>d%ZKPvC-5q zf7yDG8sZF$o(rwg@@A9p9=JpJIj6J%avfi!-8YF+Ob5_4pWd z_!q0(d!5Uj?v4lCXWOd5rMujBJ~E`$l`Q8@%FKi&wF0 zuwi^y)y_Tajm;(bTfb3)Ug%f&5@QcgeN%m-Z1FhQ)IvL2AAml~Bi%D8tEW1*A;!7v zO^sz3d&rCF4dv4lph1T6(9SQZ#40~^*{2l)#A{bK6-ic%t&`7 zwqhK+Onqky->aeDjKiO5^iX?~)^4qRMBh@(tp*zEn=$lC?;3ylJUd<%HZjSE$iumh z!{vQJG(>DlF~*5&PWt^+JC4>l8JbPO*T=5dKP}RIlGi^UsPy!)So%0RsgLMV3%b>g zuI)qj68d`)tPw_q{fBv=x2UcRE*5U-Y#3 zcBebWx4TxOqsW%*EWb@2gKy*bejHs5=Z9CftZ?(fCXRBhuED;phex%yL1KF^$eLK)e$-{i~rl%*jLG_i*+K$Y3*26=}j;)j2yXCjhj*iul z?h9y>-fO;#`;{)f3A4h`t?4$`_q14L^qp(x9|dOdtj6d%sJHxxi?QP?iDSu+$^T^O zvV7_!dt$!hJljb7haohw_aruUOM%T&o6`ghODQ8H>o` zeT_-%qg|JcKnKg615Yr{u^(NlCZ@QSI`6+mG%dm|Dr!V0iANMQ9?S1t+H?5qif;YR zpH|WBj!nxS_wsBiUHu&Bb6c|6Cy+KQF+QXGgzUz<(A$B&-%Ot&Om+Rnd=nRtzhdM8 zzO=*pks+{2*eE(*h8)rsjnlezx?A73;pda=6T5=rSD}$R*CQu8oTD1IIE7u4*`IgU ziIKgF@b|>uYrivlujbz=rYRYiMZQo9rhr4s?v<^O-#DLpy03Q44L-LO`=94h-UW~D z;+o1CEFS%K_2BU6kDn&}g-fu}{QJMU}G%7JKE2`a&P;n%ANVxgpI@R-diYN zeBliTZ^%JEM>)}OC=Z)$*v|EbF5LSTc?74CBk}-y{F-lUnAyE>)Jv<1h>1^Ro{7fy zg4RiFYbPe`^v{MahlN% z@g}Fc6dK;gv#sGA@B80*_{$5fJt%*niucHy=>DPn+tKJfedfL7bIb2Av<-XX=E&l! z%5x##F-9Eer-}c=jg0|%G>-%qDci=1F7?r-c_cbQIqJhQ?N{vP?hCDQ_9pvH_Q4;}C7sK5ke}|Z)0f?-nErCga&^1!e1Z`f+Wd;o zo|gY?<0}Q&jsEzG#&6me(KlUBA4|Wdv2KmyG}C`*EXVeX^;z_T^h2f}ydK)pf3yf+ z!6fxVPjmiO^HY=4&MOTkh3 z!0o(4tZZ|B!PajO^NQ+My44}OlKL3>Q~x;iQH)hF6xrP!@J3@EKmM~DOHmzO#ODGR zlt1xIurBfgGuI{Wi0aZ#T{^&q?@||6Htg8;-J3opuf&fPe%Wg$l`ci$Sb6_$3-+Az4HnP1H*-pg!^X}PHtiA*JZVE>>6`$|S(0p_0 zn)uq&6K;sbo#_M_hi-JB7j5W7D>~7F&cx}no3XiK=tNIXPD89pwp1QI zTE2-jwo_*#SGs-$a)pjaUt(&DWDET{exnC3!%g8liXZA`H2nO>kJp{nuMNB3Vr9{eSG&)p1ongq=OnWeG~p@+(P4i z%I~o9^udRoJZ<-AXs~x!<5!U>;qc`Hlr81tS>Hl(*2bP9O?kAr5NsO>4MszQ5@j`r2Ol&6hzB{Jrj_bzhKV(a{LH8o?dI9~F z`a_dDg?tHf+Ic4ie_ZU%HFObnG(kJPYx+cFtr^-Io%3kqVoh%2u>+uuXtAyzT5M0F zZwukMKflAyFR3S9T!Owe6+r{qp}3~znAq{`@v-;o<~YtY*|pl++sws@IMF!mn9Fb0 zxSBn;zxjU3*rB!4RM$Ivb^W7HKa?Bl*MH^rYJRi$;E)4l$Ck~Uap>CDobd+&{o9`o zBy)jdh45%3JRZ$KeXjP^$I6lBfBEN*_cgycq2Kf!>F8xvq4q4QkYtk~^KJTLn)5gVqD-x{9%Uw#@F`P%e5AMYLh^sIjE zpRNBT@Z4|D&Y7r~u!$S6#^{;RA62`3fM}M-_k;5j`+NT(-}`_0LGt}KSqEfJ?L9MU zkSX(j_@8FXAtzOMZrjQA-E+>KGQ-?|`kuu7Fmy22^8QKpcF&nMWk#m z?xLO#fMu)br|OBX@GZqV*Ai2C`>wk-DX#JaIYLdh6DwKgKGV6H{;bY@Xa5G;S_>Vj zX)E9AsV->fsm^cMLZ7}CooFQoqn@!h`L}M|n0!9^^vUWQZjbN|^r()QxJdgd?4>&F zvDL&E>WLApBSy3VeL+rIsJ);9vDrKaJ;>u+9>0dR zLZ|zP8OnxetBrIkFGsPJII)s;=r|JkxH_%;0Oh=7H=1~A0rt~u%Hvz{YoI6JX}yX* zlxNx%Yp0Il(Z!69zDoQ_ap0wl4R$K;mNDmv#7*Wo#Dd|E;x77C{8v1+@!zj_@!u_6 z4|Bbf*ouw+-b>!-KJ4gDVg=~V82xru(S}*b(DhFDi(tQKDjF+x-wN+qp=&2}ibK;5 z=(!KtG>_#SWJ5XpZP2-`lwau9HUYX%hCWl^@7YfGnebn2?Ii;|D;a3!dok!AA z7)uE_l7hR$Nh0?sHlqCa{Klh|(+A(gzt8c%%g5ZtLUY}n196bto0M-vrbegmjg)J| zP)_4oFD#+$EwtNj)BEi%e@yrOx>U^R&;GJ8-4u8Ucfh14Lq{<-e^l23;;%=AM(oo6;c+fTy>kWe-wjEe60QliQZT9~zdL#3TqW#3kmdCDgu$0{`r296E$;h6C2 znSAsBJu>|Seuo(!;J_23|>iJz76-<*%F zf~}`I`Vac41Ftc5#(3A}mpRrm4)iE<|I6T~@?*%y-24hhJJ%JfEhE0Y6#I{S@XfDs zDDIU&Kyid3=93gLucWAPKgZkQdo~@9JRW_= zZO`w$`)~K&cJe)YZ(DfV^S5Rlz4NNOuQcbYI6o_E^v`}GpW>kIDq`{ysEtV>V2XK&#*oRy0f ze?EG{!W*8yBvi1okur6CIM*Lsd|GrF*U5j|xsS4S{V1;gYVnt%JH6{Wsl&)`I2-@8 zcvy5F*ESLZ)bnM|s4mU<8Ft4l&u^rxQMBupg||FEENj@#cPT^XD>=V3G-~H=zOD1! z-uab$^IiV`S%DMP{W9n1t^&r%M%{7i^9T6WSv-5|!dss|Gi%h&H~5y$qnwX|W`E7M zbpD2S{xiOHfd8K!;Y4-6%o*MF#0NcB-vG_WedllYzWjCOa5?8hA6+nSdc}zg_FnXN zSMGg$!FAJjoOsLL7oDue>n^z1JHNx6-+xl%Vcnm}yBiibzKk1ge z=wst|dB;7!V=pq%IFWaBeiQFJx!|VhzdC8b-W9y_)PkF*|A}`PQ)-;TJMQ@%d*2Bi z)p!N(==?$6`N@JCr$5L$lX$0L!NTd2cxO^*c;ltK)41S<>6e~#$6k2XcmwaO=Uny9 zrQCMDLyik$bR)W!;_KzZ_XhY=fh?Ah|Hk|Tt}T4N0Xj=QbxrXwa}9b4TXaq15xPdM z%+7lBr-1VaGQEwXnd31I=@R|RX8q31c7NyPyT2MMb!|P*UuO=x?1TrEqlUaL^M1eU z{oZeWM>H-mzoQ%PHNQtU)|lT>jrVx>@76EtUJ0xIKla`}zN+F{_}}}SyeA~#hIfG^ zB)o)x$VG)nTTT)L1PrujvE|-NFi_CgfW;P+K!QO~4i+O?TKByLM8xE1wPK4s-lu?3 z5KvHKi`D1WlNSgOAc-M_9hE%aHG7}rBm_n6{oUUmH=oaB?LBAjnYGr;thHv=n%VcO zyaILo3w3SfFICr;JX<2ys_xLzpK>j@`qvKp>mps*fHLn7fAZ?&(kB5no_~Gek*|

y^j;S->EX*{Qrg#+ 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

$K&Lv#XrjbeEt_S#-|_) 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

~(*-vA=nd+{ZF#P4Z*3Xbm61 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 z

(%k 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%0An-jyv^8jPNXZ7zd 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

;ZcpM!XV#0y0wPg(T3YqHEg@$!0Ec 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

O^NBid|8xe_d*8$}p>@$zt+%gw z$K>1BL4Q-}7rZAwi}(z7IXeEWUm*t!dn>?;H&kpnExMFF)m&s7Xxg@f z#_fOIX`C-?nex$$D^_iYIi=b?Q%XJsVt!L}I78StQOanNT|n0O^;N>m@? z9PEj=!`byQoUrpC@!>;`^P#BfO%NL*?m}z`e?|Nu$pGi@3)m91#D?nJ*wBWCB?Y~T z6G<17eT?0B@uRG(f_353+c2-G*2F6GeNIzB?>zcn?+lA}Kj8Fk<(%i%*zjmi8#e0$ z%E@&OPxJbn-%`-K)$4aY{cfY*RrGtd*YEt5wY}qjf%?6EWkK)t^t;s=5$$R9^?M)v zwg&ob?ceWL{QchN>-Rp}FLP}1^}CXOTLS$)(7)eCf4^g#L*A{H9?H%vo z+WgH0z4O7f6#k9WHSh!UqtrEl{yO{j7x(wK&DY~$~ zzw*BaF57u5xR38cT>PI8&WjG3!1pDbDW6|go9;tvdBNWYbZq;W4~?7l)3V$Dz~BCH zU;D?s_SE6Eb5#Ew{`SxL+5>;nKQ(&&?f=8ye!H*zcCY<49xRgCuz1k_-W!?s7VP4? zg~b~lEOvQ)QM=kdc9Xx4eVIPy@AKaKz4zX%%zN60fA+ukZsxrOeZH~Z_4?@ZKEom7 zhcYmj?X78KC_NwbJKNtc_kGyCSwLOG^qPi*-2ELMa%)ZBSr~mda34y=H;%PE1Rl-# zQ-SGUcJYhsO&$G9#^~9+-=}%;s`}p-s4naw=ep7O*p_&{Aop&SVYaWn?7lAa_w}x? zuXhW~KF{N>DZyIuZ7XAsrTtlq{RTez>&IMXYW3**yfKBn&DcQBPssVk|Kj?g+_4Y- ztGAAlaC#l{ipaHE=k$*7jo%QiGrrfQ;C)5&glK{s(As7vx~4)ht2`R#PD1z~D(|1AiC;gsH^qz&IFY+w5E@I$Z9}f4v%R5WRftWiy z(r&(YI?=|_-uG}QdVN`>ojsw=1ll<6_s$8l@xF)8qm83?S1oCoYWrEWq;smTAII0v zdA@$m^YwGS?T4{Kwx114IzzsG3Vi*X@9XD$Uq2W4`YG`BQ{d|-?Ca+OUq2W4`kCnK zC+zDd?CYn{*Uv;>KNEfZTxj~?&bb}Vp}&g8i5Fh>$AfK(AuYu}j7_@f#|Q3xecAcn zeM|ZFaqJY%x88Qy#QR>?-*fm|y1Z;q`RBpg4fWfHZffAHWCQw1at8Tqr{VKQKap;o zoFSdiIs6Fs@Ge9DS?&bVivNZQJ(H zOZoas74*Ky+SfZDj4Fq=ZzBCoaQj>4&98A^0dd*g4IH>SquvgMwvnODZ&!_C|_G>&n3bbVQr=MAs>mk&0%hp%9n+GPkA99cFHNUojjzw>cNNb5s6l4RiZB zbMx?Q!<-2_pG@o>wtm^0~nC=bY%7_I<_j`vTAVoahJb_{t%AH}L#jCpye~ zUZ?*56nOq8Ct7UZm#z5w!1Lcb(POONtdE?LB=?16t?!@{{iEuJur^}a)m_N9F76e{ zYO~LY9`LupKJDWEk*qc;C)(v}lO)$8$vq`mZIVv(4cf@ZWyT^l(zPqlW|tFv-QR|` zU2g>1yx~M&_O+=JTz3ZA>|}pUnvlP zEzo8gX9(1W{nNUnQ`p#k3>=dG@f2`h-=*6uLFb*b)6GHD_xhb)4q}~`KMbCKmb3X+ z6326V|17?@6AL&tJcI8scvAv?_mc;xdk3uw*CQW6&NL5+{^={+F;_-iRX0Xv_|!bz z-yvSZypq&b*LTGekuCTNoQ`tcy`8?l!<|#me(xGBdgA^s<{7l%6(9VCmp`fV8#?11 zoNpW+9U~TAzZN{Xw(bD%{xn>Z~SO;O&+=H z1NV=Y&Z`H0vymg~kfjaC(t3D)4gbHK^zP~L=4W9fxE$aNu!YNidHZPh?}XsN-u-XD zWATZ=L;g6=&wDcPC{5&tNBaQqxXa*krk+6z+=?T25>uQ_;fOnzdVFQzikVk@O7kY; zZxjB=|K^`7I;{Ln3EC*fp$2;WWzoT$^>Pwp+%p$<_~w=v)4b`o!Tkci{O6DC{61BX zzYfpmeSN+e=&zkzgk1FCw=25AU7dfiXPwE3Hs?;>?&PAUs?i|{k(!0+o8q~TM`kZmw z!Xwj983cU}G4#0}`Wzzqgion&mp+R-wsW^BMamlM#KMRYa}SLGUg7!JEm6 ziLnQpOUcUwS9;Ku6qBtllkG&#MO7&J*I#t&-$!&u)Rw<;?;i5z^@5MSJJYq3Jh+kj zWN_STYiYjz6#8lWcr-+Abpp91nWb~RGtW5G_Kyko3 z|Ni@y#Sc{{DcAn5;Vg*Yy|rS+>(~GK(YH8rIAIR!#;&5~Vu*7X#rtFzRKmN+p9h9s zy^%V1EnDHETb+vh`{cDdk$p1!S-jNn(c+Fd{(bWC(eyr{8)~0wn6K4yvv`Mvvp0w1 z!TG&0huV(Dv*CPR4mdyHgY$QMxGp@m{PtyXV2=$yBYoCIy0*a|YQ@>_-vlq3!_G6w zagpAnWE;AE5+0O9mQ}H~M)cn0=)I4k_bx;4)p@Yh=)OO8mK)tyI=OUT(W^_NI`383 zQMJ!`FkGJDVFo5)cfb7KvtZ^u_sf%i@~!ig06#e=&-%7NJ9d5K1hqw2M}dzPEI$=5 z_0OdX7)ZWz?yR>97)YM8*2C-33)X{&Ymj|Q`EU8vr}uk&-_9Etq-D4Ltpu23hln=L z_O0br-=5k1I+699pKCpr1!RFY_Q|fNm_75u<9K`X)`$$P=UUJE!SAbM`T70pzVZG1 zJ`GRu<&F){oEMCvA10uI7WT7&d)B9t?;`(#&a{d5>Qj5Wh2NIZX4#qvv?(;aXRgP0 zsO{mx2>VEKwR-h4A1C`_C8P5-|*k( zX<}>0jWL`_441mZ&WpJg_J?B=yvoP(1|I+)jaK~$-_`31}Um-uVk-H3+7uHtK>npjm3w|4dK2`fr zcLrF!Ms;J8@Z5%a=`=bI6z&ks7L3ib>FXQRz9Dv?Z4NTY-1T?0L(T{PIp5>dpBb&7 z9z~*|AT7t9Uxlr}8e-_m*a{nDE9}1o8Hz0sa%}~3ZWO$@L~&->3cselxxNQ%1>W`U z`t#P8Yt7QnX9MTGAEu7ot#glTW6kr)KX?h9uJjbnHet8)Ak$x37THu*bdxDs@S=78~x5d+V}J} z^g~kv7Mv-4Z`Yj*LezIB=NU&!8fOyd_u5}mn}hZ146^#tyD9K#+&d+gZY!;=E+M~t z+r`TFpf&}%P#-)|W2eXy5l(6BakMG<4sE#WIYm98X-CQ?y}-Wx_b;3Wg`evCx6G|J zjQv4h<=~_8ueF~Jck)_%3(iUNc>-Q3xIOlVl1s}O?T~}x9xvxL1oqC)# zyhm*OL}<;wC%Nd(uR~nPId-d)X71m1^L3|_r+sYrsc9YQVQ8-cUjH_G@sQ(;c<efow0{yNz;@$7o>8+i4r1c>C zn@l&s zTpXe13jAm;GNG2=btd6?WIDD(b&Ng??$o)usQ4*ITlrmkYLe=;&*@yqM5C3RCe4tGbA2v*Vvu$kvAGBA{dA0CJxEiM~=@@3-VOOV# zLA&a|$ip|;>$Y!$|Il>jhwO8rhB!U5?r! z8(EL|5ROy$QRK-O>k*9JLH0(#8;5sdZ+LiP*LQ;LR0pLTJ;vCsnul~WI}gvs)11^! zbz4rsE;IA>xAXKmwNcv`_#Q_OE%4bc&Cp8>JdcmV|Dk>1dqq8C@prk_+?ZK2`|^y| ztNr^jHc<>+<0drhO4W|a?B!6rX z{+SiXMROJwo>_@ZnN6-dyy4n7HnVW??$^=vu$jxpdNo45xl(H)%dX6KzhgP`kiSg+ zZ23W5e?mb=A+^Ti$R+s`W6W#6K7D)fDc@fF$b-k>7PsEVbnct>-$xstMZYt_yDKxe zoVn}@L)`b7Yt5nY z&TAFQG3KnsUEl(Ev~w!?x(^F4#9!zy6mhCeo;+}@K;ICIg=eNMxyiw{%y*RDb7hFf zi+%h3bKR!`E$M95av%Or59kll9r|WN>%;kMDrgVGGwaaB^eLSvS?pXA;=ArdsH9Hf zbIOfG4+w(~?wP#ElS`2Qml^pVHu7I*jP0{oM(%UIm9<{xll$w%$JncK`V3vcT#@H? z9M*;oaE8$VDtNBARUG**n^f?MGhc@}h0wJMph*Y*8fX5Ak>CV$ru9e{h=e_!4iAZs zWba3N@It0+3D5qeU9;6qMe7Eh-t($q@V7kginhdGzT&|-pMUXq`h(ypy=v`A>JRq- zGk5PZ`okpVax(hE;TBiFZ?6*lXX@AXEdqv{L)DU>s`I3J&6;N;^CSo1QnwCH+0&N1G_#H-hO~H>z_Y*@7*nY*PV^a zLZ`HL4tAct2l-^qo2nix{Fyprue}*QW&6+GYkJ^kp~(GTcZRht=C>qwMDcsa0rbCf z8Iu@RZ~SWJ1W#%rezA{t?=6f}tBq>Ms;_&fCHTFM+_v-krOs;y!^5^8q|bw)ru*+< z?0cQzt&90x`b-yVOR`?A)y=zB?f#;UcVu4z&FSJmaZ#dx-T6D+p~rM1L0^ zU3K?;q0sijtmpiK5v}p7fzuS^hkX0+v^VMRApIVo{}u1m?OZu1a{qqzY}IMpFEyAt z>K}|KCvMe(mip>XL2vrLaP(#7^9J(d^!K8&%b*qaemT_`(p}|o?#fC452s-2FXwSD zk>=OL{Mz5{yH@82bw;6)y}g4wt=^FBL7qqfc_LSl<53=VdhdWoRzianL->wuRtf!+ zhu6E5JHhICZwz>=_mp3O1CE?++i-u2+KAtTj;_9Q zApCG;@X(GF@AfqfX}9`IH*&ORHuF-v=*EvlA6C4mGvmKVwX!$U*sqz6{A}1jL!uwJ znV8o!bURNDDR-v`zf@wTE2E~6vp)A%mwT}n?!lqfXfJVgJ(ut8kCOY~c%1Xkor0C} zBKMDo)&z1aU&=A|?}`7O%-F9o_HP4Y6ZgW-925;P&x+=%=vLa4p$qL8>eYyA@$6rZ zf1b;^YRReJ`R;;|nrQXI|1JLcad=OVf2KIEc{2Rd#OsXzJiA_b0vV+EP*<7L8$z$J zIQB63`zY|zK8aUV0D~&No1hnHQnetJHQj4I-Z92pn$zAJz$;ZA8C<)g#K^R z{dV-DXZ6f?4)iyd?|yh1{~5nKtj+(sm76-Bt+@%_nn%8M*!fFd`{$dleVjh0V(Z25 zz53sYoC03H?L_B52l_n*UHhLeflt*xXX;9?nzOm4*Z)l83Lg)9_pwf=4telC*4XF} z`eTUPgivo4GDrCZ^~jk7dC8Zkw zGWIF`;Zv4uK=-beE&8|k-HmP)?9=g=v{pX2an`q-g9;+?EBJgVan zYH7cXEcyd~`{DCB4?anrHAKK?p0`98b0m9a#;cBMtnrK`T|ji`Kx@)98wFEf(yX;0 z&*C$I>nvym9^KUd-OLA0i#P+Zm|7+`Q(NyA>XRj-+e!Rrot+P+#Q}*fpn8Tjc}PRvFo@F?4Rb5&9JTL|c|p5!Jk1@N z6IoxYBUtlp2%lVGRC!bT!Ar?p+kXRdNqTen2j-&h%J0-2Bs!~$uGiZLf9RUQ`oNcm zefXmNdlnzKd|2QzI5ax?32=*dRyAxnFRFJHw=IM>cB7+ghTglO_ns#r)w)kgbMVfk zT@s%JJ~8JW#+M)ZQs$!HqzCAC=@5E$_7L%5_MUZ?KraRG++uibVj6x3<}5wf_Pe6H z@8WU~zE?nl+RJh9vF0;H+teCluJC>C(5-Z988BDH&Gf$Xm^*-tY*C%f(_WoIU;0~e zLBDCQ&V)6PeSZV&!3oRThPX7;WglBconC2a!ogHJB9i#ap zSz|2q#!!FSlh=IXl+%ZPmrieFBmG5ygMlr2#VfYY$mpy-AGUo8uDm~(emDF2HSneH za`suzrCW|g=4xFAml%T@x9EJp9z5DYT|>K$@1@5)Eo;o+I#&C}ORobQPp<=hW(offAi@?Rv)^{_{%c+aGyrr)r37?0do3djQ3moXSMt$ z+{lu>;7dB@;Q5`c9F@NCn8v3+`3$;p=m&@ETz}CX<3q^QhZU|$F4XdFVgk4Tu3e@+ z%CNtN!wccP?-;$`wY{FlzfcMM@8B~&4tRr??@Vyl5d+_Z;|XX+aqwpRq_HyQ1g$1` zR&d9`wt4dowwYWpF4mzca|P(`z+5t!~a?Qe*svmb*`KghaT3bb__fV|H7z8 zmK5se_`(-9r_Ts_0Q__m-h2+x;;59D7ph+Y{+<|KaV6 z#fRxe|IFn3D%V%CPBEYEvQV|~<1*$W8>N}~JTDx9w!X!u;#7tYv6e36d3RY&I4W(^j{ zD>Q$2%{%O?;EY~WorW_$qAg+Rc3y6<{oBrsI;fh@0nRsDJWn)4s^iST!t-Tn3>_Pu z$#<*+el_6oWx!tfPG;YMWj*-N*?6#xSmpi6k?7^@UDKzW!@KcwHD2kwwwipmm$BdV z+ZKMi37l)X&N+OJext4+{OZ~&=%fkRl|*)lUo|bD_9e9?3qn^;n(IuyRL_O0(jRTR zWT|uM`jZ$JTl9p+or7O|pmAHsn~{zv-BNzGQfNT5<4~JhG|&hQaEE5A^5YEMRIxWB z$uD58xoA*v)XuL!W6;0+w)WHN74l^#szT8f*rbwOvNv2_=HXiwFU$X1kj^Thvn|Hf zo)De1cz@d*&P_-LPLM@RYIJLe?cEB4W~aPN~I?ltD* zuU@>JJ8}H=u~Mz*qxT`FlHux}CTcySm&R`fW{de9{cz7T^cHxqVkcLDt22NV2mX6M z0nYA+AN(!rk^jcMH^Qx9zoGeH+er3C_YlO;Go=d~T!t4P50@V}L7b|fj`%=0wGNzm ztHGn8Jmc>1(GWR72A8LMH1vFch8oDVQS4cCw3M8Mxz3fwM=c$z7J8}xk7OHmL2oUz zReSl_j-} zw2?e72i`?I_mB4!{j08o^#NXVQ--Fx8zQ~`iEeonJWlkr$k5l2*4SeDyP5gk0zXQ& zfDhagR7X9!+2kcnL*|F3{&Fp~>!myQ(8pHvfh!#6nYjGsOQ>(hdd>Y3GkE`MWb;Mt z`kkAhMc$7usi}5j_x5~+>#uQnz56{#Q-4csd`nYv$?3~UQ^><0O-=Q^ckM~M_fg&x zj%LY9cv9Cor&_*`9?lk};8nZfEqmZCqPs5^`*=QdVPw#{X4+#LBqOv3hU0)CddNq7 z@}S+^r`!fw~DaSE8R!7im?xnv$Dm-x8mTf;40lUjDG2# zmuown8h!8c-k1@$Hl5Y=&6un=!FWmf*O+gTgP=NPW=wuJWAe=Eu(CeYOU~%+icbrufoNe`wvs5tj)+3tVm}3mVOly!F z>qPfzD4!Hff-CO+oEm-7_T5~R)wkB5{Jaz}QSC>;Y90OSH`Vdb@2cUUXFBU%%s3^C z(*vxEfmNws1wO_`LSv(WIe3>Wg9fXhLGaGd7jZ_TztE3#DdBCRD1*1Nd@{rMqgq^j zd?7x4fBZIqOc0KW-_?;{Xms%zo-WQDu3!#5$c1SoS`Rjn$?+UbZcw=69rEwOyjO^h z6&ggW2YeQM6fc>>?_IOe+v(H3^QN!;oMLCvJHR0l#_xyzsQ7_ocLjRBd@vR8qH=yO zD32hEJpU1REW0#8zqRzMaT+xa`L)QVO+Wk1fj03!Yn$r1_BI0SWp~>4@+s7VbBU?V z*szS_t?2^J2_)Gg`3#Jn;`vFs;797`0{YQ+`DK*Dau)r_uVDBK@X-A{vImr7+j{tz z=QH-{^Z0|bXL0thqLFpM?}KaX<9_2Ezc|oV!<;IbheZt!nFgPbZ~oV|W+!F24~MU?Z?aEi#}|-8Fjx9QgAHt}yp{>Uffai;h$qsffz2WWH~qP7HWyzQ;ZmO~4~`CPnc+_4&)UIV(pl%U0go z8oMOg1HJXEzMMG471V&AM$Dps?_s_(2WZ6D`QTy_9Frfm8@%{+f4`>&J}!}m&HY4kq!-u5#o-OuFX_ER402RgI;oR#k9 z!sGTcEZ7gUZu=Q&`-x2K*N@eIdc1WVC2p?o(mji%&qDJq%s&>@S(y`oZBYIQr>+2} zV&JlTz*f#I^yG=TZxP$ue_qV`#}Wp&!yVtco%7VQ54LUjfb(F}Yo5Lo@WW}Gp}ukU zSb62?D|Zc`uk@@ARqwtAodvv;ZesP7J>Z%AAKl=od?0(L0Rv*3u5J?U_%ieQ74te# z9|!llosi$G2LE(zIKRKHp@4d@(2KS4%u@_x z%wlYE-`|UXsq~L@d+8yoJ^LS7x(9v4>M4bmr+d1_8e@}Ah<@dUEc<*%+ULc1KKmR$ zd2w{6YKNSpo&Al1{`k|C$Ifoa!C%`={z1l{E&W7!T;f0SY0JL8f_MU)z z<0$_8+3as6Fp^C$4;{nr+m>!&ec1CjC*ty$Yo^?0&9=lz9&d}hgZ`8P!; zvcr@g@8%0(SAd^CW8NQS-fy4EyeE)Hfozsc9%1Jg4$RS$jUV^V3)vX+!BPU!%Evus zJ{fr>AFkrTio@D@{KF3!8~)qC*oEZVc9U=Wh*P+I+0epP)rVSk`xQHvIZkUm{$0Ne zO7jnIPLl$2+U1**ozHZm|783rs>hquzG{!5**J8qJzv2b=bJg|j$rL^QO5-4DZhte z|BdW#9KA9D9mUx1BzD@6<;RSzH;7MDrjCH8z+F64{Pf>f0Jq{J8#ZtPhPKP(In5_7r%K<-7EFA2!&Ax!{UE8-y?HRXPsp zZ^OJzo0+-Wr19PE*}DAx#xLjE!#sTOUiQ?|$3i1tGx1%)Ts{=(R+|syuPJh!Z@dG( z{`MGtnxTLBy~G2QOH>AL*MDM5UsC==lT-Gk9zLyniOFZIJR$77-S|F=;0-4qHyrGD*(LKi+2=vJj?v0BgMfv>;IOo=2#23&)kpl zDL!r2ZtlVaXHo`VfWy0y>O^0p`pM+6HtDE_NAO-2j{vTgN32-@kKnoC5mhI^Be0RS z;72m>^S<}Px6$xM^w*xG3(Gg0JbYqIgf@}t#{>NLaA$$3m%NAb9&dLRzV`3$Ol@CX z;6#;g7F*5Q9|zV?z!#o_KWuh-*TXwD!#irw$96B~cX&rnSwXehsO^35*}B2-jjP!k z_9@Oj#TJpT4Q?-+eg$NAUmD_Pz&rZxQb; zf!DBKdz;AFg2(J@VLtG@_$@qNS6iKYthT!A@!IO{S-@vDyk!ad+kjnNRad>g>ayws zt>io37wJ9tK&1DO;ok)vhkdqM5?bg2m%5P`J;;kxcm(p})QzLv38tw(;3Y#!x4ADBn^+T`U?ZkwDq)9F+TXM!=28Ts(1vzhkUF_AC&aLKP< zOb_TghQ=m<9~Xg3=sq0}9cv4hvvm=xZwb56`grV-I+mLdUTBk93RX;5^|CX|S2CqU;D zBfU5<(!L=-e!d*ASFQXj46OaCMY7}46m^l%QfQT*|)AUzmbfF^c}7DWHhyYz>i zH^8|7J?w*4{50{k;JW=Z@kaBe9_S*4e!6=qGyz@g1upg+;&$NBk1n7e(bW4v7rTxP zz(exT#giVM8hfG6JMU?7oP7Cv$nW?y@JRTBe1(3WTj7nY58mAj?}oQ;68&qv*Zsb~ z-|z+b3b$}x3*OK79kouG^&9S}jZk}K1jlBW~&8`^%(N%u4Oxcz(}*bg$H`Ap>@j*O1B{cH&xw;w0aPkdbSrqJom zrWiV>ombfQ7jgRa7xW+QCm$k*{}9;!W&XoUbKofT#nSeT@_7dGAKrb-!L|dRKG?S5 z6z9RkKgrFLB_oc$m!XBA|8UPh{zKxLC+a_(F{XLbKH`pkKjK{G_agHI@Fk{*X_|X2(J}YJ->fh3U#&07vz75B zl7}%NI)7f4FL6~aU!r5q2^2>!qi%HBN%|67e0ywt(fNFd&3WW;P#-)|f8y?cIoLLX zeI5p^j^|H2)xu{W`G*cJy!~XZHA(JuMylTrf8u{K?~gEVYI|k*6SoBF3#9FY26tZL z{qt(buTKm*0e@l*J{s#!bPB_{eFEON=LW{@@yRPwAK2tKXZ!)O{kyU4jZ8;pT!9}j ziA^@N`B+;QdgyZeCGy=-GlJjc+mkIO-%(LVH}<>iw|{t6_4J{d3bOCs zX~G|Xy{=f)acyyLPkWDMcu^Wpy*>5kH{1B!UB<_eEq_ys&{r07z6+as_9@uh=s3!| zAgS<~ZuEWWFOtua(~8#{T^}7M1w7=#dzf`s(!LzuTn)ata^!UwTsU*S@y)HW{NLs} ze3877@-TWg`nvpmY2O_7X*w=X-h=WGO^g9O$LKuhGaZbzo>;YVGqPbkxa008t#94c z|FLUVd3g}4`sG2?<*^ag<@c-oM=n_B@vEuEnQQ_5v;MU~?~^}l>;e2h;D}Rre4p1% z!8x}?s(8HR`#qyVdx58ubR{a-_Z^qXkKi+11Ve;!q zE?7Sn_7?O|+_A^dhWr_&_%jA|^neHN{*Q1Ux`3|a6Psjd0eU(vEsSA~Ntc&g5?t>{ z=t=Y--98zqev!4i{%hACrTn#l{877~1K&3j--I@HQ48aFK@R-$ z=R-^n*fTXH)Zr&X`X&;J)1{VEe5Ra`WMO|EkuGwAzr`rZq_ z-UHv>jUPG%FYh7t*+pz@rS-#f=J87oAXmTRn^Rhc$s`{Emv z(_b&#^2@sd`J&P{l`|^6TkE`@b@ohgdgrrF#S~QQNp%KxPa?Ori230&lOEE8uBdYr zO-{+at2kelL|1+B)`lb9@W_?mMiTrz^Q*+=z;Odda7XV-hd1y+CsEApd|;%wzu=@Z z+tOzg^B>N;de6QSl>bKGr;pp7LEl#lpZEQ-{pNT2uJz*j*t3(PPtD06*Joc3^^5C! z`l}0XSC@6`US;Q~=9GDzF5d0!&G3RW-Fdi9jm#|ll~|M;zdJ=flu_w;Kx{rdq6HqY z(&@GF{)ajL)V+k?;2nzdD?h5IiCDx;&boc=SX;{=;&$v|Ixd246kn1%#(&tH_2aJW zyRa+41=%2KTh2bIhLZGB)ju<_9dN+J@SD86q*=&j_G;M^&V#koFz%ii>0L{{;G^J< z>QM-v)__m5sh?U4FVz_(>8HxcZ3O1aoN%<7{7}88dmwZ^>BrPkdWiGtx=WQaVV6j^ zRqd%d@=x@AT$u9~w>BObU*eea-ru2r>K^r$+&cEiqvUF=C0}k0xf?O?GfUT@)|6tf zS@{9pZ&RrAC;dmC{q!Gy8{lEuFyCDL^uvV#cydE7+{nX|Z}s7dU!J)6su}*M7`I?v z08A2NIK#s}NDtFom9rr|T|CB|qZy-T;w|BQH?TJ`cv>C&YpkJ9)wdvxsm5zVf-`I=z5C_^lv*UcpA5Clp!n2I?fg!u7W1YoZfY;BMB_VVk;}RLjLUpysDP9CuozHK>iVU z|MgOQWz>xo&yjD<

ac85&gD(1#-Pi+cQ}h#KOx@iv<6ZIYQkQqPecz5Wwh9k-wSZnsdt#zJ&hIPJp zBCt1nzfNtzMf$h7L#vh`H)enrUO!3ps|%Q${b9TW<4<9aq>q?fBfT%V0iRmRyL!*= zsmb-=eVwE9zdz{>>|x1`NuJz5_9)+@`AD|hIIAAH!84xW~K*Rnx+E<}5H~tfLxgl&i{ALaE`8?{X?ae9X#gR4d$OW2D9`xs}hbS^o**~@e7bbV3voNbNW z!tXcJ?rM`GvOzX@19>6jh-{DzK5tBfnwmqX_dT>-H3*Y^HQBwUW`oBK;D0N40p9JdBS&N%IU)~{BeI$tk##4RBXZqK@C)kP z#eiQKd@OcL#N^Z^u8#CxG8fphCR$FAMF?=>;>~oFvqliKscYoKR~X4J=42) zqUiU`j&J=b2QRevpTs{vp1^KsQs;X2LZg2ZkT-(@`n=VLv`0ptFU!{FrRR#a)<{Oe zQ%v4N8GFE((!uv?ub8j&{H`je_bgAotnuW_>t8(BMsnnX&%Su9ZOeO}+_bv7UvApp z{P1ACp9`$l?_W0l@__u5zg)6Yauk|1xTm%0{}Ap3lsuG95I)1DoqFaeTP2BXO4A-P zvyYY^a4#DLBxF9*#GlTt^3U3Dw zBuC9Y!TYpNwSj#~%iAfy7=CHw?Nst>Zu8_V{V0x~C2yI7$d zfxOLI7zf^5DVkjpF}dAFE;g~>;JA^|Ipy_GqF(h0qyIgeAbswLL zeDb;lc^y4QtyE7oH*xQC(`oH}Pchal%<&=C3x4ihjf@6=_N`<74=}$ro`>tIlO=WB zMO#wsJWdxUy3r?kpszT% zE176?woXqTD)s=(mPzjbX7Lv0-UQx5r_In-7x0iwl^qgW$@5m8&*J&j&@+AY1o}fR z?wD6+|?&+K6yjY+< zmC?s9a(ZuM|0O5mRRP&En%{tnsigu9)xhU;md)@p`3K6tfiWHrg9nI*ol0MRSrhL( z)>dw9QY%O4Q~kQWnjH2OvUO!(t-*Xut>-Rte?WG8E}wk8NNZ$$f3AETGk|>kId>oV z*PKhfzT3^&Qt&BUm@Px)OOy6-` zc(-!Qq{sKb8;tCPzsRQ~-;$r7C0V19M^guopX1;=$CIDXi18mmcdD^3JC%A?(Y{-V zp-zN;Jz1KTqvN1c`I_WcM>YvI=Yz*OQ`A!j{!K!bg2VC=7+E^i#lyvcJu!Pfg?1M~ z^Nbl|FJz0x88=H7g2$;TqF>G#c(U-{es!#^^Bt=ndU106Vs0JTfXu4%o|gc}A&fU1 zn2ZF*&{EJ|{Mp+B&@(t8nHBZu*UGCwvKNmduX-L2ZTfR$)(yZcEwhO2R!C;u0v^oZ z|Km$H$&O5P0>5q4pg@l>a%&oEv^dkknrC=&>lROLHSyaL+JH~UtyMldb5+L9{PX12 zAE~FFQ*N~|&xep(;F^(J@Zy{|vbW%#7RuX7MKGj{K5b8c=Rc`~OF7jT#8g z^T@3_k9S%Bsf~wBe;@K?@7awnD{#*K1)Z~RcJpP|n%vnlO}?!8?zs7~=6jB~^3g6g zuKXzP{V&9oS1BH{c$OCrj%3GQ@xAvuXMY_zAJT0q!D&|d9B_X_sg0+0=Fp`idj^PWoZ_2bI_8xpuJO80pOF4_qVeY2 zZN8(`|8mJjF9x^gt^Ru;e~xl8|J-=<2s?f_0G|do?)MY_m;=R|1NvrC`Um=ubj~u* zk7Gac#zXMmq~js@fNVUZ3|&a{aH8>$D$e;{MUFuN-%!%C<&DmQ9$C-1NX0xtKXlr906O6ujVlj_3et3bS1L>Q0an||R@Ql7Gz0$95DxXp?GjR@dIUDDY zjWtyI;cQnwyyc(K57FJEE9y6s3yB_=Lf=%Zdk=b>;u<&LLrkI%#@HL_h=~b~8`of; zvf>(3BfYOL!v6>DxMxw-mbK8g(GAf>Kh2nSKmB^Gd_v0Q(>Yt|io4}oL0{bC>8X27 zo`dwlQs{LMc?W|#N`8U9)SInCX4#P^p*Kcy!Cy2ohJ7t_^+w$xE7_@k{&>T}({jff zdODrn)HeJYuc9~Yblmf%%I`zo>Y4K7_FMyg;xkvfBsyKj|E%>FcASkaZQ>8WUizNN z@k4)Y*yhF`BEUU%GrupU9s1)E?~G~#@dxw$FN{AdV^5D8e?ZqV@dtD-6MsP8 z`oD@lOnxB{f4DgUESS%`l@pFj&+P_|8*K4fB=3`AaXY;c2*Hq&}=Ptz8OzzM`FL!91 z=((&zHG5Tyb~!mg)C7)x=*#e3_@d#v{BG)YOazYbKIIbKjSi#Oy~!m4J~o$Vh~85_ zRgX_5a+x6qQvN?+<=F?|Jvj$IJc<)e-{T44oU-&PdzGCAC z3(a|??D%^MUbGuNW%6}o_mXp^SiEZO?Z);^!lP81Q#m_|G3fkmVm7%utSy-5uk$@g zWI-7a`SV}B2Qm&@h7=CaywKny>@^n&?PxR}{*V(Xuxa0!zb#^1al&>?B zJP>^!50BVGzRo$&-nb!7Z#(0iGaNYh@^u~~Mw!JEJU_kJNAJ7nIxl^DZTk5@2hdYn za_w^-J#|?gdUnsMX7UBC|1&WfI6}*!TkYM3CiafHCM}$oXlTy9PgM8QHS;XXcL^QG ztJqKQ?$lSD2mNR4{q1tzBkGjyD`zit=EdG48aMhxxZ|x)5?g_1>Hdcpv1sYPSun#- z`qu%tr1SafTz_A?xlc5sf63n`|DJp{(#34uK(}mg1=RGvB!*wlbOmw&r{Dh0zpz#(b~8 zG@62MxZkHlRaa4KmA;w;mWnf~wnq=VCI)S|aCCiZ{l;tdjkl#DGhXEV8LymsxmEY| z`6_D0I%A_>{v~xO1(&fIxY&Aq)msj-lups^Oa9pzOu&2tO4FC9ZLDAszG(bm#~Atp#^-(7En7|gX(zor(W$Cxc*ek zJI6d|=74#s8~Wv`dNR%6^9jhe%l)t%&bmfI8}J#)x9|J*_i(36?+cB8f8hF46<+ zkLVM^*%*DKesrL%o?4VK_J^9kqttJNer?{yKDC>HE`Bq0_CKWkQ*F*6CTH8oNA`3# zJZO*h*w|UJIRR--hvW>Ze|tEM5#9b`2oEc5?Sb zKfN@M{JO{6SLveqXX$sk@fT(4QE7juo%&J&dF0Y?LC1&wCs3EluUEG?Ztf7WU9k!A zjqmy96+G|xveADt`KlUE{35J+WQJdZ3&_qI=&}kuLFXOkkYgh`v5m8iiR-`v;F87z z@OGZX1MpaQkmR>|`ZTTxZSq~>HPWbQ{01` z^`CbS^1pxiPKN&-@2u=>|CsQ&T=i+sG4RWdPv$x=8@b8Vv6r!K>1>a(_H3P*I!E|9 zIt+gX&yb;N=RYeukv^>4G`yuH2dspn>{qv^J73^m190>6mSDWq`rl9VysU8L2G(=8 zcV;#P-w>bKa}hiTzLSLC`1O!ny7Z;s(BBD%q%T`u0w4JK4?SK2eH&iFZ-$pZuL)$W z@eL{GeG)taI^S~!qXSEPr%>ki|9Cc z^+m7lvF2#>zZm*kmC*$^q{`73!Eb)wkXnQO=IV$WQry!i9nt*WjJ^mS#mm_5D)4q3 zG7&kidXYWsbqu_4X~5GLgX697jTb{-wByykKjWdZt@8B6RnixC??jgqT%<30a8YgN zzP{4-@4*j4=n_U>geK&-jE&Krxc4+jj&_5`s=bH4xFfAECNuitxBqmo?IHT{^hGoF z_5sFRm1|7)Ijy5=O!ix2t~mwW_r_DBb4t-sePcE;=GOvaexET1(osK<1OKNZ>#Tfx zIgtOEjs*ZX~Rj%;`-hdj6Z^yTB7@AB5YjdiD>udS@RhxN-(lJlGw^OR4z2_Jzy=hf|< z^I9<(m=QaAWHGrM;=j<4#0`{`yrx%Wl?{siRSH$8l`=erh;IR5#r z3T*7|CHPICU7higoJ-EcX9SGTK`w`t-^bp`-nKc-`ObIU#+`-_{^P+m`&_zq68cwO zdHO8ZROA|bM7prf%Ouz%*`veO;`c5^Pv_j0XhnH8kAgod*ay=edBx@BnVJ-zW31a4 zD@#}BoumJmt*fh_HS{C@Q4jNYf!z2P!9)2hwt$zjIfqe;Zq;)QIAwA;&3Um^@=Jg3 zcf@M1ftN_m^8O=kUi_-`c`$O9QhZBEpIvb^J1$! ze{}!z@|p8u`DML5i&nz=hOmdyJ4ZqT1L*s|;;xDlmG!yqpOgQ2y5Wb}`nUA`O7bG@ z*|9p{lN{r4Rth?0PU461;b!^M!>%qUyD@#9Y^2^3Pb)~DC!3pfo~)pw_>Gf4PxejU zy8Zd^R)2Bp$!Gkp@}mk@Wmj~9r^dEK{?vf05pY$yhxCZ2xF7Fl{{XI{Z=`iW@a69; zu1<1wLFFHn3s=#P6Yw?J6G`Z@g5SmhEBRh4fR+3K7FI?0Hmks`N^q+j+|t=pbEW`& z!t?>1b-`1Wdv-29b@|1X0xQM0>d+_W(XZsudZQbKJJvAYmCSc7^EG-FZNzUi7tyP^ zZ-RNQ_$6|QzAK@pD&B8^p33QKHgcu_dQ!V2`Wk014K4ll4Prc^Bi?EB=x82(+VeE6E?LoJVJ+cix_9A@jCHR=1&i&uV==}6G+-afn)4(xHRWYtZekjj*qjIO9bxU~mFCFinwGYlQ{;!NYj6sX=-sp3W zjYZBS(hs-;>ghtwkNIqN3T~qIi?P2ILz-IZ9G(G>=bk%ss-livJb!`b%TABnzy6Hd zxZ|OyHBLN0x%d0w5r$sDm736zADI0Ef6V@YpIQ6o<)Cra!Q8FNdBSR)Z*pa(YGT`S z6Rt0CKwJpqvz>_E^UYi^%!3Qoe=U4Kf4uZWa6)VKVsm__3V6Eso6d;mF)P zIC8Rh^O;<09*xe6kN!69@!}UYPtA0wAuw-Ip)6h4@EmZwZCl% zwI^(TsLmv+Zo;?8i71Ch>hI;edlr1M8GaaNPsAI#M!GtirIAPS(TK-02BbHCn|wSq zAMY8!e%Qu&;(oj+4;}qmKz>6{rj~?gMR)WmkM8mX^^?zr=dOq6rl^z99k@4Qy;I!k zAji0Crd589)?>;&DKxZZ_uutrXUES~&t3b|UB!83WTA3%L_gwjN%-NT3mPW(kmqRg zLY6OrN0Wo7eYiv4%e>qYVJpp-1;qdmCL># znW^8hnE5w2z01LC-M3J#ToCYExLpL@Szeusms9(qS~Z~hJYK#YUcMDx{-TeU-zFMu zV6EVGsOZQ>oii8QwgUTl;AnC?;A8PRhxj)*OMlWI3c>kh&WEDE`8E1I@2^G13-^`Z z^{C@qyo)>l;rt`?F&2DZ1HP*^p^2e;HpBJk20uo(*okTT+7)JeskY(-*?aI3;wdd)&u`05B};){H7lG%hxNvOak~w=hMDD%Jat< z|2yovcok=;w^RRd`&~!xy1Rn!_>Eg@$i48dYY=#+I%Bg#t`5-!K75#WO-|BG^lofg zt4|CD2lo*dZKAF8iE};_x&Nw<+_rOiXi#ex`hL_IU~ zTW{_^4jO;I}!YN41E5MM+c4U1AP4AkFXDC`{)4LV6Hj` z?w*rR>pvcDipTwqcXsk$_|i{S4#1;7mpXACojjJw$1N~8>O36=7yLZh>NfM>)#B5+ z?)MRomTp)E?rw)iN@uzwj~;yodUQ~iMqNtlOYO$~&F1Ixm>c@i)5>35hE8pHyZH47 zZ-8G{v9IuG!BJ;s4WH*zwC(z2T|T`MzMo=VyOA{|p_1*Xp(U*;YVxFRzhbBS96iXJ zCTLD;kWadAp{uW#viFi38fQ6uh=(2FnUxb7Tkq}rGvvctJvsKvlMm1NWT=&Qg97ny z*&Fh^P5Gp=YTndZ!!sU+XUv8d#lhhU)|;yaQ9ZSX3~W3-plT?2Wjj8`y<}f|vX@%P z=WTRjH!iOl6#dLk^W&mo_FHnTV_l>=cs?WOuTj36{Lqrw+F!*{1Z%;6H89q?8d+C2 zGI=w+wuZGyhmxL@WPRW8_9(d5ram0|m7uMEZ7;C4Kl~tjZD-|Mo9r;=)Wdx2JuNG8 ztyBBOI5yAS=DW$C^RlV8k!_EqkmD)g=z)i7e`@Ia9C4iaQ%V%e0 zpJ+zB$l!x#Uy0Z0thqi1K5L$_+2(mN_j-7@_=aMCHrFM+Kl$u83+n;SnvWX@_Ib|i z{YSuFSQt1jV|=&ZpZu|}QV&@6a=-J~;DF`TBg6~9D{A9JMPtIj2577cp3>rkw>Jz8 z6SE6N8{jEjz)$fzoo$&5e^d-r{@Q!l(>QppJJyt2XwC>vh?ukLW4H^r!O(Gd-xkil za6d7A^XxO%;i0tgXmuF)T$91)9g6YZ^pk;U^%vbacn-9>F~DzZJaBp-9+;d3oz8|X z<|D_@ag?{Iyb1r=?ArxP)+oItSUbkRQu+sYB0r-!a}A87S9Jjs>4%#=*#5@?@nGd$ zA^(Au(Sc|yI3AErO8YMME^!fi2ro&nHwK=QTzJZFr}H*C50#t`Ua}`~^a{lfSJJnI zch^+$6ktxR82Pm%gWa>#@^|}XiRX*b^C|ShT>bmeK~3!cekRRd%zm7bZ$B)~`}oTj za_vokzog@Vb*?{j&xd3$Warare^M7wV*}VIucaIKr1yzE^Y7KE+AH9wy-HrxlCBRT zJEH|VLwXT<*3&8WYB&7K@*?r86nrUx?spn6o9*$dJ@6~58;W0*pzn?M_*DXZ&(x@) zFYzG*WANZQ__+4grlRB zoV`{Y(zV-NJwIJj!;8tn-%L#neGbUy{Oy5IvBMDuY zJRsJ|fhg&fCp8D@uazOk=;(utj_z#V3ob^`r)|IDQO}p4vqKZ&XYwiM(%H3dC#t7w z-`<2~OzfTh?O193oH?j2-Y?@^UC^c9Lh{VYa_QEVCI^s1%ekwhpC4qjrvv1XL!*4W)vxcm z`ayO+p5ax{?F4wc;i2rGpNFmiu0~D)Gr`TovG_FWYjJg5e;e<`SkF;!p z7l`iCyp;W@Cw^#orF=0C=YYhwYdk%lT9#QgE~$Chnt=WyR?qb2<>!^NsWW^3)7iZ8 zg;(Xc!)(Iwy;LIA!fG{1C|6Y=5)(t7v0hgKK{+1vWLe zM;nhd*hYw*FA;<2bmGw!OTyHL$jC1lG1S-`aBQ*|=Qmw0zgwv#s8q+5I{vkNuS* z9`=6QU*qNduooCDpg-V)T;Cn>)YDX zp4Q1sE+F1`ODm}e|L?Q*S~F{A*4{G{0`~Ru!I{kLS$nN#J=fp!JZqOh(;{QDb{%UK zIM>UM&GPUgL)#D=_X~P=OSN&i^}(uMC?wvx8vS1=-V!XQ9=a5avEa9R(4!^CT1sZ4 zJ4H9SVy)4Fi)j9RfJX}#7KiXk~-tFK^- z(yT3*j8ol79+Lua8XBzw78gicT zAJGxT#7{>;dx_)i_$k!pus6#Et12yaYH!fCrs_aqC$0a6b4F|Zf2D1a(tlU~JYYYx zEqXQKpgFeaKcTCkCw=w!x245P%MG0;=ESK1@ltC8`{Ia~L|zNUOJ}2B0%Ig>+E(`E z0Ar=}KCQ(@ox+?XR=SQkOWY#4AmI%=Hu@^xi4AQM{{ugC6Y;UcM-ms=>kNpG()WwO z7oqWy-uw7B_O(3Qmc948pV#q`zUCILc{1mkom>+tua<9?QJOjn(~D zKgZc96TOX6KX-!AcB1sgm2ViS_aGf_=-idlzuoHN1;+)gV{5F&RXfAZywR`0^>Z1XpJ&be z3w@aTB_VUqt)F{QorRW-XGr~ACw^#u*3Zoq*@bU}-#ftdC5L}wcKsYS?1=au&QbMq zZMpSxzo4$6nEE;DE!;Aqb%n@Apq$y)_!xg%UM+Hv&IysD-ai*FN8i&r)mblh&DtkU z45^osny!OVFL%wlC%RAdHkx|5jq{MLQ+=KMQ+bcg6Wb@T-GSE2{lrBpEq6inaurqL zvjo@6CE)S<`>|f`KSd@RSS!4|g<8-O>gC#2z~hJiI;&nzorgwE&}m0$9xtX|j{cx0 zoVFlS0~gHa_BBC#uCEdM>!_0}ICekP$u)~k5F7TbU**@y4GyT28@2nJuSop)s?=W2 zA@-a|>NLnKJFsuUuu2a(a6dW{#CkicpABS!Zic3Do`nU_`qMz~8imH!8 z&zDjkH<7VTOq8yVV+^T}`?%a!+l2$Ek2~45U)mnH>f7Sf|O?n6+NYS~qzEciQ=zpL2bdUtF*2*{%GIz1F{cZC}fYIcxn~&{`ds z>*KC<%U()60k25T?HTR=7=QUt=5HQ{XLbIjS!1Bhp%|!%yWp)w(7c5FO|!;1n?rF< zJ-#ze0e9^V$=_TYM(cnY1y}y&#gP0>^crv+FoUpqxdYAL94<9p#H9hXa%~Mtrv3bl zEz@%Y@;Np?*TT<)C%71@2%!a_{^YVtWNL+a;(@;N_7uk&(wkC zcZ$<{j{MGE))SE5DQP_)WPYbo_N27@PTM?WtjPRMNpvVCzcYziE2n>LGd8??aj2QML%V4ycVw+ak&D7+okmT#`rVW360TAKt;))j!{m zZL8kpJXYua5dVmuIoq`d*eVYB%H(_0Swf}ddj=S~Pb@Cq^RY|Vrw=IK^D+E~0=03? z#)pu7V&9q<>bRhazfaZqpS>4nVx4sU2U(V!_FwrfH~;e`?khFv>P#2bu4?3n!yNT- z>HACm$G-n&?jMp5YBn**;qXRG^G4!W&hI4#xf0&M*GXSf&NUNru2~esKSsW-e9#O3 z9U{-#cfZ`SrzRgHKFH+jmaU$=x9O!~&sH%0lf*xl1>pY%=l_n-p8SxUXRw0%H0{0d zrMTX!Qu0L2LF)tW|C1#zD+BUF_w{pr=niDY&JVqJKIdc9$9m;8@A(BfPPp;9*tb_) zSNF>OUfnAzphKa2ks1>$NsT${!1G15E*b{(hv(Moy7EP(@J>2jbkt`qBo|dEUsUek zqy4jU;^QFfU*tvSjrP%N>a=_C(W_bVAQ^kLy=@=vzT7pzg$uXFv8 z@_jA1682VVK~j7t=UqLBeRbkpgRs*>@au+Qr;j2ow&eLR7cDjZxXt2uKYsMjZ>Xpa z&qvJ#4;Wj~f9E$;2=6zrUa2L>Iltin`1O8lLJ#~ZXF13o2A${7iSHnJfQ8giN}s%( z=OD6T&U3h&S_+Yo{>V>-%7xAqgvy1!=4-4yH$PR(*!_{8GCD=_Q=LE0&rjV_AU}1g z)S%9ZIrCFOcaxtwT+_Wj@>9#@85*+ZS$KmAb zW8WTsecdbPMe1G||NgBn6*||!@adC6^FHLOrs;fDF??e3Rk9x@U)4%|MXC9!#q8l6 z{sqNrK{Yt9^Nfu=eI<19qC%egVWUcX7{^+IPmTwcQ24#q#ZO!>>j zpXYGzzoEO)+jhQ6`rBN3`)2Hd^v?HSn|k)%@=`ImD_Mh_EpQ9>kug;*Jomd%Y>Y(@ z&ZUV<-@oLtu9s`EAtsNtst@NpT;tkDZATu%ju?9R_A%RE()~r?J6ZXwbey_H_Zvx^ zRkwHfOU3pb+413ZSMFBZ4r-J!a@P&HUn!p!+X{~2v3Hhth(D^;i8_3OH z$!8{iHBa{+5$mir@!m0dFVpd!Baf9DLfoWtc6F@vE19*nOT2tv&{`d_@Br7kbFk&j zmTzGDKPvm)nZwU*qL*#pUSRrMj)W$({N*q_hj>`!CR z{y6ke$NveD2ke&Q)$efde>&fFfaganm%Vi4yFB=!;Sil4@d7;H%6Ap5`*QMKUFg7W zjio&YmL~gsDLQanI{!5=({EFY508E=)ZbLJZgk|o&ceo}^IsGFx@+l|D0O|I`7b@L z^dBwnr?VsM{-!yyM<)NJ@0Hu%G)12sA!kI4B`!FTxIpksvj>t7^Y>s-hW_xlIWwX{ z_dAtJmtyi^OQ}V2`tL?2L-JvJcn(RPA78*`jj&|a_=lH;4`$gRg%n{!@- z;3}?ur-C*tpzkRxFJ{}W1o;f3HzhANm%sax7qfNeuQ-=Aa$mM>`vm9jJNHTF#qMKDQ{NBR9Ea{jpJdz~L^56X`fkq>L1uVa_IzK@_c{fIuy{qT^ve^C8X z!-d~N`lrBb+B|Pq{MH(k-^%Nsx{g|qV)9!>gRoJybVI9qk-^P~x@R9x8GoZ6-&xK-0cIa#Rs=RHlC_8Iq%t{FLdV zDkVqtG%{Cgj;h!mD#M!}5*qg*CuMr5@M8+{hLw|QGdZbp=wE71O628d{B!!UA%4x- z?ZxZkZk>}Vc)s{GbN?axr}lj|KOZG|v@Abb=NoRmrlF+%sUF6bak9=AXAH?XCFH)^ zE||R2&OYRw{y?v(6L-K5E2V#m_^N&3^i2Lq{e5Ake~NQlPcAm^M10lWFtg1(* z|I#tJJMWZU>pIr@yEWNs9T>D$M=ZI>wQhqU=~(iE?4MdRBb{$*)A^?GGo*A(CG=ec z&3R7m$;F(1CpuF4r{wiu^-m2Aqjf-zsnq_dM>wy&P=3kRHDxCsq`XplgOX{#f6A6= z!FU4lN@;$6o3nsNSCd-V4*n}oT4{6SK0qr;0G7R zdd+!wBGWhgD|+`J_fK8MJ%rXmd%J(i(7&(!Q?_2cg}r(5huOMjC+DR)_r{@X&Ufuo zj;=Xa{ZntECtdlZL)kxd8oE6opQQS1&^_V3p*i^^_O?yzXDT`f9oM(>@#LOb?}hh` zI`T(9Ww7fac-n zV)8{hsS^p6w~&0%6+Dw9Pfr^83$Q<>_D>xpa#lpX$aOv*`SxI&#NN2h$19L0 zYBRP-`lpn|`LE{6~b3bF5x!uunsd+7 zlX{dQ^FeMI(flEPQ=pvL*ZA>zz8nSVoe=zStZPpKQ`zu{Ytf($BXP&+T*kZnOsjWpWD|2@wvW6?5`sqRB-G<`JiH+J8N`; z^ea6}NI~Vk<>Z2PT zUoA8)Ef=)MK2PtDy60P7^J-c&Kbc(6B&$DZIrJ|z7ZgKQCh{*R9t!GDdWPp;Lxu8+5^$?@G?3?6+#+T5Kw12w7X`3DWNML_{J}AOkC7#;NwOM{~ zeg0W`_FAi0>x`VWHU+KK5l?o~qnjspvX9KgoTazbvhituIiUaOU_1{g1<%TPdZNE1 zA0)5E^dAW?ErPz}gYuqJ>pw3r`&qSWeC)0oe^v~Cwf~zZl$PBqIG1+KUD>kx z>z{qCFh{~%v3jLnt*k!P=@sF98$!v{O}^ZI$dPOCZB~Nzlhg{GGc|N0^OYmzv-Os8mTF*K1KOaRGyYfG!uBVjzkMyC) zb0G!0uHd=B=9$3YSTj5IGlL7&ZQ1=p7s{TP{-NUXKh5*7BPREgidOja#*Z@nLgx8M zrP9IPGr_{Tv@fW7Gc^4#r%uZ0PaByF$^X3Ze25GN*c(^=ry`_ZXf=AGnEcOh^kZJX zP>>DkTka=qdo+fhwmpL3_c8aAwoT7*uJ4}jWZR~bILFwzH#+z8Ef@W3x%ZGB!+lyJGxpaz7tq{wA(5 zc^~Q5m43++`L3_IpFdiC(ZV-zRJ}Dg^mG2_1>v!yGW|g4^LD|d zTG;)kVJm%;YDUFN7a*^FPJ%hVjoN{;hDH zj~DALl>a#^hi}g81K&(^ty^OczjyGz$p@9PPFbt`XXN3s0C}+ULj!Ww7U{#b zAw$n1L-Y;dXGvX?|4e$(DSn@-kAsBDqt-d0au%eQLh?j+KkLxD0dkfb&xpK5%Y7_C z{5y%e&%S1^$`?I=?(8Zbp!#i#ISWs6H}+Y0Hh-=xA%CRKLBg)A2NSgOM;A>+rz1y3 zrwdMK&ceGuzN-Zn0u!*$!rO+u%+mV?uL?N}Z>o!)T7G|#BflblCZDvjKz~sc@qJf6 zKA-7qk>3W^4DUyB&%=XXLpEHNo2(2m0GETD51|NG_MpY z7aHRal?#2%qpUeMuT;#~{gGEPx?wN;n6vFVAVZ54kHguk@^bPSeSe*y?EmrWHK@&hY1ZkMu3Sv{IjcR}6nx`K5N# zYqW#>d#U-QAF+39_~-PQLv;AbJYOaciwe-;sRHNUi4HgQGYiq>>(S%SX+7?Wk?cIv zDs;H`<2MjbrJ~<>c)nM*ZSv5vRg=9)eDZbYymEtAwyKJMQk!Gz_wgm3f0sNPeT}ZR z^Gi~H>C)Bo8|~T78U_s*^inZ-CRu}=efJ{wknsffG&v?i3;W!=O>!N!#PlCMsD5wN z{uE&|e#SF9^7c>LjK?jTVf;1U9%lPTf+MNe&N~0jj`i-5d=qr2CQd502g#1_p5_eE zcfOs*2UHAL)f&vJl6P9+S{L}huk@PCdM+y=-_!uTWnH=XCi%?do9fK@cdS?9x6kRl zOxI(XJt1e<0Usst0qwQkz*-;6S!>si0@mt?WzTV~TlUk+J8gjmX8niq`At*LN#~nX z{}KAFt(bh%Abf&kdF&2_>;Nk1tq8zHGceXbcDoT4anBP=s^;io4k`?HuAT@a0Ekg<(=T?c5{~FuQ+cu zlHunz!EZhh#LpVryVFHmWcQIAePr?(FZLn-be7Pz$o?b2H`V!eTBc17O3t?X!W7Zf z2j^_Nsf=ytZ~BlnlY26IAi1bmA97Ll{>XX2-;JkrtJ zI>6^Q{SqDN%0I0IOOGC+^X!gBuLtCxiqma5`KK;)+`96qO2>(O*?FiEb5OCc8peAO{uv7Z9UhC7TA^KF08JdIA<4O-w^+7np?kC7hItQiimD_{V8QJrACwf(# zVTVt@u6&xJyPu14pIdjCKDVw^S`?FqdXX9#r{8Vtdq^JYyv?QCp^sShe_BZX=`ZMp zV)9Rdd*tPx3fZJSm7Skz)A_0V zbF_-=PZC=p{YmoLA9<-?|8JMBX{=GPT`E@7gH7Fz4D6s*>L0B?>5e*|Z@w+B$aE=u z6L+m!cpttw6#YpH_1qi!F!%W(bN?XwlNM+>4(d+=Gj8_0BjbM_tMX5I{YmZAUlfyn zDkAUHtmQ1f4^ZnA zduip7()~#zG>`X3f0E*1KZeTZ^GqHon9ub!Vt*ZZq+l7+zblkSD)ziOUoQ-g3;uLF zHCjUVQhJpBAhoN(xukTD(i7zC4|R`{=}(egr9yR&(;^kCI-|=TmUEPkg#U`oB^7&K zo#D+d3XKn}N2wrhSUIF-lSBGE^e;7sB=T|u|C~N;h(7)<&vwbfQUh{GC7f6H580pe z+1mX4QOJ39CG{swVr=oPa?Yz${Yj_EeTj|a98;4o+S!ME(LcNPO521|`jd#e)OkA+ zyRW6*SpBWf6Dg%XiTFKz2E+u;;Jx%)={OAkr6T^FdxQB=@+YR2)TLR|x*7<1(S|B6z8U{v>s7li28kbza@vFnX7eFAD2V8pN}33gwF=$9^#S zlZ58xoEMGFwJp^0+z5^mkS9v>^Az}b>8fnmec+yO*&X7dDcDupG&dn>)j&I5hk(KFn`(AwmLs(jo^(OYsted$lK^=Jp@ z?;f4A7gK`v!l7I4r>{Csr{?IE+L%Pb{=}=5wsGiy?r!Q?}E+jAX?8Xoo46rw)_9tDA&MqcDG#s0gmmliK{v_Ea zV|#R;Nwcv%o6(JZ%nLP}v*~`oxw-8tecQBF_q}_ZiR|1Poflf*qCd8&Kl+mnH*}v^ zTt4XZv)Cs`KInt)PqOz-_DTLW`xfJG)1Nee`J1>Vw?Ap$B;V$$xW>x;BsqJ&L-#hS z=M;^O^-eh&-*F=OuV{3G%Kg0jM2IZ2W_f;KZhw;0LRJm;;<@#X(^P-SaeLlxs@(JbXz%3&JhXyy=N5WA zuYH!cQSxrB(6pN0%KYZwv)oI3mWqD!;rrCNDMR9Cx4zjjcDVO)_pHW^0~e3wJah}s zZ_?)~gw(13AZR_{`M=XStOUQ8zKb!*Kcqp6pYxyonidU7-B`dKEX@V}FMZ5i~SpXYQ_j~YbJ9S(X5 zEpIIIP7`{{nSK`)pyw{?p$gHnR2okSq4CSmIA}dC{*ZcZS;u{>tCKZV7g*2JMXX2m zw_^zX$HRDz*ioFNB7Cp&gvW%;-S9^`U#ZT^$gW2Lz&b0iFZi zGe`8)zzxejnWLvv&rC*7jf4-k!|PeH6D?CZF^_H*|9#a(C-zqIjn8ZSq~evW{_}Om zALq^7H|&_qn&+^-8D8&==&wzKy{oF=(M{;FEjj!sJ?Wyy253FD*2-OMfex3d+(l&P zGpxUB2K)&P60AE#Z@#aKkBBF!)$4*s?j7v)3a^?TnC;}+ojou!VjH_99);HP%Dvt( z<=)HBT{GqhTR$rP+UnCOluzwzg7{Qlvm2e!G;q)3samgh?B2<*+&I8{Gzo8X)U&4P zLa$iw0(j$w!F8*|c8l#Xawv2A3hR_>RIXt{thd%H+j-Iv-b|4*!4PBAT_-N|ZT_g; z-&E(JZIaqV&X4cV=h*tc_j>1RTA99;A81<1SYy#kbEQ`f%)JA9k_2x`)w1{8dp+Mj zz#M->en~LfVrVnjE8n&wTDEQF-j%mj^Bzoc6?*AWW6#R5XFD_>RKN$F*t1UEZ&Dc< zv@^-x??C5vivI?!gl0l7;e!s&r$};cw#^S;5IQm6PUJ`Cykk~uV-Gll?D=-;RPA-W z&fdRx&B;%wGtK_Kf9A*{*JSbq!fz&Da6U9FDqo=aLHg~6phwI2CwrYIk0E;Owx1TS z$3CRxRrHtLpIZ-)h&~IdnVvt`-7m5d8QwQ6TfZ%2>@LoR?t*W{ms-!*-N@=9_@#$^ z6Pqxz1|Jrg`z)`W@UQ4MqXS*~N%Z1CbYcT~V3}9G^JMrybnklfpU_MEvZUbm+^1XV z!;Ieh(|UM-dzt%mqhH_XgC3mVqO;b6PieX;<-EbjN+W)i*8ECdhL=!xRG=*wQAJXUp@o#&yKA`VmqxiRTegC#yFmQBEdl1f|{95R=m_D2&&vq5PnL_Tx zUpD8T$XP4e|7~B0eo*7hiuH=0+rhO-^&8)xw{5)H&+*WH->{El_LH@DP)DC)4;OL% zfAn}6E3#oO@l^`iHozC&bG#CiqKRs4gD3jcH= zOZO{GH{xTt@J$C}3Z8o#{lQ7}ve-3wmPzLf?hoJAORS0Q5ITrmN{ar5?^8?p9J+U) zqm%6C1!wv^uX-%td3oN+8tNAf&r2=1V7j?HUq;=(j>#0yC#WTSMfi&KN_?B8Q!JgU zYCl<*&GQR6^YpG8vw8l7yNl=f@veOnJuwm=uF{WBn{)Jq+Ru95e`-BS_H#sU!kYHw=c@s;uD%`8jz=D_*))5HOr8zI(*R{XuV&@j>L3I zw#wPx9_ZYId?k^udyAAW#l!W!Uz9}d%ZDOA$lF5XErq<<*leThJA15r2>2oF+$fR3 zLb7PzTlh@yZROjrz9jPdeRO94K3h<4*kgy*?pydQ=hub$Fk^U5ykJgpzLfMYNxgli zrk6Y;e)RQ1FZVM)cEH<$O)0t*(0TUUZF<`}&%Wj@YMLrt{>BKc%R?~LCG<`Q>h=Ik z^&HLjMt`;{yuhtLN5IFnZbApB^W@e1b#5~vehb*C>+H_z!QLvdXE86b%KlA|zMbS+ z5Bm1EM&CC1@>wxdn`L8|4`q@I(Th?U)Vk zqHj}6V!cBr;uoP;n^<23??rz}t}^R7K1N zbhC;rke3eOMRc_2W`zTyn+*;qGHiO>Y`rUSMF;jye6@S9V_nGeCUkxS{)qCUp_Ax- zc`x_1_3?E)^PXpWY!Ds)D%WM{V?B3U2bXis@x&F`I(X6d3h*j2g>PRYw(|vg%>#K; z>)=(I7d`$f1^@B!L7v~N@xgn}$cei%_@J^ypJMGko)zm8K6q!)S`G{!Y@e@nNs;(q zyVP!r4zg=bjZZ{<{Q=;Eu`GP>(*@|cgXh~9qGvXL6~EOc;v$c*7H~q z>&equqMtQBczDR%4-q~{Tre!&a-6~k^Umg3NnJu!6dj5GbEC!-8U<6pCn^CSbn>gx z>$>Jyc+bd;Fnx< zVsEga>< zuXzKVvChH=?=J!$6h97(u+8)Q=VxEeT1&+Ue=7Bi!~y{rVfy*mcW8R`0V6C(pZ>%M z#otNeg!vd@oAAU%LMMEg1HcFiuF1j()6c-JhlZtMgk|W`UVi8F*+X>MivKEJmmPy& z^g-i;=bz@|gXi&Ta67T-k|W8o?NMJ|g7LwIFno~x9}@p9wOrZwV60F0;3+N|Ydv@{ z@WCjw!B#9(XW}w)hF5>wxff!6b;Df{9V_Sc&J;?ar1lM{>#0Lc%6pSzzAN(J5ic8-H;e+M>D}xV4 zcrQNDA;bsUO?@demt3UMyM4q5l|KFo^?ya+gJ~VSm-9nUU6!qb=iFI zyjcQ1xYAMYCiozIwokLiPYb^B-A`oVZjmL)Ra-e)wf@ssKiKZm1H2PY5Da$!7;cuI zTSOhlFV)a1c`$R%AV)GsY30C!n6t8RKSrq}bDgtEx`ufPcKrqfQXI zlzEr_aK1;L1YVZwY)sbpQ!lFXhqLQ74XtH7Id3qc#~aId&oQ2hj#9rjp@@C?)ejGR zU&e;)%S(D+?6u1NnDx5&OJZ)B|60vsk??giON{gVepts}=)HByjDx?-{44sY9#QHL zO-&*gN3-XRh+lh*!W;9>V)znu8vTGbHftOwzdt>LH#Tb=r(e!txZ6eFe#RSDmQar< zd4GD-pB{uxItiULXz@vbHHlJ>BegeDleqSphNp-p(0v0p{C^+M*M0LdxTE6Dzw(^> zZsZ_KPIX+Lhu2!T_k}Kc>3I9u9DOJJxNEDQzgt-Ve~jt+#Et^>iJPfUl=@AnO;l$r zAeW-s1L_l5>xlTzSgVCUrq5Q`OwB;C_~Tk{+zFen8S|8?(?C}W-ITw(HH|L@^R9i3 zpU=tXU46|q^hzHwNaWMUAkSmHxftZR1?m*UuUYiMWq)XqR!67B}Es%-UmH7z(sSdCx51C98|B^T0*_z zYyYgUnYINpCimuGkzi*2^GBBlW07jjUuMk)i`?uj`k@z_e}d4mXk2pUhvM{Q{AM?2 zcaFO*9Uq{ND&n&^ch||U4vglB2OWHxgVEUMfs38$(e;be4Hi?s*sSr%<}iFRfvzXM zYFh+N#ZML=*^N^UGIfm28mA2G-51~5_-A4G`;**P9G<4vTtp(~A1)Eeg zj8^^PaOUQUmtFXz^gAk^qHZOZr^0F(zeKDd*in+2mQ*eNXNk3pBegs9yH1@Ey)JE>;HK-B4Ht{zK~zjH=4H{%eRgnbrk=5+ zH57wa{)}3fQ2q|VD<_5VdjMWJ+2VhBURhW@V+wh+_37G!j8_hFt;c~^t_-PX48kkh zSc^;l2H};z|7ZrU{4MV#W|8NF6jRR_(|&-&p@RZy8&%yoI$G))O^stfZDX_OV>vS! z`U`g1EV@{*%LsPc)HVta<<>X;iMJADRUKnNL^1ntgfFGV;t%Ku=}60`=x^Dxx;}6OMH4`8U0Yu zQ*gUu3efYvzFU}{rP8=OgvROm#v=K{;Ez%()ybMVP6_9a>x)>A>~B#2^Ka=}b@IB! zAI6^z#2euo`V42*hVYHu|E%!FqmXrC17ALe$L9=xqvgE|^826vmAa2myzwYGPeAoQ zXYrk~{TfRQ;@7-u96V}YlSjvpSbUj_t^u)lVE;2b)35!{=#lNztJD9yr?~#-hCMyh z&kNRAo6Cm^XUyoSKi<{1`o_~;bdp#Q{>$orjz(UtEgQbm?|(iz-5-!x#QezlW%WP9 zk6Uv1(dvIzdMvd6S$YPrcc%Z@*Tuu*_p-*W*?xVa@T%#5{t-0?PJ9tscT4{>*pt=& zyeAJ^j7C+TcsQS0*97vZf6b%lK-K>|Rr;Un{r=|*(E-z06LD6GHK_jQq4Ymv(<`w( zMh<0er?F1CW*+!!a#BG5^DM?AejBBq+qX>WRMG7n_`C8O|M!0Xv(U=)KVPD0B{G}t ze`Y=D=LFCzAvDhIe=deLE?g14^r+EGIsMN(5B2)I{%1p@9TSL2@kf%-Ew}&K@WTm0 zC+6Ept-s89#{~Mk?EYtKUAq5yk6?-~YD}@1H5p7%XlVMMheE@mFh$K*65np)H_z}- z_PP{3_Gx;&^Xx-_9t-S$hDXGv2lhYn>^#@=@`~zzX6$bG(C&Xe`eYwZ{3l**JTb7o z5xq$N^Pa5!XLPSTTUF>Kep$NzS?R-!-unUdcs7pMjm-C@|M@TU5$Dla>%qMGM$4BF z|I^s#Qu?2_jaPVLvpio;)|i7Sf}8o6qUr_ZeufTyZauU9OIUxPf4bG#|J-bz*OlZ9 z@ne=|`{`%j7QmzU3c3By>w{=EGSds1Ro^K7t>A~2pJMet_lkcj{m&wof*;Cj7=9@6 z&0^@}>+?bQyYBvHHJ;YlL1%tua`&1248sq{aW=Od?<)L|eJZy9d6tWI#IOC)|Lie0 zSN!V24^{uO#5dRsaOgc@n4!d>2Z9+M0nguU`tRU*8#k2Cv-+Pcp7;Bo70{vei{}q!ed9_w|30_>8M&%6 z_@S09NB=W*z}Kt(XXK$>%U64ld?~-XKD)lr?2(NbmU=Fwy0;?iO;?u>BmK{U8)o%D)Bh~=@}Dyne5RzSZ!C50#o&cM zp*AO!uS4*{Q^WW?052@1|M^wq(AJ-8JxBku_$@*G&qGV=e}0cX)jYXH-7<^t$fXWti`2ogYd#%jMI1_>wA&+f_D^E--w>3|9MYP|FiTw7s3eB`d4FwMy9js z8_~VF_@LOOYMd2*6GI+MeDLrB^lUAHo~7c0d+GhmlYQ;mA1FTf-zSFi$5)G3kJIni>OV*AmmzaE z__5*VgM<&_BOMu^HALZqdHv7RsK4k3e9+0SHufjHDfNiCJZfK)N5>F+aH)%~0de*J z3;5u~Tt3X;gGx`mvbt~h;Ky8a(z4^i2mSu%Lyix!#v|k3V~rL*nC^dGORYvf;e#Q3 zn#Ko1_|(7V$LK&+d#Le2)&E=o9~9dNMu;r>&tp1;wU&wzeobmh(eD8mVY|TyXKH%& z0V6C(pZ>rI1w*y*L4_IS^gn|UDxNq-=yYHhVZk+77-74?2&2%jRE+Q$ezTE(PCqC_ zmrbF^JI}ra=rU*j^C89uhmQ5}!NYhxi1=WeUwmsMdcG>n{o)oIu`y95;S?x)13Ooa1`< zm(zZFn_wlMx+Q==9azZ^gJ@>?>3zfp+cbXB7KC4@yf<`OOwVi)_@L^!#JA|T{^v@b z-D1bLrQ(AZx@cD-K4{KHR6WpEyt+r85dgmxeLmtL!UqRxo_F;>3(sfuKU+L+;e(3j z@1hQ{M0_yK^B;ldKXX+!&o|y&JkNK~d+pQ{7SA6{d~mruKjFaf!GiK-V|1pz(CpCx z;)4Zc(Z06}ADoF@3BU(STGt`K2iprhbH>64OPYHz_~3f#W}Lo;(d8ld;J7e8?+1MF z*T|u*KMyuO_!sF>9fWU8FI93F`SYX5EB6yV_)@w2-}LPz**dtAbDBeW)xrlGU3)3Mnx%t_!3SOask;C9{lqEW z`%*vnZ|sl32W5UaHH2#YyKjfLPKmugfO_i_v8D7smt03UJ!nnfgn|9fl5eFa#m=`% zFOPnnO0QK<*rxHqtaH7@hob*EtFBA=Rr*=?;xD<*OZ2?h`-7|Ip0I@)RH2Ep_t}BR zwz~VD6|H5wYWkmLJfUM)@AK~J!h3RiKkP}j^d0Bw3>_0}E22Kt#b2iWkp5@2?kz>E z<>G!=%OfFc$>pzuj5iWz92=iBP~nYjxzA(y81*pyfHyk%-Nq7yw>93F#pCuhrQnUT zUGxoz(ff)wmfZh*YV7?%$kIvZB>JBNYZ7z%pZ8KnfbJW(;W!6x`u)!;H`FZg_hbLj zxBlm0E_!L%a`r##`b59~IT(Lb{m#gu z7JpnzKLGvDdqZjzo3*ZX^zNrI$Y#yE`TftjCT$gVtB)9Dv%w$_W4*Z;WM2QXJ%@Mded3>SrhTICgs&Bru&~KXqxo_gDglN7Y12fpiVKj|5;&# zON1wo0dv0uy0|a>&(G0QoJVu5C)54UmapaUpRwP5|8w^9ZBp=bCo-F&F1ZuAm1i=D zu3rOfhz0!qXXMtxBD4CRrH-)+{U|=MoXxIkH}M1gew)ntPi6gG;EhgySofJHIA>ky z3C2{or0)HEl=EYIu1LoR=%b4Gh^7F39l;t#a(=xPA6yeeGb=uD_CI4cwiH*t*sSqM z>Nrh4J^y(t33R>CbP+vTg?gVw{-yU>UW4kUa_bwy>KEVT+oo8j9+amjC`kf`#>XKUYTFw9T9SHvmJ}EMhqW+G&l=6#~P;)5q z5!nB1)sA&!;%44|MQLme16Nn$@3m8e6mXV zpOLG1rPVJMlrI}2H29>EH`%WP>3uFn7VZ1HFv?S^EQ}I9+&(VWt7{lbT3aYasmGNX zM$YjG?ZcR&YZ&F6MpMV=_dfeNYF?UV?!M<2b>Fk1jbD2dsQYZ%6oXUB^EJet=J_H< zw};@A@6*2-$man#`~Dy6qd>KN}4Uj*AAI#l$rd8SK(eHOn&dY*0FJb0DwoBW>dvun-#dT3h@ z$2n{D*)L}MBD*<1H;Hd&vH#C z{Z}3Mb;;4#Sk@^$2LpIUQ3tkI{JA7~$p0fXkJ!GBO1VyGZ}EodSsBFmLp4SX{yPiV#rO+iwnY;80GM{bO=M;M&eS?3rdcSU? z)RxSmwQDhL97$b+jaS#q5<2<)+4ePgx-X<2WHUX< zc{(p34tva^*LZC4zG21j$KA(g_~S0#7vhfzCGf}j!XM(h!B00Xd8?%=;+;{DUo3vA zAI2VHtm`#s07CpXS1U)8}K#$J|J+!>9L^k?U-bwd zk!^p+SBSj1^C;D**wqxA@Uq5!D|89gH3(N4G(UYPt=j!ug9^b#SMeMN22Z^p6 zh>zJy9fIgb`8&%dqgOlNf7_=2PHYg@HE@qyJ=>zk$r>X>&wda(^d)+I^JF|ghpw?? z-teE(z6bE%y5lnXZ!PZ&>Ay)O@ZU_~KP~UKeW`!tJ&bR^;i6xNeV=w%F#pzZj;`=; z4g9-Ro@Ir7H$40ME8c4H26$%}p6rZxj~PB55WvUplHYgovE?J27{b3j`uD~1ukkVe z(fouXU3(P3_=j zbliguS8>lonU^2;d4nmy7=Zt>o-!IV)ua_<+z^;?FYZqwry9ta1dz zp{Z!>VLukFh#$*(CEl0k;EByJ=fs?#WkhVO#BOVe-BRpLmpV5fvLV4R7|