{"openapi":"3.0.0","info":{"version":"3.373.0","title":"Retool API","description":"The Retool API enables you to programmatically perform actions across your organization and its spaces. You can perform RESTful requests to manage a wide range of objects, such as adding users or updating resource configurations.\n\n## Base URL\n\nAll endpoints are relative to your Retool instance URL:\n\n```\nhttps://{your-retool-instance}/api/v2\n```\n\n## Authentication\n\nThe Retool API uses HTTP Bearer authentication scheme with API tokens to authenticate requests. Users with sufficient permissions can create API tokens in the organization's [Retool API settings](/auth/login?redirectOnLogin=settings/api). Each token can be scoped to specific permissions—only grant the scopes needed for your use case.\n\n```\nAuthorization: Bearer YOUR_API_TOKEN\n```\n\n## Versioning\n\nThe API version corresponds to the Retool release version in which it was shipped. This means the API version reflects the features and endpoints available in that release. When you upgrade your Retool instance, the API version updates alongside it and any new endpoints or capabilities introduced in that release become available."},"externalDocs":{"description":"Retool API Documentation","url":"/reference"},"servers":[{"url":"https://api.retool.com/api/v2"}],"security":[{"BearerAuth":[]}],"tags":[{"name":"Users","description":"Manage user accounts at the organization level. Users are created in the organization and must be granted access to specific spaces through `groups`."},{"name":"Groups","description":"Manage permission groups for the organization or specific spaces. Groups control which users have access to certain functions and features, such as `apps`, `resources`, and `workflows`. Add or remove users from groups to grant or revoke access."},{"name":"Folders","description":"Manage app, workflow, resource, agent, and library folders within your organization."},{"name":"Spaces","description":"Manage spaces within your organization. Spaces enable organizations to implement isolated, multitenant experiences without the need for multiple instances. Create spaces, copy elements between spaces, and manage space settings. User access to spaces is controlled through `groups`."},{"name":"Apps","description":"Manage apps within your organization."},{"name":"Workflows","description":"Manage workflows within your organization."},{"name":"Resources","description":"Manage resources within your organization."},{"name":"Resource Configurations","description":"Manage environment-specific configurations for resources. Resource configurations allow you to define different settings for a resource based on the environment (e.g., development, staging, production) in which it is used."},{"name":"Permissions","description":"Manage access permissions for `apps` and `folders`. Grant or revoke permissions for `groups`, and retrieve access lists for specific objects."},{"name":"User Attributes","description":"Manage custom attributes for users in your organization. User attributes store additional metadata about users and can be used to control access and personalize app behavior."},{"name":"User Invites","description":"Manage pending invitations to your organization. Create, retrieve, and delete user invites, and manage user attributes on invites before users accept."},{"name":"Access Tokens","description":"Manage API access tokens for your organization. Access tokens authenticate API requests and can be scoped to specific permissions."},{"name":"Access Requests","description":"Manage requests from users who need access to `apps` or other resources. Approve or deny pending access requests within your organization."},{"name":"Environments","description":"Manage environments within your organization. Environments allow you to run `resources` against different configurations, such as development, staging, and production."},{"name":"Configuration Variables","description":"Manage configuration variables across your organization. Config variables store environment-specific values that can be referenced by `resources` and queries."},{"name":"SSO","description":"Manage single sign-on (SSO) configuration for your organization. Configure and remove identity provider settings to control how users authenticate."},{"name":"Custom Component Libraries","description":"Manage custom component libraries in your organization. Custom component libraries extend the Retool component set with reusable components built with standard web technologies."},{"name":"Source Control","description":"Manage source control configuration and deployments for your organization. Connect a Git provider, deploy changes, and track deployment history."},{"name":"Release Management","description":"Manage release manifests and versioned releases for `apps` within your organization. Release manifests define which version of each app is promoted to production."},{"name":"App Themes","description":"Manage app themes within your organization. Themes define the visual style of your apps, including colors, typography, and component defaults."},{"name":"Organization","description":"Manage your Retool organization. An organization is a distinct collection of users and data. They operate separately from one another, have their own configuration settings, and are where users share access to work."},{"name":"Usage","description":"Retrieve usage data for your organization. Access summaries and detailed breakdowns of page views, active users, and app activity across organizations."},{"name":"User Tasks","description":"Manage user tasks generated by `workflows`. List, submit, cancel, and reassign tasks assigned to users or `groups`."},{"name":"Workflow Runs","description":"Retrieve details about individual workflow run executions."},{"name":"Processes","description":"Trigger and manage process runs within your organization."},{"name":"Observability","description":"Manage observability configurations for your organization. Connect an observability provider to receive error events and monitor your Retool instance."},{"name":"Info","description":"Retrieve system information for your Retool instance, such as IP allowlists by region."}],"components":{"schemas":{"user":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The ID of the user.","example":"user_1234"},"legacy_id":{"type":"number","description":"The legacy ID of the user."},"email":{"type":"string","format":"email","description":"The email of the user."},"active":{"type":"boolean","description":"Whether the user is active or not."},"created_at":{"type":"string","format":"date-time","description":"The timestamp when the user was created.","example":"2019-02-08T11:45:48.899Z"},"last_active":{"type":"string","nullable":true,"format":"date-time","description":"The timestamp when the user was last active.","example":"2019-02-08T11:45:48.899Z"},"first_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The first name of the user."},"last_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The last name of the user."},"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"Custom metadata associated with the user."},"is_admin":{"type":"boolean","description":"Whether the user is an admin or not."},"user_type":{"type":"string","enum":["default","mobile","embed"],"description":"The user type."},"two_factor_auth_enabled":{"type":"boolean","description":"Whether two-factor authentication is enabled for this user."}},"required":["id","legacy_id","email","active","created_at","last_active","first_name","last_name","metadata","is_admin","user_type","two_factor_auth_enabled"],"additionalProperties":false,"description":"This object represents a user."},"group":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"This object represents a permission group. A permission group is a list of users by which to restrict access. You add users to one or more groups and then configure the group's level of access. This applies the same permissions to all group members. See https://docs.retool.com/org-users/concepts/permission-groups or more information."},"folder":{"type":"object","properties":{"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder. Currently this is the same as legacy_id but will be different in the future."},"legacy_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The legacy id of the folder."},"name":{"type":"string","description":"The name of the folder"},"parent_folder_id":{"type":"string","nullable":true,"pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the parent folder"},"is_system_folder":{"type":"boolean","description":"Whether the folder is a system folder"},"folder_type":{"type":"string","enum":["app","workflow","resource","agent","library"],"description":"The type of the folder"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","is_system_folder","folder_type","created_at","updated_at"],"description":"This object represents app, resource and workflows folders."},"space":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the space."},"name":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","name","domain","created_at","updated_at"],"additionalProperties":false,"description":"This object represents a space. Spaces can be used to separate your organization's data."},"source_control_configuration":{"anyOf":[{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["App"]},"app_id":{"type":"string","description":"The GitHub App ID."},"installation_id":{"type":"string","description":"The GitHub installation ID. This can be found at the end of the installation URL."},"private_key":{"type":"string","description":"The base64-encoded private key."},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","app_id","installation_id","private_key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Personal"]},"personal_access_token":{"type":"string","description":"The GitHub project access token to authenticate to the GitHub API.\t"},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","personal_access_token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["GitHub"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitHub"},{"type":"object","properties":{"config":{"type":"object","properties":{"project_id":{"type":"number","description":"The numerical project ID for your GitLab project. Find this ID listed below the project's name on the project's homepage."},"url":{"type":"string","description":"Your base GitLab URL. On GitLab Cloud, this is always https://gitlab.com. On GitLab self-managed, this is the URL where your instance is hosted."},"project_access_token":{"type":"string","description":"The GitLab project access token to authenticate to the GitLab API."}},"required":["project_id","url","project_access_token"],"additionalProperties":false},"provider":{"type":"string","enum":["GitLab"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitLab"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"The domain used to access your self-hosted AWS CodeCommit instance."},"region":{"type":"string","description":"The region of the CodeCommit repository."},"access_key_id":{"type":"string","description":"The Access key ID from your AWSCodeCommitFullAccess policy."},"secret_access_key":{"type":"string","description":"The Secret Access Key from your AWSCodeCommitFullAccess policy"},"https_username":{"type":"string","description":"The HTTPS username from your security credentials."},"https_password":{"type":"string","description":"The HTTPS password from your security credentials."}},"required":["url","region","access_key_id","secret_access_key","https_username","https_password"],"additionalProperties":false},"provider":{"type":"string","enum":["AWS CodeCommit"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"AWS CodeCommit"},{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["AppPassword"]},"username":{"type":"string","description":"Your Bitbucket username."},"app_password":{"type":"string","description":"Your Bitbucket app password."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","username","app_password"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Token"]},"token":{"type":"string","description":"Your Bitbucket API token."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["Bitbucket"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Bitbucket"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"Your base Azure URL. For Azure Cloud, this is always http://dev.azure.com. For Azure self-managed, this is the URL where your instance is hosted."},"project":{"type":"string","description":"Your new or existing Azure DevOps project."},"user":{"type":"string","description":"The Azure Repos username."},"personal_access_token":{"type":"string","description":"The Azure project access tokens to authenticate to the Azure API."},"use_basic_auth":{"type":"boolean","description":"Set this to true if you are using self-hosted Azure Repos."}},"required":["url","project","user","personal_access_token","use_basic_auth"],"additionalProperties":false},"provider":{"type":"string","enum":["Azure Repos"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Azure Repos"}],"description":"This object represents the Source Control provider configuration for the organization or space. See [docs](https://docs.retool.com/source-control) for more information."},"source_control_settings":{"type":"object","properties":{"auto_branch_naming_enabled":{"type":"boolean","description":"When enabled, Retool automatically suggests a branch name on branch creation. Defaults to true."},"custom_pull_request_template_enabled":{"type":"boolean","description":"When enabled, Retool will use the template specified to create pull requests. Defaults to false."},"custom_pull_request_template":{"type":"string","description":"Pull requests created from Retool will use the template specified."},"version_control_locked":{"type":"boolean","description":"When set to true, creates a read-only instance of Retool, where app editing is disabled. Defaults to false."},"force_uuid_mapping":{"type":"boolean","description":"When set to true, creates a uuid mapping for protected elements to be used in the source control repo. Defaults to false."},"auto_cleanup_branches_enabled":{"type":"boolean","description":"When set to true, Retool will automatically delete branches after changes are merged if the remote branch no longer exists and there are no uncommitted changes. Defaults to true."}},"required":["auto_branch_naming_enabled","custom_pull_request_template_enabled","custom_pull_request_template","version_control_locked","force_uuid_mapping","auto_cleanup_branches_enabled"]},"app_theme":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"name":{"type":"string","description":"The name of the app theme."},"theme":{"type":"object","additionalProperties":{"nullable":true},"description":"The theme object."},"created_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was created."},"updated_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was last updated."}},"required":["id","legacy_id","name","theme","created_at","updated_at"],"description":"This object represents an app theme. App themes allow you to customize the look of your app. See https://docs.retool.com/apps/web/concepts/themes for more information."},"app":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The app ID."},"name":{"type":"string","description":"The name of the App"},"description":{"type":"string","nullable":true,"description":"The description of the App"},"folder_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"protected":{"type":"boolean","description":"Whether the App is protected"},"synced":{"type":"boolean","description":"Whether the App is synced"},"shortlink":{"type":"string","nullable":true,"description":"The shortlink of the App"},"is_module":{"type":"boolean","description":"Whether the App is a module"},"is_mobile_app":{"type":"boolean","description":"Whether the App is a mobile app"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"},"release_version":{"type":"string","description":"The live release version of the app. 'latest' if releases are disabled or the app has no live release yet"}},"required":["id","name","description","folder_id","protected","synced","shortlink","is_module","is_mobile_app","created_at","updated_at","release_version"],"description":"This object represents an app."},"sso_configuration":{"oneOf":[{"type":"object","properties":{"config_type":{"type":"string","enum":["google"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login"],"additionalProperties":false,"title":"Google"},{"type":"object","properties":{"config_type":{"type":"string","enum":["oidc"]},"oidc_client_id":{"type":"string","minLength":1},"oidc_client_secret":{"type":"string","minLength":1},"oidc_scopes":{"type":"string","minLength":1},"oidc_auth_url":{"type":"string","minLength":1},"oidc_token_url":{"type":"string","minLength":1},"oidc_userinfo_url":{"type":"string","minLength":1},"oidc_audience":{"type":"string"},"oidc_end_session_url":{"type":"string","minLength":1},"jwt_email_key":{"type":"string","minLength":1},"jwt_roles_key":{"type":"string","minLength":1},"jwt_first_name_key":{"type":"string","minLength":1},"jwt_last_name_key":{"type":"string","minLength":1},"roles_mapping":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","oidc_client_id","oidc_client_secret","oidc_scopes","oidc_auth_url","oidc_token_url","jwt_email_key","jwt_first_name_key","jwt_last_name_key","jit_enabled","trigger_login_automatically","disable_email_password_login"],"additionalProperties":false,"title":"OIDC"},{"type":"object","properties":{"config_type":{"type":"string","enum":["google & oidc"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"},"oidc_client_id":{"type":"string","minLength":1},"oidc_client_secret":{"type":"string","minLength":1},"oidc_scopes":{"type":"string","minLength":1},"oidc_auth_url":{"type":"string","minLength":1},"oidc_token_url":{"type":"string","minLength":1},"oidc_userinfo_url":{"type":"string","minLength":1},"oidc_audience":{"type":"string"},"oidc_end_session_url":{"type":"string","minLength":1},"jwt_email_key":{"type":"string","minLength":1},"jwt_roles_key":{"type":"string","minLength":1},"jwt_first_name_key":{"type":"string","minLength":1},"jwt_last_name_key":{"type":"string","minLength":1},"roles_mapping":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login","oidc_client_id","oidc_client_secret","oidc_scopes","oidc_auth_url","oidc_token_url","jwt_email_key","jwt_first_name_key","jwt_last_name_key","jit_enabled","trigger_login_automatically"],"additionalProperties":false,"title":"Google & OIDC"},{"type":"object","properties":{"config_type":{"type":"string","enum":["saml"]},"idp_metadata_xml":{"type":"string","minLength":1},"saml_first_name_attribute":{"type":"string","minLength":1},"saml_last_name_attribute":{"type":"string","minLength":1},"saml_groups_attribute":{"type":"string"},"saml_sync_group_claims":{"type":"boolean"},"ldap_sync_group_claims":{"type":"boolean"},"ldap_role_mapping":{"type":"string"},"ldap_server_url":{"type":"string"},"ldap_base_domain_components":{"type":"string"},"ldap_server_name":{"type":"string"},"ldap_server_key":{"type":"string"},"ldap_server_certificate":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","idp_metadata_xml","saml_first_name_attribute","saml_last_name_attribute","saml_sync_group_claims","jit_enabled","trigger_login_automatically","disable_email_password_login"],"additionalProperties":false,"title":"SAML"},{"type":"object","properties":{"config_type":{"type":"string","enum":["google & saml"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"},"idp_metadata_xml":{"type":"string","minLength":1},"saml_first_name_attribute":{"type":"string","minLength":1},"saml_last_name_attribute":{"type":"string","minLength":1},"saml_groups_attribute":{"type":"string"},"saml_sync_group_claims":{"type":"boolean"},"ldap_sync_group_claims":{"type":"boolean"},"ldap_role_mapping":{"type":"string"},"ldap_server_url":{"type":"string"},"ldap_base_domain_components":{"type":"string"},"ldap_server_name":{"type":"string"},"ldap_server_key":{"type":"string"},"ldap_server_certificate":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login","idp_metadata_xml","saml_first_name_attribute","saml_last_name_attribute","saml_sync_group_claims","jit_enabled","trigger_login_automatically"],"additionalProperties":false,"title":"Google & SAML"}],"description":"This object represents the SSO configuration for an organization or space. See [docs](https://docs.retool.com/sso) for more information."},"user_attributes":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the user attribute."},"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the user attribute."},"label":{"type":"string","description":"The label of the user attribute."},"data_type":{"type":"string","enum":["string","number","json"],"description":"The data type of the user attribute. Valid types are `string`, `number`, or `json`."},"default_value":{"type":"string","nullable":true,"description":"The default value of the user attribute, assigned to all users without the attribute set."},"intercom_attribute_name":{"type":"string","nullable":true,"minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the Intercom user attribute that this attribute should be mapped to."}},"required":["id","name","label","data_type","default_value","intercom_attribute_name"],"description":"This object represents user attributes."},"role":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the role."},"organization_id":{"type":"string","description":"The id of the organization"},"name":{"type":"string","description":"The name of the role"},"description":{"type":"string","description":"The description of the role"},"is_default_role":{"type":"boolean","description":"Whether the role is the default role"},"is_legacy_role":{"type":"boolean","description":"Whether the role is a migrated legacy role"},"object_scopes":{"type":"array","items":{"type":"string"},"description":"The object scopes of the role"},"organization_scopes":{"type":"array","items":{"type":"string"},"description":"The organization scopes of the role"},"added_dependent_scopes":{"type":"array","items":{"type":"string"},"description":"The dependent scopes that were automatically added to the role"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","organization_id","name","description","is_default_role","is_legacy_role","object_scopes","organization_scopes","added_dependent_scopes","created_at","updated_at"]},"access_request":{"type":"object","properties":{"id":{"type":"number"},"status":{"type":"string","enum":["PENDING","APPROVED","DENIED"]},"legacy_id":{"type":"number"},"requesting_email":{"type":"string"},"updated_by_id":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","status","legacy_id","requesting_email","updated_by_id","created_at","updated_at"],"description":"Access Request"},"accessToken":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid of the access token."},"label":{"type":"string","minLength":1,"description":"The name of the access token."},"description":{"type":"string","nullable":true,"description":"The description of the access token."},"last4":{"type":"string","description":"Last 4 characters of the access token secret"},"owner_legacy_id":{"type":"number","description":"The legacy id of the user that created the token"},"scopes":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","label","description","last4","owner_legacy_id","scopes","created_at","updated_at"],"additionalProperties":false,"description":"This object represents an API access token."},"user_invite":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"resource":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"Resource"},"resourceConfiguration":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid for the resource configuration."},"resource":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"Resource"},"environment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"Environment"},"options":{"anyOf":[{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"azure_blob_account_name":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","auth_with_default_credential_provider_chain","azure_blob_account_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_storage_shared_key"]},"azure_storage_url":{"type":"string"},"azure_storage_account_name":{"type":"string"},"azure_storage_account_key":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","azure_storage_url","azure_storage_account_name","azure_storage_account_key"],"additionalProperties":false}]}},"required":["authentication_options"],"additionalProperties":false,"title":"Azure Blob Options"},{"type":"object","properties":{"database_options":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false},{"type":"object","properties":{"connection_string":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"additionalProperties":false}]}},"required":["database_options"],"additionalProperties":false,"title":"Postgres Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."},"use_dynamic_database_names":{"type":"boolean","description":"Enable this to allow the Database Name to be overridden by a dynamically generated value. This allows using Retool with a database that has been sharded into several different databases."},"use_dynamic_database_hosts":{"type":"boolean","description":"Enable this to allow the Database Host to be overridden by a dynamically generated value. This allows using Retool with several different databases."},"convert_mysql_dates_to_javascript":{"type":"boolean","default":true,"description":"This allows you to turn your MySQL date strings into Javascript Date objects."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"MySQL Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"Redshift Options"},{"type":"object","properties":{"account_identifier":{"type":"string"},"database_options":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"warehouse":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["name"],"additionalProperties":false},"user_role":{"type":"string"},"authentication_options":{"anyOf":[{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake"]},"username":{"type":"string"},"password":{"type":"string"}},"required":["authentication_type","username","password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake_jwt"]},"username":{"type":"string"},"private_key":{"type":"string"},"private_key_passphrase":{"type":"string"}},"required":["authentication_type","username","private_key"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"}},"required":["authentication_type","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false}]}},"required":["account_identifier","database_options","authentication_options"],"additionalProperties":false,"title":"Snowflake Options"},{"type":"object","properties":{"base_url":{"type":"string","description":"Use the absolute URL (e.g. https://example.com)."},"url_parameters":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"headers":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"extra_body_values":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Extra body values are not passed for GET or HEAD requests."},"cookies_to_forward":{"type":"array","items":{"type":"string"},"description":"You can use the pattern COOKIE_your_cookie_name in the Headers section in order to implement the double-cookie submit pattern."},"forward_all_cookies":{"type":"boolean","description":"This is useful if you have dynamic cookie names."},"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"amazon_aws_region":{"type":"string"},"amazon_access_key_id":{"type":"string"},"amazon_secret_access_key":{"type":"string"},"assume_role":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"authentication_type":{"type":"string","enum":["aws4"]},"amazon_service_name":{"type":"string"},"enable_awsv4_authentication_via_headers":{"type":"boolean"}},"required":["amazon_aws_region","amazon_access_key_id","amazon_secret_access_key","authentication_type","amazon_service_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"}},"required":["authentication_type","auth_with_default_credential_provider_chain"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["basic"]},"basic_username":{"type":"string"},"basic_password":{"type":"string"}},"required":["authentication_type","basic_username"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["digest"]},"digest_username":{"type":"string"},"digest_password":{"type":"string"}},"required":["authentication_type","digest_username","digest_password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth1"]},"oauth1_signature_method":{"anyOf":[{"type":"string","enum":["HMAC-SHA1"]},{"type":"string","enum":["HMAC-SHA256"]},{"type":"string","enum":["PLAINTEXT"]}]},"oauth1_consumer_key":{"type":"string"},"oauth1_consumer_secret":{"type":"string"},"oauth1_token_key":{"type":"string"},"oauth1_token_secret":{"type":"string"},"oauth1_realm_parameter":{"type":"string"}},"required":["authentication_type","oauth1_signature_method","oauth1_consumer_key","oauth1_consumer_secret","oauth1_token_key","oauth1_token_secret","oauth1_realm_parameter"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}],"description":"Note that custom auth is not yet supported."}},"required":["base_url"],"additionalProperties":false,"title":"Rest API Options"},{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}]},"max_receive_message_length":{"type":"string"},"max_send_message_length":{"type":"string"},"metadata":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"options":{"nullable":true},"proto_file_url":{"type":"string"},"proto_file_url_headers":{"type":"array","nullable":true,"items":{"type":"array","items":{"type":"string"}}},"proto_source":{"type":"string","enum":["url","file_system","reflection"]},"service_name":{"type":"string"},"service_names":{"type":"array","items":{"type":"string"}},"verify_session_action_enabled":{"type":"boolean"}},"additionalProperties":false,"title":"gRPC Options"},{"type":"object","properties":{},"additionalProperties":false}]},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","resource","environment","options","created_at","updated_at"],"additionalProperties":false,"description":"Resource Configuration"},"environment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"Environment"},"customComponentLibrary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"How the library will be referred to in Toolscript, and other code based usages."},"description":{"type":"string","nullable":true},"label":{"type":"string","description":"How the library will be referred to in the Retool UI. Should be human readable."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","description","label","created_at","updated_at"],"description":"Custom Component Library"},"customComponentLibraryRevision":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"version":{"type":"string"},"custom_component_library_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","version","custom_component_library_id","created_at","updated_at"],"description":"Custom Component Library Revision"},"customComponentLibraryRevisionFile":{"type":"object","properties":{"filepath":{"type":"string"},"file_contents":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["filepath","file_contents","created_at","updated_at"],"description":"Custom Component Library Revision"},"configuration_variable":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the configuration variable"},"name":{"type":"string","description":"The name of the configuration variable"},"description":{"type":"string","description":"The description of the configuration variable"},"secret":{"type":"boolean","description":"Whether the configuration variable is a secret"},"values":{"type":"array","items":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment"},"value":{"type":"string","description":"The value of the configuration variable"}},"required":["environment_id","value"]}},"default_value":{"type":"string","nullable":true,"description":"The value to use in any environment where no value was specifically set for that environment"}},"required":["id","name","secret","values","default_value"]},"observability_configuration":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the configuration."},"config":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["Sentry"],"description":"This is an enumerated field that can only take the value \"Sentry\". It identifies the provider of the observability configuration."},"dsn":{"type":"string","description":"This is a string field that represents the Data Source Name (DSN). It is the unique identifier that helps Sentry know where to send errors and exceptions."},"ca_certs":{"type":"array","items":{"type":"string"},"description":"This is an optional array of Certificate Authority (CA) certificates. These are passed as `caCerts` to Sentry's NodeClient"}},"required":["provider","dsn"]},{"type":"object","properties":{"provider":{"type":"string","enum":["Datadog"],"description":"This is an enumerated field that can only take the value \"Datadog\". It identifies the provider of the observability configuration."},"api_key":{"type":"string","description":"This is a string field that represents the API key for Datadog. This key is used to authenticate with the Datadog API."},"site":{"type":"string","enum":["US1","US3","US5","EU1","US1-FED","AP1"],"default":"US1","description":"This is a enumerated field that represents the Datadog site which the organization wants to send logs to. The default value is US1 which corresponds to the default website datadoghq.com."}},"required":["provider","api_key","site"]}],"description":"Provider-specific configuration. For Datadog, provide an API key. For Sentry, provide a DSN."},"enabled":{"type":"boolean","description":"When enabled, use this provider for apps observability monitoring."}},"required":["id","config","enabled"],"additionalProperties":false,"description":"Shape of external Observability provider config"},"usage_analytics_organization":{"type":"object","properties":{"org_id":{"type":"string","description":"The id of the organization"},"host":{"type":"string","description":"The host of the organization"},"last_active":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"}},"required":["org_id","host","last_active"],"additionalProperties":false,"description":"An organization in the context of usage analytics"},"usage":{"type":"object","properties":{"count_current_page_saves":{"type":"number","description":"The number of page saves for all the organizations within the date range"},"count_current_page_views":{"type":"number","description":"The number of page views for all the organizations within the date range"},"count_current_users":{"type":"number","description":"The total number of unique users who have performed any tracked activity in all the organizations within the date range"},"count_T30_users":{"type":"number","description":"The number of unique users who have been active over the trailing 30 days from the end date provided"},"percent_growth_page_saves":{"type":"number","description":"The percentage growth in page saves compared to the previous cycle of the same length as the provided date range"},"percent_growth_page_views":{"type":"number","description":"The percentage growth in page views compared to the previous cycle of the same length as the provided date range"},"percent_growth_users":{"type":"number","description":"The percentage growth in unique users compared to the previous cycle of the same length as the provided date range"},"percent_growth_T30_users":{"type":"number","description":"The percentage growth in T30 users (trailing 30 days users) compared to the previous cycle of the same length as the provided date range"},"daily_T30_usage":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"maa":{"type":"number","description":"The number of distinct applications that were active on the given day"},"mau":{"type":"number","description":"The number of distinct users who were active on the given day"}},"required":["day","maa","mau"]}}},"required":["count_current_page_saves","count_current_page_views","count_current_users","count_T30_users","percent_growth_page_saves","percent_growth_page_views","percent_growth_users","percent_growth_T30_users","daily_T30_usage"],"additionalProperties":false},"appSummary":{"type":"object","properties":{"app_name":{"type":"string","description":"The name of the app"},"host":{"type":"string","description":"The organization host"},"count_app_views":{"type":"number","description":"The number of views of the app in the time range specified"},"count_app_saves":{"type":"number","description":"The number of saves of the app in the time range specified"},"count_viewers":{"type":"number","description":"The number of viewers of the app in the time range specified"},"count_editors":{"type":"number","description":"The number of editors of the app in the time range specified"}},"required":["app_name","host","count_app_views","count_app_saves","count_viewers","count_editors"],"additionalProperties":false},"userTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the user task."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow this task belongs to."},"workflow_name":{"type":"string","description":"The name of the workflow."},"workflow_run_id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"task_name":{"type":"string","description":"The name of the task."},"status":{"type":"string","enum":["submitted","pending","cancelled","expired"],"description":"The current status of the task."},"context":{"type":"object","additionalProperties":{"nullable":true},"description":"Additional context for the task."},"created_at":{"type":"string","description":"The creation date time of the task."},"completed_at":{"type":"string","nullable":true,"description":"The completion date time of the task."},"task_url":{"type":"array","items":{"type":"string"},"description":"URL links to apps associated with the task."},"assignees":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"number"},"name":{"type":"string"}},"required":["type","id","name"]},"description":"The groups or users assigned to this task."},"workflow_release":{"type":"string","nullable":true,"description":"The workflow release version, if any."},"expires_at":{"type":"string","nullable":true,"description":"The expiration date time of the task, if set."},"output":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","workflow_id","workflow_name","workflow_run_id","task_name","status","context","created_at","completed_at","task_url","assignees","workflow_release","expires_at"],"description":"User-defined context for the task."},"workflowRunWithUserTask":{"type":"object","properties":{"status":{"type":"string","description":"The status of the workflow run."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow."},"id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"trigger_type":{"type":"string","description":"The type of trigger that started the workflow."},"trigger_id":{"type":"string","format":"uuid","description":"The ID of the trigger."},"created_at":{"type":"string","description":"The creation date time of the workflow run."},"user_tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the user task."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow this task belongs to."},"workflow_name":{"type":"string","description":"The name of the workflow."},"workflow_run_id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"task_name":{"type":"string","description":"The name of the task."},"status":{"type":"string","enum":["submitted","pending","cancelled","expired"],"description":"The current status of the task."},"context":{"type":"object","additionalProperties":{"nullable":true},"description":"Additional context for the task."},"created_at":{"type":"string","description":"The creation date time of the task."},"completed_at":{"type":"string","nullable":true,"description":"The completion date time of the task."},"task_url":{"type":"array","items":{"type":"string"},"description":"URL links to apps associated with the task."},"assignees":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"number"},"name":{"type":"string"}},"required":["type","id","name"]},"description":"The groups or users assigned to this task."},"workflow_release":{"type":"string","nullable":true,"description":"The workflow release version, if any."},"expires_at":{"type":"string","nullable":true,"description":"The expiration date time of the task, if set."},"output":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","workflow_id","workflow_name","workflow_run_id","task_name","status","context","created_at","completed_at","task_url","assignees","workflow_release","expires_at"],"description":"User-defined context for the task."},"description":"List of user tasks of the workfow run."}},"required":["status","workflow_id","id","trigger_type","trigger_id","created_at"],"description":"A workflow run and related data."},"organization_settings":{"type":"object","properties":{"id":{"type":"string","description":"The id of the organization."},"request_access_enabled":{"type":"boolean","description":"Whether users can request access to join the organization."},"ai_support_bot_disabled":{"type":"boolean","description":"Whether the AI support bot is disabled."},"retool_forms_disabled":{"type":"boolean","description":"Whether Retool forms are disabled."},"release_management_enabled":{"type":"boolean","description":"Whether versions and releases on apps are disabled."},"cache_queries_per_user":{"type":"boolean","nullable":true},"apply_preloaded_css_to_homepage":{"type":"boolean","description":"Whether preloaded CSS is applied to the Retool homepage."},"preloaded_css":{"type":"string","nullable":true,"description":"Custom CSS rules to apply across Retool."},"preloaded_javascript":{"type":"string","nullable":true,"description":"Preloaded JavaScript that will apply to every Retool app."},"javascript_links":{"type":"array","items":{"type":"string"},"description":"List of custom JavaScript libraries to load in every app."},"workflow_run_retention_period_mins":{"type":"number","description":"Number of minutes to store workflow run history data (up to a max of 90 days on cloud, 1 year on-prem)"},"app_owners_permissions_management":{"type":"boolean","description":"Whether app owners can manage permissions for their apps directly."},"two_factor_auth_required":{"type":"boolean","description":"Whether two-factor authentication is required for all users in the organization."},"two_factor_auth_type":{"type":"string","nullable":true,"enum":["fido2","otp"],"description":"Required 2FA type, applies to the whole organization"},"disable_new_login_ip_notification_email":{"type":"boolean","description":"Whether notification emails for logins from new IPs are disabled."}},"required":["id","request_access_enabled","ai_support_bot_disabled","retool_forms_disabled","release_management_enabled","cache_queries_per_user","apply_preloaded_css_to_homepage","preloaded_css","preloaded_javascript","javascript_links","workflow_run_retention_period_mins","app_owners_permissions_management","two_factor_auth_required","two_factor_auth_type","disable_new_login_ip_notification_email"],"additionalProperties":false,"description":"This object represents the advanced settings configured on an organization."},"analytics_integrations_settings":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["google"]},"measurement_id":{"type":"string"},"enabled":{"type":"boolean"}},"required":["type","measurement_id","enabled"]},{"type":"object","properties":{"type":{"type":"string","enum":["segment"]},"host":{"type":"string","enum":["US","EU"]},"api_key":{"type":"string"},"enabled":{"type":"boolean"}},"required":["type","host","api_key","enabled"]},{"type":"object","properties":{"type":{"type":"string","enum":["stdout"]},"enabled":{"type":"boolean"}},"required":["type","enabled"]}]},"workflow":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The Workflow ID."},"name":{"type":"string","description":"The name of the Workflow"},"description":{"type":"string","nullable":true,"description":"The description of the Workflow"},"crontab":{"type":"string","nullable":true,"description":"The cron tab of the Workflow"},"timezone":{"type":"string","nullable":true,"description":"The timezone of the Workflow"},"is_enabled":{"type":"boolean","description":"Whether the Workflow is enabled"},"folder_id":{"type":"string","description":"The folder ID of the Workflow"},"protected":{"type":"boolean","description":"Whether the Workflow is protected"},"created_by":{"type":"number","nullable":true,"description":"The user ID of the creator of the Workflow"},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","name","description","crontab","timezone","is_enabled","folder_id","protected","created_by","created_at","updated_at"],"description":"This object represents a Workflow."},"ip_allowlist":{"type":"object","properties":{"ipAddresses":{"type":"object","properties":{"us-west-2":{"type":"string"},"eu-central-1":{"type":"string"},"ap-southeast-1":{"type":"string"}},"required":["us-west-2","eu-central-1","ap-southeast-1"]}},"required":["ipAddresses"],"additionalProperties":false}},"parameters":{},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{userId}":{"get":{"summary":"Get a user","description":"Returns the specified user. Requires the `users:read` scope.","tags":["Users"],"parameters":[{"schema":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"boolean","nullable":true,"default":false,"description":"Whether to include a list of groups for which this user is a member."},"required":false,"name":"includeGroups","in":"query"}],"responses":{"200":{"description":"The requested user.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The ID of the user.","example":"user_1234"},"legacy_id":{"type":"number","description":"The legacy ID of the user."},"email":{"type":"string","format":"email","description":"The email of the user."},"active":{"type":"boolean","description":"Whether the user is active or not."},"created_at":{"type":"string","format":"date-time","description":"The timestamp when the user was created.","example":"2019-02-08T11:45:48.899Z"},"last_active":{"type":"string","nullable":true,"format":"date-time","description":"The timestamp when the user was last active.","example":"2019-02-08T11:45:48.899Z"},"first_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The first name of the user."},"last_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The last name of the user."},"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"Custom metadata associated with the user."},"is_admin":{"type":"boolean","description":"Whether the user is an admin or not."},"user_type":{"type":"string","enum":["default","mobile","embed"],"description":"The user type."},"two_factor_auth_enabled":{"type":"boolean","description":"Whether two-factor authentication is enabled for this user."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same as `legacy_id` but will change in the future."},"name":{"type":"string","description":"The name of the group."}},"required":["legacy_id","id","name"]},"description":"The groups that the user is part of. Only included when `includeGroups` query parameter is `true`."}},"required":["id","legacy_id","email","active","created_at","last_active","first_name","last_name","metadata","is_admin","user_type","two_factor_auth_enabled"],"additionalProperties":false,"description":"This object represents a user."}},"required":["success","data"],"description":"A single user."}}}}}},"delete":{"summary":"Delete a user","description":"Disables a user from the organization. Requires the `users:write` scope.","tags":["Users"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"required":true,"name":"userId","in":"path"}],"responses":{"204":{"description":"The user has been successfully disabled."}}},"patch":{"summary":"Update a user","description":"Updates a user and returns the updated user. Requires the `users:write` scope.","tags":["Users"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"required":true,"name":"userId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"op":{"type":"string","enum":["add"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Add Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["remove"]},"path":{"type":"string"}},"required":["op","path"],"title":"Remove Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"}]},"description":"A list of operations to apply to the user. See the [JSON PATCH specification](https://tools.ietf.org/html/rfc6902) for more details."}},"required":["operations"],"additionalProperties":false,"description":"The body of a request to update a user."}}}},"responses":{"200":{"description":"The updated user.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The ID of the user.","example":"user_1234"},"legacy_id":{"type":"number","description":"The legacy ID of the user."},"email":{"type":"string","format":"email","description":"The email of the user."},"active":{"type":"boolean","description":"Whether the user is active or not."},"created_at":{"type":"string","format":"date-time","description":"The timestamp when the user was created.","example":"2019-02-08T11:45:48.899Z"},"last_active":{"type":"string","nullable":true,"format":"date-time","description":"The timestamp when the user was last active.","example":"2019-02-08T11:45:48.899Z"},"first_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The first name of the user."},"last_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The last name of the user."},"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"Custom metadata associated with the user."},"is_admin":{"type":"boolean","description":"Whether the user is an admin or not."},"user_type":{"type":"string","enum":["default","mobile","embed"],"description":"The user type."},"two_factor_auth_enabled":{"type":"boolean","description":"Whether two-factor authentication is enabled for this user."}},"required":["id","legacy_id","email","active","created_at","last_active","first_name","last_name","metadata","is_admin","user_type","two_factor_auth_enabled"],"additionalProperties":false,"description":"The updated user"}},"required":["success","data"]}}}}}}},"/users":{"get":{"summary":"List users","description":"Returns a list of users. Requires the `users:read` scope.","tags":["Users"],"parameters":[{"schema":{"type":"string","description":"Filter users by email address."},"required":false,"name":"email","in":"query"},{"schema":{"type":"string","description":"Filter users by first name."},"required":false,"name":"first_name","in":"query"},{"schema":{"type":"string","description":"Filter users by last name."},"required":false,"name":"last_name","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of items to return per page. If not provided, all items are returned. When provided, enables pagination and the response will include next_token for retrieving subsequent pages. Valid range: 1-100.","example":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor token for retrieving the next page of results. Obtained from the next_token field of a previous paginated response. Only valid when the limit parameter is also provided.","example":"eyJsYXN0SWQiOjEyM30..."},"required":false,"name":"next_token","in":"query"}],"responses":{"200":{"description":"A list of matching users.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The ID of the user.","example":"user_1234"},"legacy_id":{"type":"number","description":"The legacy ID of the user."},"email":{"type":"string","format":"email","description":"The email of the user."},"active":{"type":"boolean","description":"Whether the user is active or not."},"created_at":{"type":"string","format":"date-time","description":"The timestamp when the user was created.","example":"2019-02-08T11:45:48.899Z"},"last_active":{"type":"string","nullable":true,"format":"date-time","description":"The timestamp when the user was last active.","example":"2019-02-08T11:45:48.899Z"},"first_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The first name of the user."},"last_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The last name of the user."},"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"Custom metadata associated with the user."},"is_admin":{"type":"boolean","description":"Whether the user is an admin or not."},"user_type":{"type":"string","enum":["default","mobile","embed"],"description":"The user type."},"two_factor_auth_enabled":{"type":"boolean","description":"Whether two-factor authentication is enabled for this user."}},"required":["id","legacy_id","email","active","created_at","last_active","first_name","last_name","metadata","is_admin","user_type","two_factor_auth_enabled"],"additionalProperties":false,"description":"This object represents a user."},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A paginated list of users."}}}}}},"post":{"summary":"Create a user","description":"Creates a user and returns the created user. Requires the `users:write` scope.","tags":["Users"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"The email of the user."},"first_name":{"type":"string","minLength":1,"description":"The first name of the user."},"last_name":{"type":"string","minLength":1,"description":"The last name of the user."},"active":{"type":"boolean","default":true,"description":"Whether the user is enabled or not. Defaults to `true`."},"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"Custom metadata associated with the user. Defaults to an empty object."},"user_type":{"type":"string","enum":["default","mobile","embed"],"default":"default","description":"The user type. Defaults to `default`."}},"required":["email","first_name","last_name"],"additionalProperties":false,"description":"Body of request to create a user"}}}},"responses":{"200":{"description":"The created user.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The ID of the user.","example":"user_1234"},"legacy_id":{"type":"number","description":"The legacy ID of the user."},"email":{"type":"string","format":"email","description":"The email of the user."},"active":{"type":"boolean","description":"Whether the user is active or not."},"created_at":{"type":"string","format":"date-time","description":"The timestamp when the user was created.","example":"2019-02-08T11:45:48.899Z"},"last_active":{"type":"string","nullable":true,"format":"date-time","description":"The timestamp when the user was last active.","example":"2019-02-08T11:45:48.899Z"},"first_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The first name of the user."},"last_name":{"type":"string","nullable":true,"minLength":1,"maxLength":36,"description":"The last name of the user."},"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"Custom metadata associated with the user."},"is_admin":{"type":"boolean","description":"Whether the user is an admin or not."},"user_type":{"type":"string","enum":["default","mobile","embed"],"description":"The user type."},"two_factor_auth_enabled":{"type":"boolean","description":"Whether two-factor authentication is enabled for this user."}},"required":["id","legacy_id","email","active","created_at","last_active","first_name","last_name","metadata","is_admin","user_type","two_factor_auth_enabled"],"additionalProperties":false,"description":"The created user"}},"required":["success","data"]}}}}}}},"/users/reset2fa/{userId}":{"put":{"summary":"Reset a user's two-factor authentication","description":"Disables all two-factor authentication methods for the specified user. Requires the `users:write` scope.","tags":["Users"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"required":true,"name":"userId","in":"path"}],"responses":{"204":{"description":"Two-factor authentication has been successfully reset."}}}},"/users/{userId}/logout":{"post":{"summary":"Log out a user","description":"Terminates all active Retool sessions for the specified user. Optionally initiates an RP-initiated logout with the configured OIDC SSO provider by returning an `sso_logout_url` that the caller must redirect the user's browser to. Requires the `users:write` scope.","tags":["Users"],"parameters":[{"schema":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"required":true,"name":"userId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sso_logout":{"type":"boolean","default":false,"description":"If true, also initiates an RP-initiated logout with the configured SSO provider."},"post_logout_redirect_uri":{"type":"string","format":"uri","description":"URI to redirect the user to after SSO logout completes. Only valid when sso_logout is true. Must be registered in your SSO provider."}},"additionalProperties":false,"description":"Body of request to log out a user."}}}},"responses":{"200":{"description":"The user has been logged out.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"sso_logout":{"type":"boolean","description":"Whether SSO logout was initiated."},"sso_logout_url":{"type":"string","description":"URL to redirect the user browser to for IdP session logout."},"warning":{"type":"string","description":"Warning message if SSO logout could not be performed."}},"required":["sso_logout"],"additionalProperties":false,"description":"Response data from logging out a user."}},"required":["success","data"]}}}}}}},"/users/{userId}/user_attributes":{"post":{"summary":"Create or update a user attribute","description":"Creates or updates a user attribute and returns the updated user metadata. Requires the `users:write` or `user_attributes:write` scope.","tags":["User Attributes"],"x-badges":[{"color":"green","label":"Business"},{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"required":true,"name":"userId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user attribute. Must match an existing attribute exactly."},"value":{"type":"string","nullable":true,"description":"The value of the user attribute."}},"required":["name","value"],"additionalProperties":false,"description":"The body of a request to add a user attribute to a user or update an existing user attribute."}}}},"responses":{"200":{"description":"The updated user metadata.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"The updated user metadata, containing the new attribute value."}},"required":["metadata"]}},"required":["success","data"]}}}}}}},"/users/{userId}/user_attributes/{attributeName}":{"delete":{"summary":"Delete a user attribute","description":"Deletes a user attribute and returns the updated user metadata. Requires the `users:write` or `user_attributes:write` scope.","tags":["User Attributes"],"x-badges":[{"color":"green","label":"Business"},{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","description":"The name of the user attribute to delete."},"required":true,"name":"attributeName","in":"path"}],"responses":{"200":{"description":"The updated user metadata.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"The updated user metadata, without the deleted attribute."}},"required":["metadata"]}},"required":["success","data"]}}}}}}},"/groups/{groupId}":{"delete":{"summary":"Delete a group","description":"Deletes the specified group. Requires the `groups:write` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The group's ID number."},"required":true,"name":"groupId","in":"path"}],"responses":{"204":{"description":"The group has been successfully deleted."}}},"get":{"summary":"Get a group","description":"Returns the specified group. Requires the `groups:read` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The group's ID number."},"required":true,"name":"groupId","in":"path"},{"schema":{"type":"boolean","nullable":true,"description":"Whether to exclude disabled users from the members list in the response."},"required":false,"name":"excludeDisabledUsers","in":"query"}],"responses":{"200":{"description":"The requested group.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"The requested group."}},"required":["success","data"]}}}}}},"patch":{"summary":"Update a group","description":"Updates a group in an organization using JSON Patch (RFC 6902) and returns the updated group. Requires the `groups:write` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The group's ID number."},"required":true,"name":"groupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"op":{"type":"string","enum":["add"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Add Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["remove"]},"path":{"type":"string"}},"required":["op","path"],"title":"Remove Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"}]},"description":"A list of operations to apply to the group. See the [JSON PATCH specification](https://tools.ietf.org/html/rfc6902) for more details."}},"required":["operations"],"additionalProperties":false,"description":"The body of a request to update a group. "}}}},"responses":{"200":{"description":"The updated group.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"The updated group."}},"required":["success","data"]}}}}}},"put":{"summary":"Replace a group","description":"Replaces the entire group and returns the updated group. Requires the `groups:write` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The group's ID number."},"required":true,"name":"groupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","is_group_admin"]},"description":"Users to add to the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}}}}}},"responses":{"200":{"description":"The updated group.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"The updated group."}},"required":["success","data"]}}}}}}},"/groups":{"get":{"summary":"List groups","description":"Returns a list of permission groups for an organization or space. Requires the `groups:read` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of groups.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"This object represents a permission group. A permission group is a list of users by which to restrict access. You add users to one or more groups and then configure the group's level of access. This applies the same permissions to all group members. See https://docs.retool.com/org-users/concepts/permission-groups or more information."},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A paginated list of groups."}}}}}},"post":{"summary":"Create a group","description":"Creates a group and returns the created group. Requires the `groups:write` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","is_group_admin"]},"description":"Users to add to the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["name"]}}}},"responses":{"200":{"description":"The created group.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"The created group."}},"required":["success","data"]}}}}}}},"/groups/{groupId}/user_invites":{"post":{"summary":"Add user invites to a group","description":"Adds user invites to the specified group and returns the updated group. Requires the `groups:write` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The group's ID number."},"required":true,"name":"groupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userInviteIds":{"type":"array","items":{"type":"number"}}},"required":["userInviteIds"],"description":"User invites to add to the group."}}}},"responses":{"200":{"description":"The updated group.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"The updated group."}},"required":["success","data"]}}}}}}},"/groups/{groupId}/members":{"post":{"summary":"Add users to a group","description":"Adds specified user(s) to a group and returns the updated group. Can optionally set or unset group admins by using the `is_group_admin` property. If existing members are passed in, group admin status will be updated. You cannot remove members using this endpoint. Requires the `groups:write` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The group's ID number."},"required":true,"name":"groupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","is_group_admin"]},"description":"Users to add to the group."}},"required":["members"]}}}},"responses":{"200":{"description":"The updated group.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"The updated group."}},"required":["success","data"]}}}}}}},"/groups/{groupId}/members/{userId}":{"delete":{"summary":"Remove a user from a group","description":"Removes the specified user from the group and returns the updated group. Requires the `groups:write` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The group's ID number."},"required":true,"name":"groupId","in":"path"},{"schema":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"The updated group.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"The ID of the group. Currently this is the same legacy_id but will change in the future."},"legacy_id":{"type":"number","nullable":true,"description":"The legacy ID of the group."},"name":{"type":"string","description":"The name of the group."},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"},"email":{"type":"string","format":"email","description":"The email of the user."},"is_group_admin":{"type":"boolean","default":false,"description":"Whether the user is a group admin."}},"required":["id","email","is_group_admin"]},"description":"The members of the group."},"universal_app_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal app access level for the group. This denotes the access level that this group has for all apps."},"universal_resource_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal resource access level for the group. This denotes the access level that this group has for all resources."},"universal_workflow_access":{"type":"string","enum":["none","use","edit","own"],"description":"The universal workflow access level for the group. This denotes the access level that this group has for all workflows."},"universal_query_library_access":{"type":"string","enum":["none","use","edit"],"description":"Level of access that the group has to the Query Library."},"user_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"A list of user invites that will be added to the group."},"user_list_access":{"type":"boolean","description":"Whether the group has access to the user list."},"audit_log_access":{"type":"boolean","description":"Whether the group has access to the audit log."},"unpublished_release_access":{"type":"boolean","description":"Whether the group has access to unpublished releases."},"usage_analytics_access":{"type":"boolean","description":"Whether the group has access to usage analytics."},"theme_access":{"type":"boolean","description":"Whether the group has access to edit themes."},"account_details_access":{"type":"boolean","description":"Whether the group has access to account details."},"landing_page_app_id":{"type":"string","nullable":true,"format":"uuid","description":"The app ID of the landing page."},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","members","universal_app_access","universal_resource_access","universal_workflow_access","universal_query_library_access","user_invites","user_list_access","audit_log_access","unpublished_release_access","usage_analytics_access","theme_access","account_details_access","landing_page_app_id","created_at","updated_at"],"description":"The updated group."}},"required":["success","data"]}}}}}}},"/groups/{groupId}/user_invites/{userInviteId}":{"delete":{"summary":"Remove a user invite from a group","description":"Removes the specified user invite from the group. Requires the `groups:write` scope.","tags":["Groups"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The group's ID number."},"required":true,"name":"groupId","in":"path"},{"schema":{"type":"string","pattern":"^\\d+$","description":"The user invite's ID number."},"required":true,"name":"userInviteId","in":"path"}],"responses":{"204":{"description":"The user invite has been successfully removed from the group.","content":{}}}}},"/folders":{"get":{"summary":"List folders","description":"Returns a list of folders. Requires the `folders:read` scope.","tags":["Folders"],"responses":{"200":{"description":"A paginated list of folders.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder. Currently this is the same as legacy_id but will be different in the future."},"legacy_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The legacy id of the folder."},"name":{"type":"string","description":"The name of the folder"},"parent_folder_id":{"type":"string","nullable":true,"pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the parent folder"},"is_system_folder":{"type":"boolean","description":"Whether the folder is a system folder"},"folder_type":{"type":"string","enum":["app","workflow","resource","agent","library"],"description":"The type of the folder"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","is_system_folder","folder_type","created_at","updated_at"],"description":"Folders"},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"]}}}}}},"post":{"summary":"Create a folder","description":"Creates a folder and returns the created folder. Requires the `folders:write` scope.","tags":["Folders"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the folder."},"parent_folder_id":{"type":"string","nullable":true,"pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The ID of the parent folder."},"folder_type":{"type":"string","enum":["app","workflow","resource","agent","library"],"description":"The type of the folder."}},"required":["name","folder_type"]}}}},"responses":{"200":{"description":"The created folder.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder. Currently this is the same as legacy_id but will be different in the future."},"legacy_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The legacy id of the folder."},"name":{"type":"string","description":"The name of the folder"},"parent_folder_id":{"type":"string","nullable":true,"pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the parent folder"},"is_system_folder":{"type":"boolean","description":"Whether the folder is a system folder"},"folder_type":{"type":"string","enum":["app","workflow","resource","agent","library"],"description":"The type of the folder"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","is_system_folder","folder_type","created_at","updated_at"],"description":"The created folder."}},"required":["success","data"]}}}},"409":{"description":"Folder with the same name already exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"Error with folder structure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/folders/{folderId}":{"get":{"summary":"Get a folder","description":"Returns the specified folder. Requires the `folders:read` scope.","tags":["Folders"],"parameters":[{"schema":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"required":true,"name":"folderId","in":"path"}],"responses":{"200":{"description":"The requested folder.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder. Currently this is the same as legacy_id but will be different in the future."},"legacy_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The legacy id of the folder."},"name":{"type":"string","description":"The name of the folder"},"parent_folder_id":{"type":"string","nullable":true,"pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the parent folder"},"is_system_folder":{"type":"boolean","description":"Whether the folder is a system folder"},"folder_type":{"type":"string","enum":["app","workflow","resource","agent","library"],"description":"The type of the folder"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","is_system_folder","folder_type","created_at","updated_at"],"description":"The requested folder."}},"required":["success","data"]}}}},"404":{"description":"Folder not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"delete":{"summary":"Delete a folder","description":"Deletes the specified folder. Requires the `folders:write` scope.","tags":["Folders"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"required":true,"name":"folderId","in":"path"},{"schema":{"type":"boolean","nullable":true,"description":"Should the folder's contents also be deleted? (Only supported for app folders.)"},"required":false,"name":"recursive","in":"query"}],"responses":{"204":{"description":"The folder has been successfully deleted."},"404":{"description":"Folder not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"patch":{"summary":"Update a folder","description":"Updates a folder and returns the updated folder. Requires the `folders:write` scope.","tags":["Folders"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"required":true,"name":"folderId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"op":{"type":"string","enum":["add"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Add Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["remove"]},"path":{"type":"string"}},"required":["op","path"],"title":"Remove Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["move"]},"path":{"type":"string"},"from":{"type":"string"}},"required":["op","path","from"],"title":"Move Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["copy"]},"path":{"type":"string"},"from":{"type":"string"}},"required":["op","path","from"],"title":"Copy Operation"},{"type":"object","properties":{"op":{"type":"string","enum":["test"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Test Operation"}]},"description":"A list of operations to apply to the folder. See https://tools.ietf.org/html/rfc6902 for details."}},"required":["operations"],"additionalProperties":false}}}},"responses":{"200":{"description":"The updated folder.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder. Currently this is the same as legacy_id but will be different in the future."},"legacy_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The legacy id of the folder."},"name":{"type":"string","description":"The name of the folder"},"parent_folder_id":{"type":"string","nullable":true,"pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the parent folder"},"is_system_folder":{"type":"boolean","description":"Whether the folder is a system folder"},"folder_type":{"type":"string","enum":["app","workflow","resource","agent","library"],"description":"The type of the folder"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","legacy_id","name","is_system_folder","folder_type","created_at","updated_at"],"description":"The updated folder."}},"required":["success","data"]}}}},"404":{"description":"Folder not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"409":{"description":"Folder with the same name already exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"Error with folder structure.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/spaces":{"post":{"summary":"Create a space","description":"Creates a space and returns the created space. Requires the `spaces:write` scope.","tags":["Spaces"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1,"description":"The domain of the space. On Retool Cloud, specify subdomain of the space instead."},"options":{"type":"object","properties":{"copy_sso_settings":{"type":"boolean","description":"Copy SSO settings from the admin space."},"copy_branding_and_themes_settings":{"type":"boolean","description":"Copy Branding and Themes settings from the admin space."},"users_to_copy_as_admins":{"type":"array","items":{"type":"string"},"description":"List of emails of users from the admin space that need to be added to the new space as admins."},"create_admin_user":{"type":"boolean","description":"Create an admin user in the new space for the creator instead of just sending out an invite."}}}},"required":["name","domain"],"additionalProperties":false}}}},"responses":{"200":{"description":"The created space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the space."},"name":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","name","domain","created_at","updated_at"],"additionalProperties":false,"description":"The created space"}},"required":["success","data"]}}}}}},"get":{"summary":"List spaces","description":"Returns a list of child spaces within the current space. Requires the `spaces:read` scope.","tags":["Spaces"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of spaces.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the space."},"name":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","name","domain","created_at","updated_at"],"additionalProperties":false,"description":"List of spaces"},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"]}}}}}}},"/spaces/{spaceId}":{"get":{"summary":"Get a space","description":"Returns the specified space. Requires the `spaces:read` scope.","tags":["Spaces"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"spaceId","in":"path"}],"responses":{"200":{"description":"The requested space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the space."},"name":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","name","domain","created_at","updated_at"],"additionalProperties":false,"description":"The requested space"}},"required":["success","data"]}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"put":{"summary":"Update a space","description":"Updates the specified space and returns the updated space. Requires the `spaces:write` scope.","tags":["Spaces"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"spaceId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the space."},"domain":{"type":"string","minLength":1,"description":"The domain of the space. On Retool Cloud, specify subdomain of the space instead."}},"required":["name","domain"]}}}},"responses":{"200":{"description":"The updated space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the space."},"name":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","name","domain","created_at","updated_at"],"additionalProperties":false,"description":"Updated space"}},"required":["success","data"]}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"Invalid space domain.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"delete":{"summary":"Delete a space","description":"Deletes the specified space. Requires the `spaces:write` scope.","tags":["Spaces"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The id of the space to delete."},"required":true,"name":"spaceId","in":"path"}],"responses":{"204":{"description":"The space has been successfully deleted."},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/spaces/copyElements":{"post":{"summary":"Copy elements to another space","description":"Copies apps, queries, resources, and workflows from one space to another and returns the result. Requires the `spaces:write` scope.","tags":["Spaces"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"resource_ids":{"type":"array","items":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string","format":"uuid"}],"description":"The uuid for the resource."},"description":"List of resource configuration uuids to copy to the new space."},"query_library_query_ids":{"type":"array","items":{"type":"string","format":"uuid","description":"The Query Library Query ID."},"description":"List of query library query uuids to copy to the new space."},"app_ids":{"type":"array","items":{"type":"string","format":"uuid","description":"The app ID."},"description":"List of app or module uuids to copy to the new space."},"workflow_ids":{"type":"array","items":{"type":"string","format":"uuid","description":"The Workflow ID."},"description":"List of workflow ids to copy to the new space."},"destination_space_id":{"type":"string","description":"The id of the space to copy the elements to."}},"required":["resource_ids","query_library_query_ids","app_ids","workflow_ids","destination_space_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"The copied elements.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"resource_ids":{"type":"array","items":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string","format":"uuid"}],"description":"The uuid for the resource."},"description":"The uuids of the copied resources."},"query_library_query_ids":{"type":"array","items":{"type":"string","format":"uuid","description":"The Query Library Query ID."},"description":"The uuids of the copied query library queries."},"app_ids":{"type":"array","items":{"type":"string","format":"uuid","description":"The app ID."},"description":"The uuids of the copied app or modules."},"workflow_ids":{"type":"array","items":{"type":"string","format":"uuid","description":"The Workflow ID."},"description":"The uuids of the copied workflows."}},"required":["resource_ids","query_library_query_ids","app_ids","workflow_ids"],"description":"The copied elements"}},"required":["success","data"],"description":"Elements copied successfully"}}}},"404":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/config":{"get":{"summary":"Get source control configuration","description":"Returns the source control configuration for the organization or space. Requires the `source_control:read` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"The source control configuration for the organization or space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"anyOf":[{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["App"]},"app_id":{"type":"string","description":"The GitHub App ID."},"installation_id":{"type":"string","description":"The GitHub installation ID. This can be found at the end of the installation URL."},"private_key":{"type":"string","description":"The base64-encoded private key."},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","app_id","installation_id","private_key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Personal"]},"personal_access_token":{"type":"string","description":"The GitHub project access token to authenticate to the GitHub API.\t"},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","personal_access_token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["GitHub"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitHub"},{"type":"object","properties":{"config":{"type":"object","properties":{"project_id":{"type":"number","description":"The numerical project ID for your GitLab project. Find this ID listed below the project's name on the project's homepage."},"url":{"type":"string","description":"Your base GitLab URL. On GitLab Cloud, this is always https://gitlab.com. On GitLab self-managed, this is the URL where your instance is hosted."},"project_access_token":{"type":"string","description":"The GitLab project access token to authenticate to the GitLab API."}},"required":["project_id","url","project_access_token"],"additionalProperties":false},"provider":{"type":"string","enum":["GitLab"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitLab"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"The domain used to access your self-hosted AWS CodeCommit instance."},"region":{"type":"string","description":"The region of the CodeCommit repository."},"access_key_id":{"type":"string","description":"The Access key ID from your AWSCodeCommitFullAccess policy."},"secret_access_key":{"type":"string","description":"The Secret Access Key from your AWSCodeCommitFullAccess policy"},"https_username":{"type":"string","description":"The HTTPS username from your security credentials."},"https_password":{"type":"string","description":"The HTTPS password from your security credentials."}},"required":["url","region","access_key_id","secret_access_key","https_username","https_password"],"additionalProperties":false},"provider":{"type":"string","enum":["AWS CodeCommit"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"AWS CodeCommit"},{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["AppPassword"]},"username":{"type":"string","description":"Your Bitbucket username."},"app_password":{"type":"string","description":"Your Bitbucket app password."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","username","app_password"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Token"]},"token":{"type":"string","description":"Your Bitbucket API token."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["Bitbucket"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Bitbucket"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"Your base Azure URL. For Azure Cloud, this is always http://dev.azure.com. For Azure self-managed, this is the URL where your instance is hosted."},"project":{"type":"string","description":"Your new or existing Azure DevOps project."},"user":{"type":"string","description":"The Azure Repos username."},"personal_access_token":{"type":"string","description":"The Azure project access tokens to authenticate to the Azure API."},"use_basic_auth":{"type":"boolean","description":"Set this to true if you are using self-hosted Azure Repos."}},"required":["url","project","user","personal_access_token","use_basic_auth"],"additionalProperties":false},"provider":{"type":"string","enum":["Azure Repos"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Azure Repos"}],"description":"Source Control Provider Config"}},"required":["success","data"],"additionalProperties":false}}}}}},"post":{"summary":"Create source control configuration","description":"Creates source control configuration for the organization or space and returns the created configuration. Returns an error if a configuration is already set. Requires the `source_control:write` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["App"]},"app_id":{"type":"string","description":"The GitHub App ID."},"installation_id":{"type":"string","description":"The GitHub installation ID. This can be found at the end of the installation URL."},"private_key":{"type":"string","description":"The base64-encoded private key."},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","app_id","installation_id","private_key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Personal"]},"personal_access_token":{"type":"string","description":"The GitHub project access token to authenticate to the GitHub API.\t"},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","personal_access_token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["GitHub"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitHub"},{"type":"object","properties":{"config":{"type":"object","properties":{"project_id":{"type":"number","description":"The numerical project ID for your GitLab project. Find this ID listed below the project's name on the project's homepage."},"url":{"type":"string","description":"Your base GitLab URL. On GitLab Cloud, this is always https://gitlab.com. On GitLab self-managed, this is the URL where your instance is hosted."},"project_access_token":{"type":"string","description":"The GitLab project access token to authenticate to the GitLab API."}},"required":["project_id","url","project_access_token"],"additionalProperties":false},"provider":{"type":"string","enum":["GitLab"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitLab"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"The domain used to access your self-hosted AWS CodeCommit instance."},"region":{"type":"string","description":"The region of the CodeCommit repository."},"access_key_id":{"type":"string","description":"The Access key ID from your AWSCodeCommitFullAccess policy."},"secret_access_key":{"type":"string","description":"The Secret Access Key from your AWSCodeCommitFullAccess policy"},"https_username":{"type":"string","description":"The HTTPS username from your security credentials."},"https_password":{"type":"string","description":"The HTTPS password from your security credentials."}},"required":["url","region","access_key_id","secret_access_key","https_username","https_password"],"additionalProperties":false},"provider":{"type":"string","enum":["AWS CodeCommit"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"AWS CodeCommit"},{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["AppPassword"]},"username":{"type":"string","description":"Your Bitbucket username."},"app_password":{"type":"string","description":"Your Bitbucket app password."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","username","app_password"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Token"]},"token":{"type":"string","description":"Your Bitbucket API token."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["Bitbucket"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Bitbucket"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"Your base Azure URL. For Azure Cloud, this is always http://dev.azure.com. For Azure self-managed, this is the URL where your instance is hosted."},"project":{"type":"string","description":"Your new or existing Azure DevOps project."},"user":{"type":"string","description":"The Azure Repos username."},"personal_access_token":{"type":"string","description":"The Azure project access tokens to authenticate to the Azure API."},"use_basic_auth":{"type":"boolean","description":"Set this to true if you are using self-hosted Azure Repos."}},"required":["url","project","user","personal_access_token","use_basic_auth"],"additionalProperties":false},"provider":{"type":"string","enum":["Azure Repos"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Azure Repos"}],"description":"This object represents the Source Control provider configuration for the organization or space. See [docs](https://docs.retool.com/source-control) for more information."}},"required":["config"],"additionalProperties":false,"description":"Shape of Source Control provider config request"}}}},"responses":{"200":{"description":"The created source control configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"anyOf":[{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["App"]},"app_id":{"type":"string","description":"The GitHub App ID."},"installation_id":{"type":"string","description":"The GitHub installation ID. This can be found at the end of the installation URL."},"private_key":{"type":"string","description":"The base64-encoded private key."},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","app_id","installation_id","private_key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Personal"]},"personal_access_token":{"type":"string","description":"The GitHub project access token to authenticate to the GitHub API.\t"},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","personal_access_token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["GitHub"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitHub"},{"type":"object","properties":{"config":{"type":"object","properties":{"project_id":{"type":"number","description":"The numerical project ID for your GitLab project. Find this ID listed below the project's name on the project's homepage."},"url":{"type":"string","description":"Your base GitLab URL. On GitLab Cloud, this is always https://gitlab.com. On GitLab self-managed, this is the URL where your instance is hosted."},"project_access_token":{"type":"string","description":"The GitLab project access token to authenticate to the GitLab API."}},"required":["project_id","url","project_access_token"],"additionalProperties":false},"provider":{"type":"string","enum":["GitLab"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitLab"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"The domain used to access your self-hosted AWS CodeCommit instance."},"region":{"type":"string","description":"The region of the CodeCommit repository."},"access_key_id":{"type":"string","description":"The Access key ID from your AWSCodeCommitFullAccess policy."},"secret_access_key":{"type":"string","description":"The Secret Access Key from your AWSCodeCommitFullAccess policy"},"https_username":{"type":"string","description":"The HTTPS username from your security credentials."},"https_password":{"type":"string","description":"The HTTPS password from your security credentials."}},"required":["url","region","access_key_id","secret_access_key","https_username","https_password"],"additionalProperties":false},"provider":{"type":"string","enum":["AWS CodeCommit"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"AWS CodeCommit"},{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["AppPassword"]},"username":{"type":"string","description":"Your Bitbucket username."},"app_password":{"type":"string","description":"Your Bitbucket app password."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","username","app_password"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Token"]},"token":{"type":"string","description":"Your Bitbucket API token."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["Bitbucket"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Bitbucket"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"Your base Azure URL. For Azure Cloud, this is always http://dev.azure.com. For Azure self-managed, this is the URL where your instance is hosted."},"project":{"type":"string","description":"Your new or existing Azure DevOps project."},"user":{"type":"string","description":"The Azure Repos username."},"personal_access_token":{"type":"string","description":"The Azure project access tokens to authenticate to the Azure API."},"use_basic_auth":{"type":"boolean","description":"Set this to true if you are using self-hosted Azure Repos."}},"required":["url","project","user","personal_access_token","use_basic_auth"],"additionalProperties":false},"provider":{"type":"string","enum":["Azure Repos"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Azure Repos"}],"description":"Created Source Control Provider Config"}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"409":{"description":"Configuration already exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"put":{"summary":"Set source control configuration","description":"Creates or updates the source control configuration for the organization or space. Overwrites any existing configuration. Requires the `source_control:write` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["App"]},"app_id":{"type":"string","description":"The GitHub App ID."},"installation_id":{"type":"string","description":"The GitHub installation ID. This can be found at the end of the installation URL."},"private_key":{"type":"string","description":"The base64-encoded private key."},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","app_id","installation_id","private_key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Personal"]},"personal_access_token":{"type":"string","description":"The GitHub project access token to authenticate to the GitHub API.\t"},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","personal_access_token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["GitHub"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitHub"},{"type":"object","properties":{"config":{"type":"object","properties":{"project_id":{"type":"number","description":"The numerical project ID for your GitLab project. Find this ID listed below the project's name on the project's homepage."},"url":{"type":"string","description":"Your base GitLab URL. On GitLab Cloud, this is always https://gitlab.com. On GitLab self-managed, this is the URL where your instance is hosted."},"project_access_token":{"type":"string","description":"The GitLab project access token to authenticate to the GitLab API."}},"required":["project_id","url","project_access_token"],"additionalProperties":false},"provider":{"type":"string","enum":["GitLab"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitLab"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"The domain used to access your self-hosted AWS CodeCommit instance."},"region":{"type":"string","description":"The region of the CodeCommit repository."},"access_key_id":{"type":"string","description":"The Access key ID from your AWSCodeCommitFullAccess policy."},"secret_access_key":{"type":"string","description":"The Secret Access Key from your AWSCodeCommitFullAccess policy"},"https_username":{"type":"string","description":"The HTTPS username from your security credentials."},"https_password":{"type":"string","description":"The HTTPS password from your security credentials."}},"required":["url","region","access_key_id","secret_access_key","https_username","https_password"],"additionalProperties":false},"provider":{"type":"string","enum":["AWS CodeCommit"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"AWS CodeCommit"},{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["AppPassword"]},"username":{"type":"string","description":"Your Bitbucket username."},"app_password":{"type":"string","description":"Your Bitbucket app password."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","username","app_password"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Token"]},"token":{"type":"string","description":"Your Bitbucket API token."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["Bitbucket"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Bitbucket"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"Your base Azure URL. For Azure Cloud, this is always http://dev.azure.com. For Azure self-managed, this is the URL where your instance is hosted."},"project":{"type":"string","description":"Your new or existing Azure DevOps project."},"user":{"type":"string","description":"The Azure Repos username."},"personal_access_token":{"type":"string","description":"The Azure project access tokens to authenticate to the Azure API."},"use_basic_auth":{"type":"boolean","description":"Set this to true if you are using self-hosted Azure Repos."}},"required":["url","project","user","personal_access_token","use_basic_auth"],"additionalProperties":false},"provider":{"type":"string","enum":["Azure Repos"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Azure Repos"}],"description":"This object represents the Source Control provider configuration for the organization or space. See [docs](https://docs.retool.com/source-control) for more information."}},"required":["config"],"additionalProperties":false,"description":"Shape of Source Control provider config request"}}}},"responses":{"200":{"description":"The updated source control configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"anyOf":[{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["App"]},"app_id":{"type":"string","description":"The GitHub App ID."},"installation_id":{"type":"string","description":"The GitHub installation ID. This can be found at the end of the installation URL."},"private_key":{"type":"string","description":"The base64-encoded private key."},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","app_id","installation_id","private_key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Personal"]},"personal_access_token":{"type":"string","description":"The GitHub project access token to authenticate to the GitHub API.\t"},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","personal_access_token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["GitHub"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitHub"},{"type":"object","properties":{"config":{"type":"object","properties":{"project_id":{"type":"number","description":"The numerical project ID for your GitLab project. Find this ID listed below the project's name on the project's homepage."},"url":{"type":"string","description":"Your base GitLab URL. On GitLab Cloud, this is always https://gitlab.com. On GitLab self-managed, this is the URL where your instance is hosted."},"project_access_token":{"type":"string","description":"The GitLab project access token to authenticate to the GitLab API."}},"required":["project_id","url","project_access_token"],"additionalProperties":false},"provider":{"type":"string","enum":["GitLab"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitLab"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"The domain used to access your self-hosted AWS CodeCommit instance."},"region":{"type":"string","description":"The region of the CodeCommit repository."},"access_key_id":{"type":"string","description":"The Access key ID from your AWSCodeCommitFullAccess policy."},"secret_access_key":{"type":"string","description":"The Secret Access Key from your AWSCodeCommitFullAccess policy"},"https_username":{"type":"string","description":"The HTTPS username from your security credentials."},"https_password":{"type":"string","description":"The HTTPS password from your security credentials."}},"required":["url","region","access_key_id","secret_access_key","https_username","https_password"],"additionalProperties":false},"provider":{"type":"string","enum":["AWS CodeCommit"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"AWS CodeCommit"},{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["AppPassword"]},"username":{"type":"string","description":"Your Bitbucket username."},"app_password":{"type":"string","description":"Your Bitbucket app password."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","username","app_password"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Token"]},"token":{"type":"string","description":"Your Bitbucket API token."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["Bitbucket"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Bitbucket"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"Your base Azure URL. For Azure Cloud, this is always http://dev.azure.com. For Azure self-managed, this is the URL where your instance is hosted."},"project":{"type":"string","description":"Your new or existing Azure DevOps project."},"user":{"type":"string","description":"The Azure Repos username."},"personal_access_token":{"type":"string","description":"The Azure project access tokens to authenticate to the Azure API."},"use_basic_auth":{"type":"boolean","description":"Set this to true if you are using self-hosted Azure Repos."}},"required":["url","project","user","personal_access_token","use_basic_auth"],"additionalProperties":false},"provider":{"type":"string","enum":["Azure Repos"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Azure Repos"}],"description":"Created or updated Source Control Provider Config"}},"required":["success","data"]}}}},"201":{"description":"The created source control configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"anyOf":[{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["App"]},"app_id":{"type":"string","description":"The GitHub App ID."},"installation_id":{"type":"string","description":"The GitHub installation ID. This can be found at the end of the installation URL."},"private_key":{"type":"string","description":"The base64-encoded private key."},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","app_id","installation_id","private_key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Personal"]},"personal_access_token":{"type":"string","description":"The GitHub project access token to authenticate to the GitHub API.\t"},"url":{"type":"string","description":"The domain used to access your self-hosted GitHub instance."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted GitHub instance. Defaults to https://[hostname]/api/v3."}},"required":["type","personal_access_token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["GitHub"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitHub"},{"type":"object","properties":{"config":{"type":"object","properties":{"project_id":{"type":"number","description":"The numerical project ID for your GitLab project. Find this ID listed below the project's name on the project's homepage."},"url":{"type":"string","description":"Your base GitLab URL. On GitLab Cloud, this is always https://gitlab.com. On GitLab self-managed, this is the URL where your instance is hosted."},"project_access_token":{"type":"string","description":"The GitLab project access token to authenticate to the GitLab API."}},"required":["project_id","url","project_access_token"],"additionalProperties":false},"provider":{"type":"string","enum":["GitLab"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"GitLab"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"The domain used to access your self-hosted AWS CodeCommit instance."},"region":{"type":"string","description":"The region of the CodeCommit repository."},"access_key_id":{"type":"string","description":"The Access key ID from your AWSCodeCommitFullAccess policy."},"secret_access_key":{"type":"string","description":"The Secret Access Key from your AWSCodeCommitFullAccess policy"},"https_username":{"type":"string","description":"The HTTPS username from your security credentials."},"https_password":{"type":"string","description":"The HTTPS password from your security credentials."}},"required":["url","region","access_key_id","secret_access_key","https_username","https_password"],"additionalProperties":false},"provider":{"type":"string","enum":["AWS CodeCommit"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"AWS CodeCommit"},{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["AppPassword"]},"username":{"type":"string","description":"Your Bitbucket username."},"app_password":{"type":"string","description":"Your Bitbucket app password."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","username","app_password"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["Token"]},"token":{"type":"string","description":"Your Bitbucket API token."},"url":{"type":"string","description":"The domain used to access your self-hosted Bitbucket instance. Defaults to https://bitbucket.org/."},"enterprise_api_url":{"type":"string","description":"The REST API route for your self-hosted Bitbucket instance. Defaults to https://api.bitbucket.org/2.0.\t"}},"required":["type","token"],"additionalProperties":false}]},"provider":{"type":"string","enum":["Bitbucket"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Bitbucket"},{"type":"object","properties":{"config":{"type":"object","properties":{"url":{"type":"string","description":"Your base Azure URL. For Azure Cloud, this is always http://dev.azure.com. For Azure self-managed, this is the URL where your instance is hosted."},"project":{"type":"string","description":"Your new or existing Azure DevOps project."},"user":{"type":"string","description":"The Azure Repos username."},"personal_access_token":{"type":"string","description":"The Azure project access tokens to authenticate to the Azure API."},"use_basic_auth":{"type":"boolean","description":"Set this to true if you are using self-hosted Azure Repos."}},"required":["url","project","user","personal_access_token","use_basic_auth"],"additionalProperties":false},"provider":{"type":"string","enum":["Azure Repos"]},"org":{"type":"string","description":"The user or organization to which the repository belongs to."},"repo":{"type":"string","description":"The name of the repository you created to use with Retool."},"default_branch":{"type":"string","description":"The default branch, e.g., main."},"repo_version":{"type":"string","description":"Repositories using Toolscript are 2.0.0. Repositories using legacy YAML are 1.0.0."}},"required":["config","provider","org","repo","default_branch"],"title":"Azure Repos"}],"description":"Created or updated Source Control Provider Config"}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"delete":{"summary":"Delete source control configuration","description":"Deletes the source control configuration for the organization or space. Requires the `source_control:write` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"204":{"description":"The source control configuration has been successfully deleted."},"404":{"description":"Error message","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/test_connection":{"get":{"summary":"Test source control connection","description":"Tests the connection to the source control provider and returns whether the connection was successful. Requires the `source_control:read` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"Success message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Test connection failed"},"message":{"type":"string","description":"Error message"}},"required":["success","message"]},{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Test connection succeeded"}},"required":["success"]}],"description":"Test connection response"}},"required":["success","data"]}}}},"422":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/test_deploy":{"post":{"summary":"Test source control changes","description":"Attempts a test deployment (no permanent changes) using the provided commit SHA to determine whether the commit is valid. Requires the `source_control:test_deploy` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"deploy_params":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The full commit SHA to dry deploy"},"is_full_sync":{"type":"boolean"},"branch_name":{"type":"string","description":"The branch the commit is on. When provided, the clone targets this branch for faster checkout. Falls back to the default branch if omitted."}},"required":["commit_sha"]}},"required":["deploy_params"],"additionalProperties":false,"description":"Parameters for running a deployment"}}}},"responses":{"200":{"description":"The test deployment result with deployment logs.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Deployment failed"},"message":{"type":"string","description":"Error message"}},"required":["success","message"]},{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Deployment succeeded"}},"required":["success"]}],"description":"Source control test deploy response"}},"required":["success","data"]}}}}}}},"/source_control/deploy":{"post":{"summary":"Deploy latest changes","description":"Deploys the latest changes from the source control provider to the instance. Use the GET /deployment/{id} endpoint to check the status of the deployment. Requires the `source_control:deploy` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"The ID of the triggered deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The deployment ID"},"status":{"type":"string","enum":["PENDING_START","RUNNING","SUCCESS","ERROR"],"description":"The deployment status"},"commit_sha":{"type":"string","nullable":true,"description":"The commit SHA that was deployed. Will be null while the deployment is in PENDING_START status."},"triggered_by":{"type":"string","nullable":true,"pattern":"user_([a-z0-9]+)","description":"The user ID who triggered the deployment, or null if triggered automatically","example":"user_1234"},"created_at":{"type":"string","description":"ISO 8601 timestamp when the deployment was created"},"completed_at":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when the deployment completed, or null if still in progress"}},"required":["id","status","commit_sha","triggered_by","created_at","completed_at"],"description":"Source control deploy response"}},"required":["success","data"]}}}}}}},"/source_control/deployment/{id}":{"get":{"summary":"Get a deployment","description":"Returns the status of the specified deployment. Requires the `source_control:deploy` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The deployment ID"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The deployment status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The deployment ID"},"status":{"type":"string","enum":["PENDING_START","RUNNING","SUCCESS","ERROR"],"description":"The deployment status"},"commit_sha":{"type":"string","nullable":true,"description":"The commit SHA that was deployed. Will be null while the deployment is in PENDING_START status."},"triggered_by":{"type":"string","nullable":true,"pattern":"user_([a-z0-9]+)","description":"The user ID who triggered the deployment, or null if triggered automatically","example":"user_1234"},"created_at":{"type":"string","description":"ISO 8601 timestamp when the deployment was created"},"completed_at":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when the deployment completed, or null if still in progress"}},"required":["id","status","commit_sha","triggered_by","created_at","completed_at"],"description":"Source control deploy response"}},"required":["success","data"]}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/deployments":{"get":{"summary":"List source control deployments","description":"Returns a list of source control deployments in reverse chronological order. Returns the same data shown in the deploy dashboard. Requires the `source_control:deploy` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of source control deployments.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The deployment ID"},"status":{"type":"string","enum":["PENDING_START","RUNNING","SUCCESS","ERROR"],"description":"The deployment status"},"commit_sha":{"type":"string","nullable":true,"description":"The commit SHA that was deployed. Will be null while the deployment is in PENDING_START status."},"triggered_by":{"type":"string","nullable":true,"pattern":"user_([a-z0-9]+)","description":"The user ID who triggered the deployment, or null if triggered automatically","example":"user_1234"},"created_at":{"type":"string","description":"ISO 8601 timestamp when the deployment was created"},"completed_at":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when the deployment completed, or null if still in progress"}},"required":["id","status","commit_sha","triggered_by","created_at","completed_at"]},"description":"List of deployments, ordered by creation time (most recent first)"}},"required":["deployments"],"description":"List of source control deployments"}},"required":["success","data"]}}}},"404":{"description":"Source control settings not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/settings":{"get":{"summary":"Get source control settings","description":"Returns the source control settings for the organization or space. Requires the `source_control:read` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"Source control settings for the organization or space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"auto_branch_naming_enabled":{"type":"boolean","description":"When enabled, Retool automatically suggests a branch name on branch creation. Defaults to true."},"custom_pull_request_template_enabled":{"type":"boolean","description":"When enabled, Retool will use the template specified to create pull requests. Defaults to false."},"custom_pull_request_template":{"type":"string","description":"Pull requests created from Retool will use the template specified."},"version_control_locked":{"type":"boolean","description":"When set to true, creates a read-only instance of Retool, where app editing is disabled. Defaults to false."},"force_uuid_mapping":{"type":"boolean","description":"When set to true, creates a uuid mapping for protected elements to be used in the source control repo. Defaults to false."},"auto_cleanup_branches_enabled":{"type":"boolean","description":"When set to true, Retool will automatically delete branches after changes are merged if the remote branch no longer exists and there are no uncommitted changes. Defaults to true."}},"required":["auto_branch_naming_enabled","custom_pull_request_template_enabled","custom_pull_request_template","version_control_locked","force_uuid_mapping","auto_cleanup_branches_enabled"],"description":"Source Control Settings"}},"required":["success","data"]}}}}}},"put":{"summary":"Set source control settings","description":"Creates or updates source control settings for the organization or space. Overwrites any existing settings. Requires the `source_control:write` scope.","tags":["Source Control"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"settings":{"type":"object","properties":{"auto_branch_naming_enabled":{"type":"boolean","description":"When enabled, Retool automatically suggests a branch name on branch creation. Defaults to true."},"custom_pull_request_template_enabled":{"type":"boolean","description":"When enabled, Retool will use the template specified to create pull requests. Defaults to false."},"custom_pull_request_template":{"type":"string","description":"Pull requests created from Retool will use the template specified."},"version_control_locked":{"type":"boolean","description":"When set to true, creates a read-only instance of Retool, where app editing is disabled. Defaults to false."},"force_uuid_mapping":{"type":"boolean","description":"When set to true, creates a uuid mapping for protected elements to be used in the source control repo. Defaults to false."},"auto_cleanup_branches_enabled":{"type":"boolean","description":"When set to true, Retool will automatically delete branches after changes are merged if the remote branch no longer exists and there are no uncommitted changes. Defaults to true."}},"additionalProperties":false}},"required":["settings"],"additionalProperties":false,"description":"Shape of Source Control Settings"}}}},"responses":{"200":{"description":"Updated source control settings for the organization or space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"auto_branch_naming_enabled":{"type":"boolean","description":"When enabled, Retool automatically suggests a branch name on branch creation. Defaults to true."},"custom_pull_request_template_enabled":{"type":"boolean","description":"When enabled, Retool will use the template specified to create pull requests. Defaults to false."},"custom_pull_request_template":{"type":"string","description":"Pull requests created from Retool will use the template specified."},"version_control_locked":{"type":"boolean","description":"When set to true, creates a read-only instance of Retool, where app editing is disabled. Defaults to false."},"force_uuid_mapping":{"type":"boolean","description":"When set to true, creates a uuid mapping for protected elements to be used in the source control repo. Defaults to false."},"auto_cleanup_branches_enabled":{"type":"boolean","description":"When set to true, Retool will automatically delete branches after changes are merged if the remote branch no longer exists and there are no uncommitted changes. Defaults to true."}},"required":["auto_branch_naming_enabled","custom_pull_request_template_enabled","custom_pull_request_template","version_control_locked","force_uuid_mapping","auto_cleanup_branches_enabled"],"description":"Result of creating Source Control Settings"}},"required":["success","data"]}}}},"201":{"description":"Created source control settings for the organization or space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"auto_branch_naming_enabled":{"type":"boolean","description":"When enabled, Retool automatically suggests a branch name on branch creation. Defaults to true."},"custom_pull_request_template_enabled":{"type":"boolean","description":"When enabled, Retool will use the template specified to create pull requests. Defaults to false."},"custom_pull_request_template":{"type":"string","description":"Pull requests created from Retool will use the template specified."},"version_control_locked":{"type":"boolean","description":"When set to true, creates a read-only instance of Retool, where app editing is disabled. Defaults to false."},"force_uuid_mapping":{"type":"boolean","description":"When set to true, creates a uuid mapping for protected elements to be used in the source control repo. Defaults to false."},"auto_cleanup_branches_enabled":{"type":"boolean","description":"When set to true, Retool will automatically delete branches after changes are merged if the remote branch no longer exists and there are no uncommitted changes. Defaults to true."}},"required":["auto_branch_naming_enabled","custom_pull_request_template_enabled","custom_pull_request_template","version_control_locked","force_uuid_mapping","auto_cleanup_branches_enabled"],"description":"Result of creating Source Control Settings"}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/manifests":{"get":{"summary":"List release manifests","description":"Returns a list of all release manifests available in the source control repository. Requires the `source_control:releases_read` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of release manifests.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"manifests":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"apps":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"release":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"},{"type":"string","enum":["latest"]}]}},"required":["uuid","release"]}},"workflows":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"release":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"},{"type":"string","enum":["latest"]}]}},"required":["uuid","release"]}}},"required":["name"]},"description":"Array of release manifests"}},"required":["manifests"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/manifests/{manifestName}":{"get":{"summary":"Get a release manifest","description":"Returns the release manifest with the specified name from the source control repository. Requires the `source_control:releases_read` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"Identifier for the manifest of interest"},"required":true,"name":"manifestName","in":"path"}],"responses":{"200":{"description":"The requested release manifest.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"manifest":{"type":"object","properties":{"name":{"type":"string"},"apps":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"release":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"},{"type":"string","enum":["latest"]}]}},"required":["uuid","release"]}},"workflows":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"release":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"},{"type":"string","enum":["latest"]}]}},"required":["uuid","release"]}}},"required":["name"],"description":"The specified release manifest"}},"required":["manifest"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"put":{"summary":"Set release manifest","description":"Pushes a branch to the source control repository that creates or updates the named release manifest. If the manifest exists, it will be overwritten in the branch. Requires the `source_control:releases_write` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"Identifier for the manifest of interest"},"required":true,"name":"manifestName","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"manifest":{"type":"object","properties":{"apps":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"release":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"},{"type":"string","enum":["latest"]}]}},"required":["uuid","release"]}},"workflows":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"release":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"},{"type":"string","enum":["latest"]}]}},"required":["uuid","release"]}}},"description":"A list of source controlled elements and the corresponding version to publish for that element","example":{"apps":[{"uuid":"2ab90f76-c234-428e-9896-40c3a9bdbb2b","release":"latest"},{"uuid":"100186a5-d6cf-4476-8f84-7a71ab2fbef2","release":"1.0.1"},{"uuid":"200be837-2558-4f88-bb3b-07bea668c23e","release":"27.18.0"}],"workflows":[{"uuid":"8079edae-d5c2-46de-b5bb-153249e8463f","release":"1.0.5"}]}},"commit_message":{"type":"string","description":"Message to use for the commit that updates the specified manifest. If a message is not provided, a default will be used."}}}}}},"responses":{"200":{"description":"The branch pushed with the named release manifest.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The SHA1 hash for the git commit that the created branch points to"},"url":{"type":"string","description":"A URL to create a pull/merge request to merge the created branch into the default branch"},"branch_name":{"type":"string","description":"The name for the created branch"}},"required":["commit_sha","url","branch_name"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/manifests/{manifestName}/delete":{"post":{"summary":"Delete a release manifest","description":"Pushes a branch to the source control repository that deletes the named release manifest. Requires the `source_control:releases_write` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"Identifier for the manifest of interest"},"required":true,"name":"manifestName","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"commit_message":{"type":"string","description":"Message to use for the commit that updates the specified manifest. If a message is not provided, a default will be used."}}}}}},"responses":{"200":{"description":"The branch pushed to delete the named release manifest.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The SHA1 hash for the git commit that the created branch points to"},"url":{"type":"string","description":"A URL to create a pull/merge request to merge the created branch into the default branch"},"branch_name":{"type":"string","description":"The name for the created branch"}},"required":["commit_sha","url","branch_name"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/manifests/{manifestName}/apps/{appUuid}":{"put":{"deprecated":true,"summary":"Set release configuration for app in manifest","description":"NOTE: This endpoint is deprecated. Use the PUT /manifests/{manifestName}/{elementUuid} endpoint instead. \n\nPushes a branch to the source control repository that updates the release version of the specified app in the named release manifest. If the manifest does not already exist, it will be created in the branch. Requires the `source_control:releases_write` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The uuid to specify an app of interest within the release manifest. This should be the uuid found in the source control repository, which may differ from the organization specific uuid."},"required":true,"name":"appUuid","in":"path"},{"schema":{"type":"string","description":"Identifier for the manifest of interest"},"required":true,"name":"manifestName","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"release":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"},{"type":"string","enum":["latest"]}],"description":"The release version to set for the specified element in the named release manifest","example":"27.18.0"},"commit_message":{"type":"string","description":"Message to use for the commit that updates the specified manifest. If a message is not provided, a default will be used."}},"required":["release"]}}}},"responses":{"200":{"description":"Pushed a branch with the updated release version for the specified app in the named release manifest.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The SHA1 hash for the git commit that the created branch points to"},"url":{"type":"string","description":"A URL to create a pull/merge request to merge the created branch into the default branch"},"branch_name":{"type":"string","description":"The name for the created branch"}},"required":["commit_sha","url","branch_name"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/manifests/{manifestName}/{elementUuid}":{"put":{"summary":"Set release version for element in manifest","description":"Pushes a branch to the source control repository that updates the release version of the specified element in the named release manifest. If the manifest does not already exist, it will be created in the branch. Requires the `source_control:releases_write` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The uuid to specify an element of interest within the release manifest."},"required":true,"name":"elementUuid","in":"path"},{"schema":{"type":"string","description":"Identifier for the manifest of interest"},"required":true,"name":"manifestName","in":"path"},{"schema":{"type":"string","enum":["PAGE","WORKFLOW"],"description":"The type of the element."},"required":true,"name":"elementType","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"release":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"},{"type":"string","enum":["latest"]}],"description":"The release version to set for the specified element in the named release manifest","example":"27.18.0"},"commit_message":{"type":"string","description":"Message to use for the commit that updates the specified manifest. If a message is not provided, a default will be used."}},"required":["release"]}}}},"responses":{"200":{"description":"Pushed a branch with the updated release version for the specified element in the named release manifest.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The SHA1 hash for the git commit that the created branch points to"},"url":{"type":"string","description":"A URL to create a pull/merge request to merge the created branch into the default branch"},"branch_name":{"type":"string","description":"The name for the created branch"}},"required":["commit_sha","url","branch_name"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/manifests/{manifestName}/apps/{appUuid}/delete":{"post":{"deprecated":true,"summary":"Delete the entry for an app from a release manifest","description":"NOTE: This endpoint is deprecated. Use the POST /manifests/{manifestName}/{elementUuid}/delete endpoint instead. \n\nPushes a branch to the source control repository that deletes the entry for the specified app from the named release manifest. Requires the `source_control:releases_write` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The uuid to specify an app of interest within the release manifest. This should be the uuid found in the source control repository, which may differ from the organization specific uuid."},"required":true,"name":"appUuid","in":"path"},{"schema":{"type":"string","description":"Identifier for the manifest of interest"},"required":true,"name":"manifestName","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"commit_message":{"type":"string","description":"Message to use for the commit that updates the specified manifest. If a message is not provided, a default will be used."}}}}}},"responses":{"200":{"description":"Pushed a branch that removes the entry for the specified app from the named release manifest.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The SHA1 hash for the git commit that the created branch points to"},"url":{"type":"string","description":"A URL to create a pull/merge request to merge the created branch into the default branch"},"branch_name":{"type":"string","description":"The name for the created branch"}},"required":["commit_sha","url","branch_name"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/manifests/{manifestName}/{elementUuid}/delete":{"post":{"summary":"Delete element from release manifest","description":"Pushes a branch to the source control repository that deletes the entry for the specified element from the named release manifest. Requires the `source_control:releases_write` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The uuid to specify an element of interest within the release manifest."},"required":true,"name":"elementUuid","in":"path"},{"schema":{"type":"string","description":"Identifier for the manifest of interest"},"required":true,"name":"manifestName","in":"path"},{"schema":{"type":"string","enum":["PAGE","WORKFLOW"],"description":"The type of the element."},"required":true,"name":"elementType","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"commit_message":{"type":"string","description":"Message to use for the commit that updates the specified manifest. If a message is not provided, a default will be used."}}}}}},"responses":{"200":{"description":"Pushed a branch that removes the entry for the specified element from the named release manifest.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The SHA1 hash for the git commit that the created branch points to"},"url":{"type":"string","description":"A URL to create a pull/merge request to merge the created branch into the default branch"},"branch_name":{"type":"string","description":"The name for the created branch"}},"required":["commit_sha","url","branch_name"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/releases/apps/{appUuid}":{"get":{"deprecated":true,"summary":"List all available releases for the given app","description":"NOTE: This endpoint is deprecated. Use the GET /releases/{elementUuid} endpoint instead. \n\nReturns a list of the available releases for the app. Requires the `source_control:releases_read` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The uuid of the app."},"required":true,"name":"appUuid","in":"path"}],"responses":{"200":{"description":"List of source control releases.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"release_version":{"type":"string","description":"The version of the release."},"release_description":{"type":"string","description":"The description of the release."},"created_at":{"type":"string","description":"The timestamp when the release was created.","example":"2024-10-08T11:45:48.899Z"}},"required":["release_version","created_at"]}}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"post":{"deprecated":true,"summary":"Create a release artifact","description":"NOTE: This endpoint is deprecated. Use the POST /releases/{elementUuid} endpoint instead. \n\nPushes a branch to the source control repository that creates a new release artifact with the provided version for the app based on the latest version. Requires the `source_control:releases_write` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The uuid of the app."},"required":true,"name":"appUuid","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"release_version":{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$","description":"The version of the release.","example":"1.0.0"},"release_description":{"type":"string","description":"The description of the release.","example":"Updated theme for better consistency and dark mode support."},"commit_message":{"type":"string","description":"Message to use for the commit that updates the specified manifest. If a message is not provided, a default will be used."}},"required":["release_version"]}}}},"responses":{"200":{"description":"Pushed a branch with the new release artifact","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The SHA1 hash for the git commit that the created branch points to"},"url":{"type":"string","description":"A URL to create a pull/merge request to merge the created branch into the default branch"},"branch_name":{"type":"string","description":"The name for the created branch"}},"required":["commit_sha","url","branch_name"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/source_control/releases/{elementUuid}":{"get":{"summary":"List all available releases for the given element","description":"Returns a list of the available releases for the element. Requires the `source_control:releases_read` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The uuid of the element."},"required":true,"name":"elementUuid","in":"path"},{"schema":{"type":"string","enum":["PAGE","WORKFLOW"],"description":"The type of the element."},"required":true,"name":"elementType","in":"query"}],"responses":{"200":{"description":"A list of source control releases for the given element.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"release_version":{"type":"string","description":"The version of the release."},"release_description":{"type":"string","description":"The description of the release."},"created_at":{"type":"string","description":"The timestamp when the release was created.","example":"2024-10-08T11:45:48.899Z"}},"required":["release_version","created_at"]}}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"post":{"summary":"Create a release artifact","description":"Pushes a branch to the source control repository that creates a new release artifact with the provided version for the element based on the latest version. Requires the `source_control:releases_write` scope.","tags":["Release Management"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The uuid of the element."},"required":true,"name":"elementUuid","in":"path"},{"schema":{"type":"string","enum":["PAGE","WORKFLOW"],"description":"The type of the element."},"required":true,"name":"elementType","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"release_version":{"type":"string","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$","description":"The version of the release.","example":"1.0.0"},"release_description":{"type":"string","description":"The description of the release.","example":"Updated theme for better consistency and dark mode support."},"commit_message":{"type":"string","description":"Message to use for the commit that updates the specified manifest. If a message is not provided, a default will be used."}},"required":["release_version"]}}}},"responses":{"200":{"description":"Pushed a branch with the new release artifact","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"commit_sha":{"type":"string","description":"The SHA1 hash for the git commit that the created branch points to"},"url":{"type":"string","description":"A URL to create a pull/merge request to merge the created branch into the default branch"},"branch_name":{"type":"string","description":"The name for the created branch"}},"required":["commit_sha","url","branch_name"]}},"required":["success","data"]}}}},"400":{"description":"Error message.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/app_themes/{id}":{"get":{"summary":"Get an app theme","description":"Returns the specified app theme. Requires the `app_themes:read` scope.","tags":["App Themes"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The requested app theme.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"name":{"type":"string","description":"The name of the app theme."},"theme":{"type":"object","additionalProperties":{"nullable":true},"description":"The theme object."},"created_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was created."},"updated_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was last updated."}},"required":["id","legacy_id","name","theme","created_at","updated_at"],"description":"The app theme."}},"required":["success","data"]}}}},"404":{"description":"App theme does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"delete":{"summary":"Delete an app theme","description":"Deletes the specified app theme. Requires the `app_themes:write` scope.","tags":["App Themes"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"The app theme has been successfully deleted."},"404":{"description":"The app theme was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/app_themes":{"get":{"summary":"List app themes","description":"Returns all app themes for the organization or space. Requires the `app_themes:read` scope.","tags":["App Themes"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of app themes.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"name":{"type":"string","description":"The name of the app theme."},"theme":{"type":"object","additionalProperties":{"nullable":true},"description":"The theme object."},"created_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was created."},"updated_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was last updated."}},"required":["id","legacy_id","name","theme","created_at","updated_at"],"description":"This object represents an app theme. App themes allow you to customize the look of your app. See https://docs.retool.com/apps/web/concepts/themes for more information."},"description":"An array of requested items."}},"required":["success","data"],"description":"A list of all app themes in the organization"}}}}}},"post":{"summary":"Create an app theme","description":"Creates a new app theme and returns the created theme. If a theme with the same name already exists, returns 409 without modifying the existing theme. Requires the `app_themes:write` scope.","tags":["App Themes"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"name":{"type":"string","description":"The name of the app theme."},"theme":{"type":"object","additionalProperties":{"nullable":true},"description":"The theme object."},"created_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was created."},"updated_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was last updated."}},"required":["id","legacy_id","name","theme","created_at","updated_at"],"description":"This object represents an app theme. App themes allow you to customize the look of your app. See https://docs.retool.com/apps/web/concepts/themes for more information."}}}},"responses":{"200":{"description":"The created app theme.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"name":{"type":"string","description":"The name of the app theme."},"theme":{"type":"object","additionalProperties":{"nullable":true},"description":"The theme object."},"created_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was created."},"updated_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was last updated."}},"required":["id","legacy_id","name","theme","created_at","updated_at"],"description":"The updated app theme."}},"required":["success","data"]}}}},"409":{"description":"A theme with the same name already exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"put":{"summary":"Update an app theme","description":"Creates or updates an app theme and returns the theme. Requires the `app_themes:write` scope.","tags":["App Themes"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"name":{"type":"string","description":"The name of the app theme."},"theme":{"type":"object","additionalProperties":{"nullable":true},"description":"The theme object."},"created_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was created."},"updated_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was last updated."}},"required":["id","legacy_id","name","theme","created_at","updated_at"],"description":"This object represents an app theme. App themes allow you to customize the look of your app. See https://docs.retool.com/apps/web/concepts/themes for more information."}}}},"responses":{"200":{"description":"The updated app theme.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"name":{"type":"string","description":"The name of the app theme."},"theme":{"type":"object","additionalProperties":{"nullable":true},"description":"The theme object."},"created_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was created."},"updated_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was last updated."}},"required":["id","legacy_id","name","theme","created_at","updated_at"],"description":"The updated app theme."}},"required":["success","data"]}}}},"201":{"description":"The created app theme.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"name":{"type":"string","description":"The name of the app theme."},"theme":{"type":"object","additionalProperties":{"nullable":true},"description":"The theme object."},"created_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was created."},"updated_at":{"type":"string","format":"date-time","description":"Date and time when the app theme was last updated."}},"required":["id","legacy_id","name","theme","created_at","updated_at"],"description":"The updated app theme."}},"required":["success","data"]}}}},"409":{"description":"A theme with the same name already exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/apps/{appId}":{"delete":{"summary":"Delete an app","description":"Deletes the specified app. Requires the `apps:write` scope.","tags":["Apps"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The app ID."},"required":true,"name":"appId","in":"path"}],"responses":{"204":{"description":"The app has been successfully deleted."}}},"get":{"summary":"Get an app","description":"Returns the specified app. Requires the `apps:read` scope.","tags":["Apps"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The app ID."},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"The requested app.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The app ID."},"name":{"type":"string","description":"The name of the App"},"description":{"type":"string","nullable":true,"description":"The description of the App"},"folder_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"protected":{"type":"boolean","description":"Whether the App is protected"},"synced":{"type":"boolean","description":"Whether the App is synced"},"shortlink":{"type":"string","nullable":true,"description":"The shortlink of the App"},"is_module":{"type":"boolean","description":"Whether the App is a module"},"is_mobile_app":{"type":"boolean","description":"Whether the App is a mobile app"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"},"release_version":{"type":"string","description":"The live release version of the app. 'latest' if releases are disabled or the app has no live release yet"}},"required":["id","name","description","folder_id","protected","synced","shortlink","is_module","is_mobile_app","created_at","updated_at","release_version"],"description":"This object represents an app."}},"required":["success","data"],"description":"A single app"}}}}}}},"/apps":{"get":{"summary":"List apps","description":"Returns a list of apps. Requires the `apps:read` scope.","tags":["Apps"],"parameters":[{"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"string","format":"uuid"}],"description":"Filter only for apps that use this resource, specified by the resource's UUID. Available on Retool versions 3.176.0+."},"required":false,"name":"using_resource","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Filter apps whose name contains this value (case-insensitive).","example":"dashboard"},"required":false,"name":"name_contains","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of items to return per page. If not provided, all items are returned. When provided, enables pagination and the response will include next_token for retrieving subsequent pages. Valid range: 1-100.","example":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor token for retrieving the next page of results. Obtained from the next_token field of a previous paginated response. Only valid when the limit parameter is also provided.","example":"eyJsYXN0SWQiOjEyM30..."},"required":false,"name":"next_token","in":"query"}],"responses":{"200":{"description":"A list of apps.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The app ID."},"name":{"type":"string","description":"The name of the App"},"description":{"type":"string","nullable":true,"description":"The description of the App"},"folder_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"protected":{"type":"boolean","description":"Whether the App is protected"},"synced":{"type":"boolean","description":"Whether the App is synced"},"shortlink":{"type":"string","nullable":true,"description":"The shortlink of the App"},"is_module":{"type":"boolean","description":"Whether the App is a module"},"is_mobile_app":{"type":"boolean","description":"Whether the App is a mobile app"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"},"release_version":{"type":"string","description":"The live release version of the app. 'latest' if releases are disabled or the app has no live release yet"}},"required":["id","name","description","folder_id","protected","synced","shortlink","is_module","is_mobile_app","created_at","updated_at","release_version"],"description":"This object represents an app."},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A list of all apps in the organization"}}}}}}},"/apps/cloneApp":{"post":{"summary":"Clone an app","description":"Creates a copy of an existing app in the specified folder and returns the cloned app. Requires the `apps:write` scope.","tags":["Apps"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"app_id":{"type":"string","format":"uuid","description":"The app ID."},"new_app_name":{"type":"string","minLength":1,"description":"The name of the new app"},"folder_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"}},"required":["app_id","new_app_name"],"additionalProperties":false}}}},"responses":{"200":{"description":"The newly cloned app.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The app ID."},"name":{"type":"string","description":"The name of the App"},"description":{"type":"string","nullable":true,"description":"The description of the App"},"folder_id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"protected":{"type":"boolean","description":"Whether the App is protected"},"synced":{"type":"boolean","description":"Whether the App is synced"},"shortlink":{"type":"string","nullable":true,"description":"The shortlink of the App"},"is_module":{"type":"boolean","description":"Whether the App is a module"},"is_mobile_app":{"type":"boolean","description":"Whether the App is a mobile app"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"},"release_version":{"type":"string","description":"The live release version of the app. 'latest' if releases are disabled or the app has no live release yet"}},"required":["id","name","description","folder_id","protected","synced","shortlink","is_module","is_mobile_app","created_at","updated_at","release_version"],"description":"This object represents an app."}},"required":["success","data"],"description":"A single app"}}}},"404":{"description":"App to clone from could not be found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/sso/config":{"post":{"summary":"Set SSO configuration","description":"Sets the SSO configuration for the organization or space. Requires the `spaces:write` scope.","tags":["SSO"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"config_type":{"type":"string","enum":["google"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login"],"additionalProperties":false,"title":"Google"},{"type":"object","properties":{"config_type":{"type":"string","enum":["oidc"]},"oidc_client_id":{"type":"string","minLength":1},"oidc_client_secret":{"type":"string","minLength":1},"oidc_scopes":{"type":"string","minLength":1},"oidc_auth_url":{"type":"string","minLength":1},"oidc_token_url":{"type":"string","minLength":1},"oidc_userinfo_url":{"type":"string","minLength":1},"oidc_audience":{"type":"string"},"oidc_end_session_url":{"type":"string","minLength":1},"jwt_email_key":{"type":"string","minLength":1},"jwt_roles_key":{"type":"string","minLength":1},"jwt_first_name_key":{"type":"string","minLength":1},"jwt_last_name_key":{"type":"string","minLength":1},"roles_mapping":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","oidc_client_id","oidc_client_secret","oidc_scopes","oidc_auth_url","oidc_token_url","jwt_email_key","jwt_first_name_key","jwt_last_name_key","jit_enabled","trigger_login_automatically","disable_email_password_login"],"additionalProperties":false,"title":"OIDC"},{"type":"object","properties":{"config_type":{"type":"string","enum":["google & oidc"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"},"oidc_client_id":{"type":"string","minLength":1},"oidc_client_secret":{"type":"string","minLength":1},"oidc_scopes":{"type":"string","minLength":1},"oidc_auth_url":{"type":"string","minLength":1},"oidc_token_url":{"type":"string","minLength":1},"oidc_userinfo_url":{"type":"string","minLength":1},"oidc_audience":{"type":"string"},"oidc_end_session_url":{"type":"string","minLength":1},"jwt_email_key":{"type":"string","minLength":1},"jwt_roles_key":{"type":"string","minLength":1},"jwt_first_name_key":{"type":"string","minLength":1},"jwt_last_name_key":{"type":"string","minLength":1},"roles_mapping":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login","oidc_client_id","oidc_client_secret","oidc_scopes","oidc_auth_url","oidc_token_url","jwt_email_key","jwt_first_name_key","jwt_last_name_key","jit_enabled","trigger_login_automatically"],"additionalProperties":false,"title":"Google & OIDC"},{"type":"object","properties":{"config_type":{"type":"string","enum":["saml"]},"idp_metadata_xml":{"type":"string","minLength":1},"saml_first_name_attribute":{"type":"string","minLength":1},"saml_last_name_attribute":{"type":"string","minLength":1},"saml_groups_attribute":{"type":"string"},"saml_sync_group_claims":{"type":"boolean"},"ldap_sync_group_claims":{"type":"boolean"},"ldap_role_mapping":{"type":"string"},"ldap_server_url":{"type":"string"},"ldap_base_domain_components":{"type":"string"},"ldap_server_name":{"type":"string"},"ldap_server_key":{"type":"string"},"ldap_server_certificate":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","idp_metadata_xml","saml_first_name_attribute","saml_last_name_attribute","saml_sync_group_claims","jit_enabled","trigger_login_automatically","disable_email_password_login"],"additionalProperties":false,"title":"SAML"},{"type":"object","properties":{"config_type":{"type":"string","enum":["google & saml"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"},"idp_metadata_xml":{"type":"string","minLength":1},"saml_first_name_attribute":{"type":"string","minLength":1},"saml_last_name_attribute":{"type":"string","minLength":1},"saml_groups_attribute":{"type":"string"},"saml_sync_group_claims":{"type":"boolean"},"ldap_sync_group_claims":{"type":"boolean"},"ldap_role_mapping":{"type":"string"},"ldap_server_url":{"type":"string"},"ldap_base_domain_components":{"type":"string"},"ldap_server_name":{"type":"string"},"ldap_server_key":{"type":"string"},"ldap_server_certificate":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login","idp_metadata_xml","saml_first_name_attribute","saml_last_name_attribute","saml_sync_group_claims","jit_enabled","trigger_login_automatically"],"additionalProperties":false,"title":"Google & SAML"}],"description":"This object represents the SSO configuration for an organization or space. See [docs](https://docs.retool.com/sso) for more information."}},"required":["data"],"additionalProperties":false,"description":"Shape of SSO config"}}}},"responses":{"200":{"description":"SSO configuration for the organization or space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"oneOf":[{"type":"object","properties":{"config_type":{"type":"string","enum":["google"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login"],"additionalProperties":false,"title":"Google"},{"type":"object","properties":{"config_type":{"type":"string","enum":["oidc"]},"oidc_client_id":{"type":"string","minLength":1},"oidc_client_secret":{"type":"string","minLength":1},"oidc_scopes":{"type":"string","minLength":1},"oidc_auth_url":{"type":"string","minLength":1},"oidc_token_url":{"type":"string","minLength":1},"oidc_userinfo_url":{"type":"string","minLength":1},"oidc_audience":{"type":"string"},"oidc_end_session_url":{"type":"string","minLength":1},"jwt_email_key":{"type":"string","minLength":1},"jwt_roles_key":{"type":"string","minLength":1},"jwt_first_name_key":{"type":"string","minLength":1},"jwt_last_name_key":{"type":"string","minLength":1},"roles_mapping":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","oidc_client_id","oidc_client_secret","oidc_scopes","oidc_auth_url","oidc_token_url","jwt_email_key","jwt_first_name_key","jwt_last_name_key","jit_enabled","trigger_login_automatically","disable_email_password_login"],"additionalProperties":false,"title":"OIDC"},{"type":"object","properties":{"config_type":{"type":"string","enum":["google & oidc"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"},"oidc_client_id":{"type":"string","minLength":1},"oidc_client_secret":{"type":"string","minLength":1},"oidc_scopes":{"type":"string","minLength":1},"oidc_auth_url":{"type":"string","minLength":1},"oidc_token_url":{"type":"string","minLength":1},"oidc_userinfo_url":{"type":"string","minLength":1},"oidc_audience":{"type":"string"},"oidc_end_session_url":{"type":"string","minLength":1},"jwt_email_key":{"type":"string","minLength":1},"jwt_roles_key":{"type":"string","minLength":1},"jwt_first_name_key":{"type":"string","minLength":1},"jwt_last_name_key":{"type":"string","minLength":1},"roles_mapping":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login","oidc_client_id","oidc_client_secret","oidc_scopes","oidc_auth_url","oidc_token_url","jwt_email_key","jwt_first_name_key","jwt_last_name_key","jit_enabled","trigger_login_automatically"],"additionalProperties":false,"title":"Google & OIDC"},{"type":"object","properties":{"config_type":{"type":"string","enum":["saml"]},"idp_metadata_xml":{"type":"string","minLength":1},"saml_first_name_attribute":{"type":"string","minLength":1},"saml_last_name_attribute":{"type":"string","minLength":1},"saml_groups_attribute":{"type":"string"},"saml_sync_group_claims":{"type":"boolean"},"ldap_sync_group_claims":{"type":"boolean"},"ldap_role_mapping":{"type":"string"},"ldap_server_url":{"type":"string"},"ldap_base_domain_components":{"type":"string"},"ldap_server_name":{"type":"string"},"ldap_server_key":{"type":"string"},"ldap_server_certificate":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","idp_metadata_xml","saml_first_name_attribute","saml_last_name_attribute","saml_sync_group_claims","jit_enabled","trigger_login_automatically","disable_email_password_login"],"additionalProperties":false,"title":"SAML"},{"type":"object","properties":{"config_type":{"type":"string","enum":["google & saml"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"},"idp_metadata_xml":{"type":"string","minLength":1},"saml_first_name_attribute":{"type":"string","minLength":1},"saml_last_name_attribute":{"type":"string","minLength":1},"saml_groups_attribute":{"type":"string"},"saml_sync_group_claims":{"type":"boolean"},"ldap_sync_group_claims":{"type":"boolean"},"ldap_role_mapping":{"type":"string"},"ldap_server_url":{"type":"string"},"ldap_base_domain_components":{"type":"string"},"ldap_server_name":{"type":"string"},"ldap_server_key":{"type":"string"},"ldap_server_certificate":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login","idp_metadata_xml","saml_first_name_attribute","saml_last_name_attribute","saml_sync_group_claims","jit_enabled","trigger_login_automatically"],"additionalProperties":false,"title":"Google & SAML"}],"description":"Result of setting SSO configuration"}},"required":["success","data"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"delete":{"summary":"Remove SSO configuration","description":"Removes the SSO configuration for the organization or space. Note that this will not remove SSO configurations configured via environment variables. Requires the `spaces:write` scope.","tags":["SSO"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"204":{"description":"SSO configuration for the organization or space has been successfully removed."}}},"get":{"summary":"Get SSO configuration","description":"Returns the SSO configuration for the organization or space. Note that this will not return SSO configurations configured via environment variables. Requires the `spaces:read` scope.","tags":["SSO"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"SSO configuration for the organization or space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"oneOf":[{"type":"object","properties":{"config_type":{"type":"string","enum":["google"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login"],"additionalProperties":false,"title":"Google"},{"type":"object","properties":{"config_type":{"type":"string","enum":["oidc"]},"oidc_client_id":{"type":"string","minLength":1},"oidc_client_secret":{"type":"string","minLength":1},"oidc_scopes":{"type":"string","minLength":1},"oidc_auth_url":{"type":"string","minLength":1},"oidc_token_url":{"type":"string","minLength":1},"oidc_userinfo_url":{"type":"string","minLength":1},"oidc_audience":{"type":"string"},"oidc_end_session_url":{"type":"string","minLength":1},"jwt_email_key":{"type":"string","minLength":1},"jwt_roles_key":{"type":"string","minLength":1},"jwt_first_name_key":{"type":"string","minLength":1},"jwt_last_name_key":{"type":"string","minLength":1},"roles_mapping":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","oidc_client_id","oidc_client_secret","oidc_scopes","oidc_auth_url","oidc_token_url","jwt_email_key","jwt_first_name_key","jwt_last_name_key","jit_enabled","trigger_login_automatically","disable_email_password_login"],"additionalProperties":false,"title":"OIDC"},{"type":"object","properties":{"config_type":{"type":"string","enum":["google & oidc"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"},"oidc_client_id":{"type":"string","minLength":1},"oidc_client_secret":{"type":"string","minLength":1},"oidc_scopes":{"type":"string","minLength":1},"oidc_auth_url":{"type":"string","minLength":1},"oidc_token_url":{"type":"string","minLength":1},"oidc_userinfo_url":{"type":"string","minLength":1},"oidc_audience":{"type":"string"},"oidc_end_session_url":{"type":"string","minLength":1},"jwt_email_key":{"type":"string","minLength":1},"jwt_roles_key":{"type":"string","minLength":1},"jwt_first_name_key":{"type":"string","minLength":1},"jwt_last_name_key":{"type":"string","minLength":1},"roles_mapping":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login","oidc_client_id","oidc_client_secret","oidc_scopes","oidc_auth_url","oidc_token_url","jwt_email_key","jwt_first_name_key","jwt_last_name_key","jit_enabled","trigger_login_automatically"],"additionalProperties":false,"title":"Google & OIDC"},{"type":"object","properties":{"config_type":{"type":"string","enum":["saml"]},"idp_metadata_xml":{"type":"string","minLength":1},"saml_first_name_attribute":{"type":"string","minLength":1},"saml_last_name_attribute":{"type":"string","minLength":1},"saml_groups_attribute":{"type":"string"},"saml_sync_group_claims":{"type":"boolean"},"ldap_sync_group_claims":{"type":"boolean"},"ldap_role_mapping":{"type":"string"},"ldap_server_url":{"type":"string"},"ldap_base_domain_components":{"type":"string"},"ldap_server_name":{"type":"string"},"ldap_server_key":{"type":"string"},"ldap_server_certificate":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"},"disable_email_password_login":{"type":"boolean"}},"required":["config_type","idp_metadata_xml","saml_first_name_attribute","saml_last_name_attribute","saml_sync_group_claims","jit_enabled","trigger_login_automatically","disable_email_password_login"],"additionalProperties":false,"title":"SAML"},{"type":"object","properties":{"config_type":{"type":"string","enum":["google & saml"]},"google_client_id":{"type":"string"},"google_client_secret":{"type":"string"},"disable_email_password_login":{"type":"boolean"},"idp_metadata_xml":{"type":"string","minLength":1},"saml_first_name_attribute":{"type":"string","minLength":1},"saml_last_name_attribute":{"type":"string","minLength":1},"saml_groups_attribute":{"type":"string"},"saml_sync_group_claims":{"type":"boolean"},"ldap_sync_group_claims":{"type":"boolean"},"ldap_role_mapping":{"type":"string"},"ldap_server_url":{"type":"string"},"ldap_base_domain_components":{"type":"string"},"ldap_server_name":{"type":"string"},"ldap_server_key":{"type":"string"},"ldap_server_certificate":{"type":"string"},"jit_enabled":{"type":"boolean"},"restricted_domain":{"type":"string"},"trigger_login_automatically":{"type":"boolean"}},"required":["config_type","google_client_id","google_client_secret","disable_email_password_login","idp_metadata_xml","saml_first_name_attribute","saml_last_name_attribute","saml_sync_group_claims","jit_enabled","trigger_login_automatically"],"additionalProperties":false,"title":"Google & SAML"}],"description":"SSO configuration"}},"required":["success","data"]}}}},"404":{"description":"SSO is not configured for this organization or space.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"The organization has unsupported type of SSO configurations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/user_attributes":{"get":{"summary":"List organization user attributes","description":"Returns a list of currently configured user attributes for the organization. Requires the `users:read` or `user_attributes:read` scope.","tags":["User Attributes"],"x-badges":[{"color":"green","label":"Business"},{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of currently configured user attributes.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the user attribute."},"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the user attribute."},"label":{"type":"string","description":"The label of the user attribute."},"data_type":{"type":"string","enum":["string","number","json"],"description":"The data type of the user attribute. Valid types are `string`, `number`, or `json`."},"default_value":{"type":"string","nullable":true,"description":"The default value of the user attribute, assigned to all users without the attribute set."},"intercom_attribute_name":{"type":"string","nullable":true,"minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the Intercom user attribute that this attribute should be mapped to."}},"required":["id","name","label","data_type","default_value","intercom_attribute_name"],"description":"This object represents user attributes."},"description":"An array of requested items."}},"required":["success","data"],"description":"A list of user attributes."}}}}}},"post":{"summary":"Create an organization user attribute","description":"Creates a new user attribute for the organization and returns the created user attribute. Requires the `user_attributes:write` scope.","tags":["User Attributes"],"x-badges":[{"color":"green","label":"Business"},{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the user attribute. Must be alphanumeric and without spaces."},"label":{"type":"string","minLength":2,"description":"A short description of the user attribute."},"dataType":{"type":"string","enum":["string","json","number"],"description":"The data type of the attribute. Valid types are `string`, `json`, or `number`."},"defaultValue":{"type":"string","nullable":true,"description":"A default value to apply to users that don't have an attribute set."}},"required":["name","label","dataType"]}}}},"responses":{"200":{"description":"The created user attribute.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the user attribute."},"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the user attribute."},"label":{"type":"string","description":"The label of the user attribute."},"data_type":{"type":"string","enum":["string","number","json"],"description":"The data type of the user attribute. Valid types are `string`, `number`, or `json`."},"default_value":{"type":"string","nullable":true,"description":"The default value of the user attribute, assigned to all users without the attribute set."},"intercom_attribute_name":{"type":"string","nullable":true,"minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the Intercom user attribute that this attribute should be mapped to."}},"required":["id","name","label","data_type","default_value","intercom_attribute_name"],"description":"The created user attribute."}},"required":["success","data"]}}}},"409":{"description":"A user attribute with the provided name already exists."}}}},"/user_attributes/{id}":{"patch":{"summary":"Update an organization user attribute","description":"Updates an organization user attribute and returns the updated user attribute. Requires the `user_attributes:write` scope.","tags":["User Attributes"],"x-badges":[{"color":"green","label":"Business"},{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The id of the user attribute."},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"},"description":"A list of operations to apply to the user attribute. See the [JSON PATCH specification](https://tools.ietf.org/html/rfc6902) for more details."},"update_existing":{"type":"boolean","description":"Whether to update existing users with the updated attribute."}},"required":["operations"],"additionalProperties":false,"description":"The body of a request to update a user attribute."}}}},"responses":{"200":{"description":"The updated user attribute.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the user attribute."},"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the user attribute."},"label":{"type":"string","description":"The label of the user attribute."},"data_type":{"type":"string","enum":["string","number","json"],"description":"The data type of the user attribute. Valid types are `string`, `number`, or `json`."},"default_value":{"type":"string","nullable":true,"description":"The default value of the user attribute, assigned to all users without the attribute set."},"intercom_attribute_name":{"type":"string","nullable":true,"minLength":1,"maxLength":255,"pattern":"^[a-z0-9\\_]+$","description":"The name of the Intercom user attribute that this attribute should be mapped to."}},"required":["id","name","label","data_type","default_value","intercom_attribute_name"],"description":"The updated user attribute."}},"required":["success","data"]}}}}}},"delete":{"summary":"Delete an organization user attribute","description":"Deletes an organization user attribute. Optionally also deletes it from any users if specified by the `update_existing_users` query parameter. Requires the `user_attributes:write` scope.","tags":["User Attributes"],"x-badges":[{"color":"green","label":"Business"},{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The id of the user attribute."},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["true","false"],"description":"Whether to update existing users with the deleted attribute."},"required":false,"name":"update_existing_users","in":"query"}],"responses":{"204":{"description":"The user attribute has been successfully deleted."}}}},"/permissions/accessList/{objectType}/{objectId}":{"get":{"summary":"Get an access list","description":"Returns a list of users and groups with their access levels for the specified folder, app, resource, workflow, or agent. Requires the `permissions:read` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"Object ID. Apps can be accessed by numeric id or UUID. Folders can be accessed by numeric id. Resources use the API resource id/name."},"required":true,"name":"objectId","in":"path"},{"schema":{"type":"string","enum":["app","folder","resource","workflow","agent"]},"required":true,"name":"objectType","in":"path"}],"responses":{"200":{"description":"A list of users, user invites, and groups with access to the object.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"group":{"type":"array","items":{"type":"object","properties":{"subject":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["group","user","userInvite"]}},"required":["id","type"]},"sources":{"type":"object","properties":{"direct":{"type":"boolean"},"universal":{"type":"boolean"},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["group"]}},"required":["id","type"]}},"inherited":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["app","folder","resource","workflow","agent"]}},"required":["id","type"]}}},"accessLevel":{"type":"string","enum":["own","edit","use","none"]}},"required":["subject","accessLevel"]}},"user":{"type":"array","items":{"type":"object","properties":{"subject":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["group","user","userInvite"]}},"required":["id","type"]},"sources":{"type":"object","properties":{"direct":{"type":"boolean"},"universal":{"type":"boolean"},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["group"]}},"required":["id","type"]}},"inherited":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["app","folder","resource","workflow","agent"]}},"required":["id","type"]}}},"accessLevel":{"type":"string","enum":["own","edit","use","none"]}},"required":["subject","accessLevel"]}},"userInvite":{"type":"array","items":{"type":"object","properties":{"subject":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["group","user","userInvite"]}},"required":["id","type"]},"sources":{"type":"object","properties":{"direct":{"type":"boolean"},"universal":{"type":"boolean"},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["group"]}},"required":["id","type"]}},"inherited":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["app","folder","resource","workflow","agent"]}},"required":["id","type"]}}},"accessLevel":{"type":"string","enum":["own","edit","use","none"]}},"required":["subject","accessLevel"]}}}}},"required":["success","data"]}}}}}}},"/permissions/listObjects":{"post":{"summary":"List objects a group can access","description":"Returns a list of objects with corresponding access levels that a subject (group or user) has access to. Requires the `permissions:read` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["group"]},"id":{"type":"number","nullable":true,"description":"The ID number of the group."}},"required":["type","id"],"additionalProperties":false,"title":"Group"},{"type":"object","properties":{"type":{"type":"string","enum":["user"]},"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"}},"required":["type","id"],"additionalProperties":false,"title":"User"}]},"object_type":{"type":"string","enum":["folder","app","resource","resource_configuration"]},"include_inherited_access":{"type":"boolean"}},"required":["subject","object_type"],"additionalProperties":false}}}},"responses":{"200":{"description":"A list of folders with corresponding access levels.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["folder"]},"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the folder"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"id":{"type":"string","format":"uuid","description":"The app ID."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the app"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["screen"]},"id":{"type":"string","format":"uuid","description":"The screen UUID."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the screen"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["resource"]},"id":{"type":"string","description":"The uuid or name for the resource."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the resource"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["resource_configuration"]},"id":{"type":"string","format":"uuid","description":"The resource configuration id."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the resource configuration. Note that the access level in practice of this resource configuration could be different dependent on what the access level of the resource with the same id as the \"name\" of this resource_configuration. "}},"required":["type","id","access_level"]}]},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"]}}}}}}},"/permissions/grant":{"post":{"summary":"Grant permissions","description":"Grants a group or user access to an object and returns the updated list of objects with corresponding access levels. Also grants or updates access for all objects directly under the folder, but does not cascade to subfolders. Requires the `permissions:write` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["group"]},"id":{"type":"number","nullable":true,"description":"The ID number of the group."}},"required":["type","id"],"additionalProperties":false,"title":"Group"},{"type":"object","properties":{"type":{"type":"string","enum":["user"]},"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"}},"required":["type","id"],"additionalProperties":false,"title":"User"}]},"object":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["folder"]},"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"}},"required":["type","id"],"additionalProperties":false,"title":"Folder"},{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"id":{"type":"string","format":"uuid","description":"The app ID."}},"required":["type","id"],"additionalProperties":false,"title":"App"},{"type":"object","properties":{"type":{"type":"string","enum":["screen"]},"id":{"type":"string","format":"uuid","description":"The screen UUID."},"appId":{"type":"string","format":"uuid","description":"The app ID."}},"required":["type","id","appId"],"additionalProperties":false,"title":"Screen"},{"type":"object","properties":{"type":{"type":"string","enum":["resource"]},"id":{"type":"string","description":"The uuid or name for the resource."}},"required":["type","id"],"additionalProperties":false,"title":"Resource"},{"type":"object","properties":{"type":{"type":"string","enum":["resource_configuration"]},"id":{"type":"string","format":"uuid","description":"The resource configuration id."}},"required":["type","id"],"additionalProperties":false,"title":"Resource Configuration"}]},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level that the group should have for the object"}},"required":["subject","object","access_level"],"additionalProperties":false}}}},"responses":{"200":{"description":"A list of folders with corresponding access levels.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["folder"]},"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the folder"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"id":{"type":"string","format":"uuid","description":"The app ID."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the app"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["screen"]},"id":{"type":"string","format":"uuid","description":"The screen UUID."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the screen"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["resource"]},"id":{"type":"string","description":"The uuid or name for the resource."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the resource"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["resource_configuration"]},"id":{"type":"string","format":"uuid","description":"The resource configuration id."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the resource configuration. Note that the access level in practice of this resource configuration could be different dependent on what the access level of the resource with the same id as the \"name\" of this resource_configuration. "}},"required":["type","id","access_level"]}]},"description":"An array of requested items."}},"required":["success","data"]}}}}}}},"/permissions/revoke":{"post":{"summary":"Revoke permissions","description":"Revokes access to an object for a group or user and returns the updated list of objects with corresponding access levels. Also revokes access for all objects directly under the folder, but does not cascade to subfolders. Requires the `permissions:write` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["group"]},"id":{"type":"number","nullable":true,"description":"The ID number of the group."}},"required":["type","id"],"additionalProperties":false,"title":"Group"},{"type":"object","properties":{"type":{"type":"string","enum":["user"]},"id":{"type":"string","pattern":"user_([a-z0-9]+)","description":"The unique identifier for the user.","example":"user_1234"}},"required":["type","id"],"additionalProperties":false,"title":"User"}]},"object":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["folder"]},"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"}},"required":["type","id"],"additionalProperties":false,"title":"Folder"},{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"id":{"type":"string","format":"uuid","description":"The app ID."}},"required":["type","id"],"additionalProperties":false,"title":"App"},{"type":"object","properties":{"type":{"type":"string","enum":["screen"]},"id":{"type":"string","format":"uuid","description":"The screen UUID."},"appId":{"type":"string","format":"uuid","description":"The app ID."}},"required":["type","id","appId"],"additionalProperties":false,"title":"Screen"},{"type":"object","properties":{"type":{"type":"string","enum":["resource"]},"id":{"type":"string","description":"The uuid or name for the resource."}},"required":["type","id"],"additionalProperties":false,"title":"Resource"},{"type":"object","properties":{"type":{"type":"string","enum":["resource_configuration"]},"id":{"type":"string","format":"uuid","description":"The resource configuration id."}},"required":["type","id"],"additionalProperties":false,"title":"Resource Configuration"}]}},"required":["subject","object"],"additionalProperties":false}}}},"responses":{"200":{"description":"A list of folders with corresponding access levels.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["folder"]},"id":{"type":"string","pattern":"^(app|workflow|resource|agent|library)_([0-9]\\d*)$","description":"The id of the folder"},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the folder"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"id":{"type":"string","format":"uuid","description":"The app ID."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the app"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["screen"]},"id":{"type":"string","format":"uuid","description":"The screen UUID."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the screen"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["resource"]},"id":{"type":"string","description":"The uuid or name for the resource."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the resource"}},"required":["type","id","access_level"]},{"type":"object","properties":{"type":{"type":"string","enum":["resource_configuration"]},"id":{"type":"string","format":"uuid","description":"The resource configuration id."},"access_level":{"type":"string","enum":["own","edit","use"],"description":"The access level of the resource configuration. Note that the access level in practice of this resource configuration could be different dependent on what the access level of the resource with the same id as the \"name\" of this resource_configuration. "}},"required":["type","id","access_level"]}]},"description":"An array of requested items."}},"required":["success","data"]}}}}}}},"/role_permissions/roles":{"get":{"summary":"List roles","description":"Returns a list of roles. Requires the `permissions:read` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A paginated list of roles.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the role."},"organization_id":{"type":"string","description":"The id of the organization"},"name":{"type":"string","description":"The name of the role"},"description":{"type":"string","description":"The description of the role"},"is_default_role":{"type":"boolean","description":"Whether the role is the default role"},"is_legacy_role":{"type":"boolean","description":"Whether the role is a migrated legacy role"},"object_scopes":{"type":"array","items":{"type":"string"},"description":"The object scopes of the role"},"organization_scopes":{"type":"array","items":{"type":"string"},"description":"The organization scopes of the role"},"added_dependent_scopes":{"type":"array","items":{"type":"string"},"description":"The dependent scopes that were automatically added to the role"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","organization_id","name","description","is_default_role","is_legacy_role","object_scopes","organization_scopes","added_dependent_scopes","created_at","updated_at"],"description":"Roles"},"description":"An array of requested items."}},"required":["success","data"]}}}},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"post":{"summary":"Create a role","description":"Creates a role and returns the created role. Requires the `permissions:write` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the role."},"description":{"type":"string","description":"The description of the role"},"object_scopes":{"type":"array","items":{"type":"string"},"description":"The object scopes of the role"},"organization_scopes":{"type":"array","items":{"type":"string"},"description":"The organization scopes of the role"}},"required":["name","object_scopes","organization_scopes"]}}}},"responses":{"201":{"description":"The created role.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the role."},"organization_id":{"type":"string","description":"The id of the organization"},"name":{"type":"string","description":"The name of the role"},"description":{"type":"string","description":"The description of the role"},"is_default_role":{"type":"boolean","description":"Whether the role is the default role"},"is_legacy_role":{"type":"boolean","description":"Whether the role is a migrated legacy role"},"object_scopes":{"type":"array","items":{"type":"string"},"description":"The object scopes of the role"},"organization_scopes":{"type":"array","items":{"type":"string"},"description":"The organization scopes of the role"},"added_dependent_scopes":{"type":"array","items":{"type":"string"},"description":"The dependent scopes that were automatically added to the role"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","organization_id","name","description","is_default_role","is_legacy_role","object_scopes","organization_scopes","added_dependent_scopes","created_at","updated_at"]}}}},"400":{"description":"Missing required body parameter:","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"409":{"description":"An object with the given value already exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"Encountered ValidationError when processing your request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/role_permissions/roles/{roleId}":{"delete":{"summary":"Delete a role","description":"Deletes the specified role. Requires the `permissions:write` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The id of the role"},"required":true,"name":"roleId","in":"path"}],"responses":{"204":{"description":"The role has been successfully deleted."},"400":{"description":"Cannot delete default role.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"404":{"description":"Role with id {roleId} not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"patch":{"summary":"Update a role","description":"Updates a role and returns the updated role. Requires the `permissions:write` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The id of the role"},"required":true,"name":"roleId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the role."},"description":{"type":"string","description":"The description of the role"},"object_scopes":{"type":"array","items":{"type":"string"},"description":"The object scopes of the role"},"organization_scopes":{"type":"array","items":{"type":"string"},"description":"The organization scopes of the role"}}}}}},"responses":{"200":{"description":"The updated role.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the role."},"organization_id":{"type":"string","description":"The id of the organization"},"name":{"type":"string","description":"The name of the role"},"description":{"type":"string","description":"The description of the role"},"is_default_role":{"type":"boolean","description":"Whether the role is the default role"},"is_legacy_role":{"type":"boolean","description":"Whether the role is a migrated legacy role"},"object_scopes":{"type":"array","items":{"type":"string"},"description":"The object scopes of the role"},"organization_scopes":{"type":"array","items":{"type":"string"},"description":"The organization scopes of the role"},"added_dependent_scopes":{"type":"array","items":{"type":"string"},"description":"The dependent scopes that were automatically added to the role"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","organization_id","name","description","is_default_role","is_legacy_role","object_scopes","organization_scopes","added_dependent_scopes","created_at","updated_at"]}}}},"400":{"description":"Missing required body parameter:","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/role_permissions/role_grants/{roleGrantId}":{"delete":{"summary":"Delete a role grant","description":"Deletes the specified role grant. Requires the `permissions:write` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The id of the role grant"},"required":true,"name":"roleGrantId","in":"path"}],"responses":{"204":{"description":"The role grant has been successfully deleted."},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"404":{"description":"Role grant with id {roleGrantId} not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/role_permissions/role_grants":{"post":{"summary":"Create a role grant","description":"Creates a role grant. Requires the `permissions:write` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role_id":{"type":"string","format":"uuid","description":"The id of the role"},"subject_type":{"type":"string","description":"The type of the subject"},"subject_id":{"type":"string","description":"The id of the subject"},"object_type":{"type":"string","description":"The type of the object"},"object_id":{"type":"string","description":"The id of the object"}},"required":["role_id","subject_type","subject_id"]}}}},"responses":{"201":{"description":"The created role grant."},"400":{"description":"Missing required body parameter:","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"get":{"summary":"List role grants","description":"Returns a list of role grants. Requires the `permissions:read` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of role grants."},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/role_permissions/role_grants/{subjectType}/{subjectId}":{"get":{"summary":"Get role grants for a subject","description":"Returns a list of role grants for the specified subject. Requires the `permissions:read` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The type of the subject"},"required":true,"name":"subjectType","in":"path"},{"schema":{"type":"string","description":"The id of the subject"},"required":true,"name":"subjectId","in":"path"}],"responses":{"200":{"description":"A list of role grants."},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"404":{"description":"Subject with id {subjectId} not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/role_permissions/remove_role_grants_for_subject/":{"post":{"summary":"Delete a role grant for a subject","description":"Deletes a role grant for the specified subject. Also deletes role grants for the subject with objects if object info is provided. Requires the `permissions:write` scope.","tags":["Permissions"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role_id":{"type":"string","format":"uuid","description":"The id of the role"},"subject_type":{"type":"string","description":"The type of the subject"},"subject_id":{"type":"string","description":"The id of the subject"},"object_type":{"type":"string","description":"The type of the object"},"object_id":{"type":"string","description":"The id of the object"}},"required":["role_id","subject_type","subject_id"]}}}},"responses":{"204":{"description":"The role grant has been successfully deleted."},"400":{"description":"Missing required body parameter:","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"401":{"description":"Authentication failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Forbidden: API token is missing scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/access_requests":{"get":{"summary":"List access requests","description":"Returns a list of access requests for the organization. Requires the `users:read` scope.","tags":["Access Requests"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","enum":["PENDING","APPROVED","DENIED"],"description":"The status of the access request"},"required":false,"name":"status","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of items to return per page. If not provided, all items are returned. When provided, enables pagination and the response will include next_token for retrieving subsequent pages. Valid range: 1-100.","example":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor token for retrieving the next page of results. Obtained from the next_token field of a previous paginated response. Only valid when the limit parameter is also provided.","example":"eyJsYXN0SWQiOjEyM30..."},"required":false,"name":"next_token","in":"query"}],"responses":{"200":{"description":"A list of access requests.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"status":{"type":"string","enum":["PENDING","APPROVED","DENIED"]},"legacy_id":{"type":"number"},"requesting_email":{"type":"string"},"updated_by_id":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","status","legacy_id","requesting_email","updated_by_id","created_at","updated_at"],"description":"Access Request"},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A paginated list of access requests."}}}}}}},"/access_requests/{accessRequestId}":{"get":{"summary":"Get an access request","description":"Returns the specified access request. Requires the `users:read` scope.","tags":["Access Requests"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The access request's ID number"},"required":true,"name":"accessRequestId","in":"path"}],"responses":{"200":{"description":"The requested access request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number"},"status":{"type":"string","enum":["PENDING","APPROVED","DENIED"]},"legacy_id":{"type":"number"},"requesting_email":{"type":"string"},"updated_by_id":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","status","legacy_id","requesting_email","updated_by_id","created_at","updated_at"],"description":"Access Request"}},"required":["success","data"],"description":"A single access request."}}}}}},"patch":{"summary":"Approve or deny an access request","description":"Approves or denies an access request and returns the updated access request. Requires the `users:write` scope.","tags":["Access Requests"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The ID of the access request"},"required":true,"name":"accessRequestId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"},"description":"A list of operations to apply to the access request. See the [JSON PATCH specification](https://tools.ietf.org/html/rfc6902) for more details."}},"required":["operations"],"additionalProperties":false,"description":"The body of a request to update an access request's status."}}}},"responses":{"200":{"description":"The approved or denied access request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number"},"status":{"type":"string","enum":["PENDING","APPROVED","DENIED"]},"legacy_id":{"type":"number"},"requesting_email":{"type":"string"},"updated_by_id":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","status","legacy_id","requesting_email","updated_by_id","created_at","updated_at"],"description":"Access Request"}},"required":["success","data"],"description":"An approved or denied access request object."}}}}}}},"/access_tokens":{"get":{"summary":"List access tokens","description":"Returns a list of access tokens in the organization. Requires the `access_tokens:read` scope.","tags":["Access Tokens"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of access tokens.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid of the access token."},"label":{"type":"string","minLength":1,"description":"The name of the access token."},"description":{"type":"string","nullable":true,"description":"The description of the access token."},"last4":{"type":"string","description":"Last 4 characters of the access token secret"},"owner_legacy_id":{"type":"number","description":"The legacy id of the user that created the token"},"scopes":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","label","description","last4","owner_legacy_id","scopes","created_at","updated_at"],"additionalProperties":false,"description":"List of access tokens"},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"]}}}}}},"post":{"summary":"Create an access token","description":"Creates an access token with the specified scopes and returns the created access token. Requires the `access_tokens:write` scope.","tags":["Access Tokens"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":2,"description":"The name of the access token."},"description":{"type":"string","nullable":true,"description":"A short, user-facing description of the access token."},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes to include in the access token. All valid scopes can be found in the [documentation](https://docs.retool.com/reference/api/v2). Any invalid scopes are ignored."}},"required":["label","scopes"]}}}},"responses":{"200":{"description":"The created access token.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid of the access token."},"label":{"type":"string","minLength":1,"description":"The name of the access token."},"description":{"type":"string","nullable":true,"description":"The description of the access token."},"last4":{"type":"string","description":"Last 4 characters of the access token secret"},"owner_legacy_id":{"type":"number","description":"The legacy id of the user that created the token"},"scopes":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"},"access_token":{"type":"string","description":"Secret token for API access. Please note this as it will only be visible once."}},"required":["id","label","description","last4","owner_legacy_id","scopes","created_at","updated_at","access_token"],"description":"The created access token."}},"required":["success","data"]}}}}}}},"/access_tokens/:accessTokenId":{"get":{"summary":"Get an access token","description":"Returns the specified access token. Requires the `access_tokens:read` scope.","tags":["Access Tokens"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"The requested access token.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid of the access token."},"label":{"type":"string","minLength":1,"description":"The name of the access token."},"description":{"type":"string","nullable":true,"description":"The description of the access token."},"last4":{"type":"string","description":"Last 4 characters of the access token secret"},"owner_legacy_id":{"type":"number","description":"The legacy id of the user that created the token"},"scopes":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","label","description","last4","owner_legacy_id","scopes","created_at","updated_at"],"additionalProperties":false,"description":"The requested access token."}},"required":["success","data"]}}}},"404":{"description":"Requested access token could not be found."}}}},"/user_invites":{"get":{"summary":"List user invites","description":"Returns a list of user invites for the organization. Requires the `users:read` scope.","tags":["User Invites"],"responses":{"200":{"description":"A list of user invites.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A list of user invites."}}}}}},"post":{"summary":"Create a user invite","description":"Creates a user invite and returns the created user invite. User invite link expires 7 days after generation. Requires the `users:write` scope.","tags":["User Invites"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"The email of the invitee"},"defaultGroupIds":{"type":"array","items":{"type":"number"},"description":"Group IDs to invite the user to"},"metadata":{"type":"object","additionalProperties":{"nullable":true}}},"required":["email"],"additionalProperties":false,"description":"Body of request to create a user invite"}}}},"responses":{"200":{"description":"The created user invite.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"The created user invite with an invite link"}},"required":["success","data"]}}}}}}},"/user_invites/{userInviteId}":{"get":{"summary":"Get a user invite","description":"Returns the specified user invite. Requires the `users:read` scope.","tags":["User Invites"],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The user invite's ID"},"required":true,"name":"userInviteId","in":"path"}],"responses":{"200":{"description":"The requested user invite.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"number"},"legacy_id":{"type":"number"},"invited_by":{"type":"string"},"invited_email":{"type":"string","format":"email"},"expires_at":{"type":"string"},"claimed_by":{"type":"string","nullable":true},"claimed_at":{"type":"string","nullable":true},"user_type":{"type":"string","nullable":true,"enum":["default","mobile","external"]},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"default":{}},"created_at":{"type":"string"},"invite_link":{"type":"string","format":"uri","description":"User invite link expires 7 days after generation."},"groups":{"type":"array","items":{"type":"object","properties":{"legacy_id":{"type":"number"},"id":{"type":"number"},"name":{"type":"string"}},"required":["legacy_id","id","name"]},"description":"The groups that the user is invited to"}},"required":["id","legacy_id","invited_by","invited_email","expires_at","claimed_by","claimed_at","user_type","metadata","created_at"],"description":"User Invite"}},"required":["success","data"],"description":"A single user invite."}}}}}},"delete":{"summary":"Delete a user invite","description":"Deletes the specified user invite. Requires the `users:write` scope.","tags":["User Invites"],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The user invite's ID"},"required":true,"name":"userInviteId","in":"path"}],"responses":{"204":{"description":"The user invite has been successfully deleted.","content":{}}}}},"/user_invites/{userInviteId}/user_attributes":{"post":{"summary":"Add or update user attributes on a user invite","description":"Adds or updates user attributes on the specified user invite and returns the updated user attributes. Requires the `users:write` scope.","tags":["User Invites"],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The user invite's ID"},"required":true,"name":"userInviteId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user attribute (must match an existing attribute exactly)"},"value":{"type":"string","nullable":true,"description":"The value of the user attribute"}},"required":["name","value"],"description":"The body of a request to add a user attribute or update an existing user attribute on a user invite."}}}},"responses":{"200":{"description":"The updated user attributes.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"The updated user invite metadata, containing the new attribute value"}},"required":["metadata"]}},"required":["success","data"]}}}}}}},"/user_invites/{userInviteId}/user_attributes/{attributeName}":{"delete":{"summary":"Delete a user attribute on a user invite","description":"Deletes the specified user attribute from a user invite and returns the updated user attributes. Requires the `users:write` scope.","tags":["User Invites"],"parameters":[{"schema":{"type":"string","pattern":"^\\d+$","description":"The user invite's ID"},"required":true,"name":"userInviteId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"attributeName","in":"path"}],"responses":{"200":{"description":"The updated user attributes.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"metadata":{"type":"object","additionalProperties":{"nullable":true},"default":{},"description":"The updated user metadata"}},"required":["metadata"]}},"required":["success","data"]}}}}}}},"/resources":{"get":{"summary":"List resources","description":"Returns a paginated list of resources. Requires the `resources:read` scope.","tags":["Resources"],"parameters":[{"schema":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"required":false,"name":"resource_type","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of items to return per page. If not provided, all items are returned. When provided, enables pagination and the response will include next_token for retrieving subsequent pages. Valid range: 1-100.","example":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor token for retrieving the next page of results. Obtained from the next_token field of a previous paginated response. Only valid when the limit parameter is also provided.","example":"eyJsYXN0SWQiOjEyM30..."},"required":false,"name":"next_token","in":"query"}],"responses":{"200":{"description":"A paginated list of resources.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"Resource"},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A paginated list of resources."}}}}}},"post":{"summary":"Create a resource","description":"Creates a resource and returns the created resource. Requires the `resources:write` scope.","tags":["Resources"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["azureBlob","dbServer","grpc","kafka","mcp","mysql","postgresql","redshift","restapi","snowflake","sns","sqs"]},"display_name":{"type":"string","minLength":1},"options":{"anyOf":[{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"azure_blob_account_name":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","auth_with_default_credential_provider_chain","azure_blob_account_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_storage_shared_key"]},"azure_storage_url":{"type":"string"},"azure_storage_account_name":{"type":"string"},"azure_storage_account_key":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","azure_storage_url","azure_storage_account_name","azure_storage_account_key"],"additionalProperties":false}]}},"required":["authentication_options"],"additionalProperties":false,"title":"Azure Blob Options"},{"type":"object","properties":{"database_options":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false},{"type":"object","properties":{"connection_string":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"additionalProperties":false}]}},"required":["database_options"],"additionalProperties":false,"title":"Postgres Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."},"use_dynamic_database_names":{"type":"boolean","description":"Enable this to allow the Database Name to be overridden by a dynamically generated value. This allows using Retool with a database that has been sharded into several different databases."},"use_dynamic_database_hosts":{"type":"boolean","description":"Enable this to allow the Database Host to be overridden by a dynamically generated value. This allows using Retool with several different databases."},"convert_mysql_dates_to_javascript":{"type":"boolean","default":true,"description":"This allows you to turn your MySQL date strings into Javascript Date objects."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"MySQL Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"Redshift Options"},{"type":"object","properties":{"account_identifier":{"type":"string"},"database_options":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"warehouse":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["name"],"additionalProperties":false},"user_role":{"type":"string"},"authentication_options":{"anyOf":[{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake"]},"username":{"type":"string"},"password":{"type":"string"}},"required":["authentication_type","username","password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake_jwt"]},"username":{"type":"string"},"private_key":{"type":"string"},"private_key_passphrase":{"type":"string"}},"required":["authentication_type","username","private_key"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"}},"required":["authentication_type","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false}]}},"required":["account_identifier","database_options","authentication_options"],"additionalProperties":false,"title":"Snowflake Options"},{"type":"object","properties":{"base_url":{"type":"string","description":"Use the absolute URL (e.g. https://example.com)."},"url_parameters":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"headers":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"extra_body_values":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Extra body values are not passed for GET or HEAD requests."},"cookies_to_forward":{"type":"array","items":{"type":"string"},"description":"You can use the pattern COOKIE_your_cookie_name in the Headers section in order to implement the double-cookie submit pattern."},"forward_all_cookies":{"type":"boolean","description":"This is useful if you have dynamic cookie names."},"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"amazon_aws_region":{"type":"string"},"amazon_access_key_id":{"type":"string"},"amazon_secret_access_key":{"type":"string"},"assume_role":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"authentication_type":{"type":"string","enum":["aws4"]},"amazon_service_name":{"type":"string"},"enable_awsv4_authentication_via_headers":{"type":"boolean"}},"required":["amazon_aws_region","amazon_access_key_id","amazon_secret_access_key","authentication_type","amazon_service_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"}},"required":["authentication_type","auth_with_default_credential_provider_chain"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["basic"]},"basic_username":{"type":"string"},"basic_password":{"type":"string"}},"required":["authentication_type","basic_username"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["digest"]},"digest_username":{"type":"string"},"digest_password":{"type":"string"}},"required":["authentication_type","digest_username","digest_password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth1"]},"oauth1_signature_method":{"anyOf":[{"type":"string","enum":["HMAC-SHA1"]},{"type":"string","enum":["HMAC-SHA256"]},{"type":"string","enum":["PLAINTEXT"]}]},"oauth1_consumer_key":{"type":"string"},"oauth1_consumer_secret":{"type":"string"},"oauth1_token_key":{"type":"string"},"oauth1_token_secret":{"type":"string"},"oauth1_realm_parameter":{"type":"string"}},"required":["authentication_type","oauth1_signature_method","oauth1_consumer_key","oauth1_consumer_secret","oauth1_token_key","oauth1_token_secret","oauth1_realm_parameter"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}],"description":"Note that custom auth is not yet supported."}},"required":["base_url"],"additionalProperties":false,"title":"Rest API Options"},{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}]},"max_receive_message_length":{"type":"string"},"max_send_message_length":{"type":"string"},"metadata":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"options":{"nullable":true},"proto_file_url":{"type":"string"},"proto_file_url_headers":{"type":"array","nullable":true,"items":{"type":"array","items":{"type":"string"}}},"proto_source":{"type":"string","enum":["url","file_system","reflection"]},"service_name":{"type":"string"},"service_names":{"type":"array","items":{"type":"string"}},"verify_session_action_enabled":{"type":"boolean"}},"additionalProperties":false,"title":"gRPC Options"},{"type":"object","properties":{},"additionalProperties":false}]}},"required":["type","display_name","options"]}}}},"responses":{"200":{"description":"The created resource.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"The created resource."}},"required":["success","data"]}}}}}}},"/resources/{resourceId}":{"get":{"summary":"Get a resource","description":"Returns the specified resource. Requires the `resources:read` scope.","tags":["Resources"],"parameters":[{"schema":{"type":"string","description":"The uuid or name for the resource."},"required":true,"name":"resourceId","in":"path"}],"responses":{"200":{"description":"The requested resource.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"Resource"}},"required":["success","data"],"description":"A single resource"}}}}}},"patch":{"summary":"Update a resource","description":"Updates a resource and returns the updated resource. Requires the `resources:write` scope.","tags":["Resources"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The uuid or name for the resource."},"required":true,"name":"resourceId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"},"description":"A list of operations to apply to the resource. See the [JSON PATCH specification](https://tools.ietf.org/html/rfc6902) for more details."}},"required":["operations"],"additionalProperties":false,"description":"The body of a request to update a resource."}}}},"responses":{"200":{"description":"The updated resource.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"The updated resource."}},"required":["success","data"]}}}}}},"delete":{"summary":"Delete a resource","description":"Deletes the specified resource. Requires the `resources:write` scope.","tags":["Resources"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"The uuid or name for the resource."},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"boolean","description":"Whether to delete the underlying retool database when deleting the resource."},"required":false,"name":"deleteUnderlyingDB","in":"query"}],"responses":{"204":{"description":"The resource has been successfully deleted."}}}},"/resource_configurations":{"get":{"summary":"List resource configurations","description":"Returns a paginated list of resource configurations. Requires the `resources:read` scope.","tags":["Resource Configurations"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"required":false,"name":"resource_type","in":"query"},{"schema":{"type":"string","description":"The uuid or name for the resource."},"required":false,"name":"resource_id","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"environment_id","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of items to return per page. If not provided, all items are returned. When provided, enables pagination and the response will include next_token for retrieving subsequent pages. Valid range: 1-100.","example":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor token for retrieving the next page of results. Obtained from the next_token field of a previous paginated response. Only valid when the limit parameter is also provided.","example":"eyJsYXN0SWQiOjEyM30..."},"required":false,"name":"next_token","in":"query"}],"responses":{"200":{"description":"A paginated list of resource configurations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid for the resource configuration."},"resource":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"Resource"},"environment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"Environment"},"options":{"anyOf":[{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"azure_blob_account_name":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","auth_with_default_credential_provider_chain","azure_blob_account_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_storage_shared_key"]},"azure_storage_url":{"type":"string"},"azure_storage_account_name":{"type":"string"},"azure_storage_account_key":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","azure_storage_url","azure_storage_account_name","azure_storage_account_key"],"additionalProperties":false}]}},"required":["authentication_options"],"additionalProperties":false,"title":"Azure Blob Options"},{"type":"object","properties":{"database_options":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false},{"type":"object","properties":{"connection_string":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"additionalProperties":false}]}},"required":["database_options"],"additionalProperties":false,"title":"Postgres Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."},"use_dynamic_database_names":{"type":"boolean","description":"Enable this to allow the Database Name to be overridden by a dynamically generated value. This allows using Retool with a database that has been sharded into several different databases."},"use_dynamic_database_hosts":{"type":"boolean","description":"Enable this to allow the Database Host to be overridden by a dynamically generated value. This allows using Retool with several different databases."},"convert_mysql_dates_to_javascript":{"type":"boolean","default":true,"description":"This allows you to turn your MySQL date strings into Javascript Date objects."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"MySQL Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"Redshift Options"},{"type":"object","properties":{"account_identifier":{"type":"string"},"database_options":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"warehouse":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["name"],"additionalProperties":false},"user_role":{"type":"string"},"authentication_options":{"anyOf":[{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake"]},"username":{"type":"string"},"password":{"type":"string"}},"required":["authentication_type","username","password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake_jwt"]},"username":{"type":"string"},"private_key":{"type":"string"},"private_key_passphrase":{"type":"string"}},"required":["authentication_type","username","private_key"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"}},"required":["authentication_type","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false}]}},"required":["account_identifier","database_options","authentication_options"],"additionalProperties":false,"title":"Snowflake Options"},{"type":"object","properties":{"base_url":{"type":"string","description":"Use the absolute URL (e.g. https://example.com)."},"url_parameters":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"headers":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"extra_body_values":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Extra body values are not passed for GET or HEAD requests."},"cookies_to_forward":{"type":"array","items":{"type":"string"},"description":"You can use the pattern COOKIE_your_cookie_name in the Headers section in order to implement the double-cookie submit pattern."},"forward_all_cookies":{"type":"boolean","description":"This is useful if you have dynamic cookie names."},"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"amazon_aws_region":{"type":"string"},"amazon_access_key_id":{"type":"string"},"amazon_secret_access_key":{"type":"string"},"assume_role":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"authentication_type":{"type":"string","enum":["aws4"]},"amazon_service_name":{"type":"string"},"enable_awsv4_authentication_via_headers":{"type":"boolean"}},"required":["amazon_aws_region","amazon_access_key_id","amazon_secret_access_key","authentication_type","amazon_service_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"}},"required":["authentication_type","auth_with_default_credential_provider_chain"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["basic"]},"basic_username":{"type":"string"},"basic_password":{"type":"string"}},"required":["authentication_type","basic_username"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["digest"]},"digest_username":{"type":"string"},"digest_password":{"type":"string"}},"required":["authentication_type","digest_username","digest_password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth1"]},"oauth1_signature_method":{"anyOf":[{"type":"string","enum":["HMAC-SHA1"]},{"type":"string","enum":["HMAC-SHA256"]},{"type":"string","enum":["PLAINTEXT"]}]},"oauth1_consumer_key":{"type":"string"},"oauth1_consumer_secret":{"type":"string"},"oauth1_token_key":{"type":"string"},"oauth1_token_secret":{"type":"string"},"oauth1_realm_parameter":{"type":"string"}},"required":["authentication_type","oauth1_signature_method","oauth1_consumer_key","oauth1_consumer_secret","oauth1_token_key","oauth1_token_secret","oauth1_realm_parameter"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}],"description":"Note that custom auth is not yet supported."}},"required":["base_url"],"additionalProperties":false,"title":"Rest API Options"},{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}]},"max_receive_message_length":{"type":"string"},"max_send_message_length":{"type":"string"},"metadata":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"options":{"nullable":true},"proto_file_url":{"type":"string"},"proto_file_url_headers":{"type":"array","nullable":true,"items":{"type":"array","items":{"type":"string"}}},"proto_source":{"type":"string","enum":["url","file_system","reflection"]},"service_name":{"type":"string"},"service_names":{"type":"array","items":{"type":"string"}},"verify_session_action_enabled":{"type":"boolean"}},"additionalProperties":false,"title":"gRPC Options"},{"type":"object","properties":{},"additionalProperties":false}]},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","resource","environment","options","created_at","updated_at"],"additionalProperties":false,"description":"A list of resource configurations."},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"]}}}}}},"post":{"summary":"Create a resource configuration","description":"Creates a resource configuration and returns the created resource configuration. Requires the `resources:write` scope.","tags":["Resource Configurations"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"resource_id":{"type":"string","description":"A UUID that uniquely identifies a resource. This is also referenced within the Retool app. For example, when you edit a resource, the ID can be found in the url."},"environment_id":{"type":"string","format":"uuid","description":"A UUID that uniquely identifies an environment."},"options":{"anyOf":[{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"azure_blob_account_name":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","auth_with_default_credential_provider_chain","azure_blob_account_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_storage_shared_key"]},"azure_storage_url":{"type":"string"},"azure_storage_account_name":{"type":"string"},"azure_storage_account_key":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","azure_storage_url","azure_storage_account_name","azure_storage_account_key"],"additionalProperties":false}]}},"required":["authentication_options"],"additionalProperties":false,"title":"Azure Blob Options"},{"type":"object","properties":{"database_options":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false},{"type":"object","properties":{"connection_string":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"additionalProperties":false}]}},"required":["database_options"],"additionalProperties":false,"title":"Postgres Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."},"use_dynamic_database_names":{"type":"boolean","description":"Enable this to allow the Database Name to be overridden by a dynamically generated value. This allows using Retool with a database that has been sharded into several different databases."},"use_dynamic_database_hosts":{"type":"boolean","description":"Enable this to allow the Database Host to be overridden by a dynamically generated value. This allows using Retool with several different databases."},"convert_mysql_dates_to_javascript":{"type":"boolean","default":true,"description":"This allows you to turn your MySQL date strings into Javascript Date objects."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"MySQL Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"Redshift Options"},{"type":"object","properties":{"account_identifier":{"type":"string"},"database_options":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"warehouse":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["name"],"additionalProperties":false},"user_role":{"type":"string"},"authentication_options":{"anyOf":[{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake"]},"username":{"type":"string"},"password":{"type":"string"}},"required":["authentication_type","username","password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake_jwt"]},"username":{"type":"string"},"private_key":{"type":"string"},"private_key_passphrase":{"type":"string"}},"required":["authentication_type","username","private_key"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"}},"required":["authentication_type","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false}]}},"required":["account_identifier","database_options","authentication_options"],"additionalProperties":false,"title":"Snowflake Options"},{"type":"object","properties":{"base_url":{"type":"string","description":"Use the absolute URL (e.g. https://example.com)."},"url_parameters":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"headers":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"extra_body_values":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Extra body values are not passed for GET or HEAD requests."},"cookies_to_forward":{"type":"array","items":{"type":"string"},"description":"You can use the pattern COOKIE_your_cookie_name in the Headers section in order to implement the double-cookie submit pattern."},"forward_all_cookies":{"type":"boolean","description":"This is useful if you have dynamic cookie names."},"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"amazon_aws_region":{"type":"string"},"amazon_access_key_id":{"type":"string"},"amazon_secret_access_key":{"type":"string"},"assume_role":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"authentication_type":{"type":"string","enum":["aws4"]},"amazon_service_name":{"type":"string"},"enable_awsv4_authentication_via_headers":{"type":"boolean"}},"required":["amazon_aws_region","amazon_access_key_id","amazon_secret_access_key","authentication_type","amazon_service_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"}},"required":["authentication_type","auth_with_default_credential_provider_chain"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["basic"]},"basic_username":{"type":"string"},"basic_password":{"type":"string"}},"required":["authentication_type","basic_username"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["digest"]},"digest_username":{"type":"string"},"digest_password":{"type":"string"}},"required":["authentication_type","digest_username","digest_password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth1"]},"oauth1_signature_method":{"anyOf":[{"type":"string","enum":["HMAC-SHA1"]},{"type":"string","enum":["HMAC-SHA256"]},{"type":"string","enum":["PLAINTEXT"]}]},"oauth1_consumer_key":{"type":"string"},"oauth1_consumer_secret":{"type":"string"},"oauth1_token_key":{"type":"string"},"oauth1_token_secret":{"type":"string"},"oauth1_realm_parameter":{"type":"string"}},"required":["authentication_type","oauth1_signature_method","oauth1_consumer_key","oauth1_consumer_secret","oauth1_token_key","oauth1_token_secret","oauth1_realm_parameter"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}],"description":"Note that custom auth is not yet supported."}},"required":["base_url"],"additionalProperties":false,"title":"Rest API Options"},{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}]},"max_receive_message_length":{"type":"string"},"max_send_message_length":{"type":"string"},"metadata":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"options":{"nullable":true},"proto_file_url":{"type":"string"},"proto_file_url_headers":{"type":"array","nullable":true,"items":{"type":"array","items":{"type":"string"}}},"proto_source":{"type":"string","enum":["url","file_system","reflection"]},"service_name":{"type":"string"},"service_names":{"type":"array","items":{"type":"string"}},"verify_session_action_enabled":{"type":"boolean"}},"additionalProperties":false,"title":"gRPC Options"},{"type":"object","properties":{},"additionalProperties":false}]}},"required":["resource_id","environment_id","options"]}}}},"responses":{"200":{"description":"The created resource configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid for the resource configuration."},"resource":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"Resource"},"environment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"Environment"},"options":{"anyOf":[{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"azure_blob_account_name":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","auth_with_default_credential_provider_chain","azure_blob_account_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_storage_shared_key"]},"azure_storage_url":{"type":"string"},"azure_storage_account_name":{"type":"string"},"azure_storage_account_key":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","azure_storage_url","azure_storage_account_name","azure_storage_account_key"],"additionalProperties":false}]}},"required":["authentication_options"],"additionalProperties":false,"title":"Azure Blob Options"},{"type":"object","properties":{"database_options":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false},{"type":"object","properties":{"connection_string":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"additionalProperties":false}]}},"required":["database_options"],"additionalProperties":false,"title":"Postgres Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."},"use_dynamic_database_names":{"type":"boolean","description":"Enable this to allow the Database Name to be overridden by a dynamically generated value. This allows using Retool with a database that has been sharded into several different databases."},"use_dynamic_database_hosts":{"type":"boolean","description":"Enable this to allow the Database Host to be overridden by a dynamically generated value. This allows using Retool with several different databases."},"convert_mysql_dates_to_javascript":{"type":"boolean","default":true,"description":"This allows you to turn your MySQL date strings into Javascript Date objects."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"MySQL Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"Redshift Options"},{"type":"object","properties":{"account_identifier":{"type":"string"},"database_options":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"warehouse":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["name"],"additionalProperties":false},"user_role":{"type":"string"},"authentication_options":{"anyOf":[{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake"]},"username":{"type":"string"},"password":{"type":"string"}},"required":["authentication_type","username","password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake_jwt"]},"username":{"type":"string"},"private_key":{"type":"string"},"private_key_passphrase":{"type":"string"}},"required":["authentication_type","username","private_key"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"}},"required":["authentication_type","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false}]}},"required":["account_identifier","database_options","authentication_options"],"additionalProperties":false,"title":"Snowflake Options"},{"type":"object","properties":{"base_url":{"type":"string","description":"Use the absolute URL (e.g. https://example.com)."},"url_parameters":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"headers":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"extra_body_values":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Extra body values are not passed for GET or HEAD requests."},"cookies_to_forward":{"type":"array","items":{"type":"string"},"description":"You can use the pattern COOKIE_your_cookie_name in the Headers section in order to implement the double-cookie submit pattern."},"forward_all_cookies":{"type":"boolean","description":"This is useful if you have dynamic cookie names."},"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"amazon_aws_region":{"type":"string"},"amazon_access_key_id":{"type":"string"},"amazon_secret_access_key":{"type":"string"},"assume_role":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"authentication_type":{"type":"string","enum":["aws4"]},"amazon_service_name":{"type":"string"},"enable_awsv4_authentication_via_headers":{"type":"boolean"}},"required":["amazon_aws_region","amazon_access_key_id","amazon_secret_access_key","authentication_type","amazon_service_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"}},"required":["authentication_type","auth_with_default_credential_provider_chain"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["basic"]},"basic_username":{"type":"string"},"basic_password":{"type":"string"}},"required":["authentication_type","basic_username"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["digest"]},"digest_username":{"type":"string"},"digest_password":{"type":"string"}},"required":["authentication_type","digest_username","digest_password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth1"]},"oauth1_signature_method":{"anyOf":[{"type":"string","enum":["HMAC-SHA1"]},{"type":"string","enum":["HMAC-SHA256"]},{"type":"string","enum":["PLAINTEXT"]}]},"oauth1_consumer_key":{"type":"string"},"oauth1_consumer_secret":{"type":"string"},"oauth1_token_key":{"type":"string"},"oauth1_token_secret":{"type":"string"},"oauth1_realm_parameter":{"type":"string"}},"required":["authentication_type","oauth1_signature_method","oauth1_consumer_key","oauth1_consumer_secret","oauth1_token_key","oauth1_token_secret","oauth1_realm_parameter"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}],"description":"Note that custom auth is not yet supported."}},"required":["base_url"],"additionalProperties":false,"title":"Rest API Options"},{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}]},"max_receive_message_length":{"type":"string"},"max_send_message_length":{"type":"string"},"metadata":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"options":{"nullable":true},"proto_file_url":{"type":"string"},"proto_file_url_headers":{"type":"array","nullable":true,"items":{"type":"array","items":{"type":"string"}}},"proto_source":{"type":"string","enum":["url","file_system","reflection"]},"service_name":{"type":"string"},"service_names":{"type":"array","items":{"type":"string"}},"verify_session_action_enabled":{"type":"boolean"}},"additionalProperties":false,"title":"gRPC Options"},{"type":"object","properties":{},"additionalProperties":false}]},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","resource","environment","options","created_at","updated_at"],"additionalProperties":false,"description":"The created resource configuration."}},"required":["success","data"]}}}}}}},"/resource_configurations/{configurationId}":{"get":{"summary":"Get a resource configuration","description":"Returns the specified resource configuration. Requires the `resources:read` scope.","tags":["Resource Configurations"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The resource configuration id."},"required":true,"name":"configurationId","in":"path"}],"responses":{"200":{"description":"The requested resource configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid for the resource configuration."},"resource":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"Resource"},"environment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"Environment"},"options":{"anyOf":[{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"azure_blob_account_name":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","auth_with_default_credential_provider_chain","azure_blob_account_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_storage_shared_key"]},"azure_storage_url":{"type":"string"},"azure_storage_account_name":{"type":"string"},"azure_storage_account_key":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","azure_storage_url","azure_storage_account_name","azure_storage_account_key"],"additionalProperties":false}]}},"required":["authentication_options"],"additionalProperties":false,"title":"Azure Blob Options"},{"type":"object","properties":{"database_options":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false},{"type":"object","properties":{"connection_string":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"additionalProperties":false}]}},"required":["database_options"],"additionalProperties":false,"title":"Postgres Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."},"use_dynamic_database_names":{"type":"boolean","description":"Enable this to allow the Database Name to be overridden by a dynamically generated value. This allows using Retool with a database that has been sharded into several different databases."},"use_dynamic_database_hosts":{"type":"boolean","description":"Enable this to allow the Database Host to be overridden by a dynamically generated value. This allows using Retool with several different databases."},"convert_mysql_dates_to_javascript":{"type":"boolean","default":true,"description":"This allows you to turn your MySQL date strings into Javascript Date objects."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"MySQL Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"Redshift Options"},{"type":"object","properties":{"account_identifier":{"type":"string"},"database_options":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"warehouse":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["name"],"additionalProperties":false},"user_role":{"type":"string"},"authentication_options":{"anyOf":[{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake"]},"username":{"type":"string"},"password":{"type":"string"}},"required":["authentication_type","username","password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake_jwt"]},"username":{"type":"string"},"private_key":{"type":"string"},"private_key_passphrase":{"type":"string"}},"required":["authentication_type","username","private_key"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"}},"required":["authentication_type","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false}]}},"required":["account_identifier","database_options","authentication_options"],"additionalProperties":false,"title":"Snowflake Options"},{"type":"object","properties":{"base_url":{"type":"string","description":"Use the absolute URL (e.g. https://example.com)."},"url_parameters":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"headers":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"extra_body_values":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Extra body values are not passed for GET or HEAD requests."},"cookies_to_forward":{"type":"array","items":{"type":"string"},"description":"You can use the pattern COOKIE_your_cookie_name in the Headers section in order to implement the double-cookie submit pattern."},"forward_all_cookies":{"type":"boolean","description":"This is useful if you have dynamic cookie names."},"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"amazon_aws_region":{"type":"string"},"amazon_access_key_id":{"type":"string"},"amazon_secret_access_key":{"type":"string"},"assume_role":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"authentication_type":{"type":"string","enum":["aws4"]},"amazon_service_name":{"type":"string"},"enable_awsv4_authentication_via_headers":{"type":"boolean"}},"required":["amazon_aws_region","amazon_access_key_id","amazon_secret_access_key","authentication_type","amazon_service_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"}},"required":["authentication_type","auth_with_default_credential_provider_chain"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["basic"]},"basic_username":{"type":"string"},"basic_password":{"type":"string"}},"required":["authentication_type","basic_username"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["digest"]},"digest_username":{"type":"string"},"digest_password":{"type":"string"}},"required":["authentication_type","digest_username","digest_password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth1"]},"oauth1_signature_method":{"anyOf":[{"type":"string","enum":["HMAC-SHA1"]},{"type":"string","enum":["HMAC-SHA256"]},{"type":"string","enum":["PLAINTEXT"]}]},"oauth1_consumer_key":{"type":"string"},"oauth1_consumer_secret":{"type":"string"},"oauth1_token_key":{"type":"string"},"oauth1_token_secret":{"type":"string"},"oauth1_realm_parameter":{"type":"string"}},"required":["authentication_type","oauth1_signature_method","oauth1_consumer_key","oauth1_consumer_secret","oauth1_token_key","oauth1_token_secret","oauth1_realm_parameter"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}],"description":"Note that custom auth is not yet supported."}},"required":["base_url"],"additionalProperties":false,"title":"Rest API Options"},{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}]},"max_receive_message_length":{"type":"string"},"max_send_message_length":{"type":"string"},"metadata":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"options":{"nullable":true},"proto_file_url":{"type":"string"},"proto_file_url_headers":{"type":"array","nullable":true,"items":{"type":"array","items":{"type":"string"}}},"proto_source":{"type":"string","enum":["url","file_system","reflection"]},"service_name":{"type":"string"},"service_names":{"type":"array","items":{"type":"string"}},"verify_session_action_enabled":{"type":"boolean"}},"additionalProperties":false,"title":"gRPC Options"},{"type":"object","properties":{},"additionalProperties":false}]},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","resource","environment","options","created_at","updated_at"],"additionalProperties":false,"description":"Resource Configuration"}}}}}},"delete":{"summary":"Delete a resource configuration","description":"Deletes the specified resource configuration. Requires the `resources:write` scope.","tags":["Resource Configurations"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The resource configuration id."},"required":true,"name":"configurationId","in":"path"}],"responses":{"204":{"description":"The resource configuration has been successfully deleted."}}},"patch":{"summary":"Update a resource configuration","description":"Updates a resource configuration and returns the updated resource configuration. Requires the `resources:write` scope.","tags":["Resource Configurations"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The resource configuration id."},"required":true,"name":"configurationId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"},"description":"A list of operations to apply to the resource configuration. See the [JSON PATCH specification](https://tools.ietf.org/html/rfc6902) for more details."}},"required":["operations"],"additionalProperties":false,"description":"The body of a request to update a resource configuration."}}}},"responses":{"200":{"description":"The updated resource configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The uuid for the resource configuration."},"resource":{"type":"object","properties":{"id":{"type":"string","description":"The uuid or name for the resource."},"type":{"type":"string","enum":["airflow","alloydb","anthropic","asana","athena","awsBedrock","azureAI","azureBlob","basecamp","bigid","bigquery","cassandra","circleci","closeio","cockroachdb","cosmosdb","couchdb","customAIProvider","databricks","databricksLakebase","datadog","datastore","dbServer","denodo","dynamodb","elasticsearch","firebase","front","gcs","github","googleAnalytics","googleCalendar","googleDocs","googleGemini","googleMaps","googleSearchConsole","googleSlides","googleVertexAI","googlesheets","graphql","grpc","hubspot","jdbc","jira","kafka","lambda","launchdarkly","mcp","microsoftTeams","mongodb","motherduck","mssql","mysql","notion","onesignal","openAI","openAIProvider","openapi","oracledb","postgresql","presto","redis","redshift","restapi","rethinkdb","retoolAI","retoolDb","retoolEmail","retoolSdk","retoolStorage","s3","salesforce","saphana","sendgrid","serviceNow","shell","slack","slackopenapi","smtp","snowflake","sns","sqs","stripe","tavily","twilio","vertica"],"description":"The type of resource."},"display_name":{"type":"string","minLength":1},"folder_id":{"type":"string","nullable":true,"description":"The id of the folder this resource belongs to"},"protected":{"type":"boolean","description":"Whether the resource is protected in source control"},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","type","display_name","folder_id","protected","created_at","updated_at"],"additionalProperties":false,"description":"Resource"},"environment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"Environment"},"options":{"anyOf":[{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"azure_blob_account_name":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","auth_with_default_credential_provider_chain","azure_blob_account_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_storage_shared_key"]},"azure_storage_url":{"type":"string"},"azure_storage_account_name":{"type":"string"},"azure_storage_account_key":{"type":"string"},"azure_blob_default_container_name":{"type":"string"}},"required":["authentication_type","azure_storage_url","azure_storage_account_name","azure_storage_account_key"],"additionalProperties":false}]}},"required":["authentication_options"],"additionalProperties":false,"title":"Azure Blob Options"},{"type":"object","properties":{"database_options":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false},{"type":"object","properties":{"connection_string":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"additionalProperties":false}]}},"required":["database_options"],"additionalProperties":false,"title":"Postgres Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"},"client_key":{"type":"string","nullable":true},"client_cert":{"type":"string","nullable":true},"ca_cert":{"type":"string","nullable":true}},"additionalProperties":false},"ssh_tunnel_options":{"type":"object","properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"private_key_name":{"type":"string"}},"required":["enabled","host","port"],"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."},"use_dynamic_database_names":{"type":"boolean","description":"Enable this to allow the Database Name to be overridden by a dynamically generated value. This allows using Retool with a database that has been sharded into several different databases."},"use_dynamic_database_hosts":{"type":"boolean","description":"Enable this to allow the Database Host to be overridden by a dynamically generated value. This allows using Retool with several different databases."},"convert_mysql_dates_to_javascript":{"type":"boolean","default":true,"description":"This allows you to turn your MySQL date strings into Javascript Date objects."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"MySQL Options"},{"type":"object","properties":{"database_options":{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"ssl_settings":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["host","port"],"additionalProperties":false}},"required":["database_options"],"additionalProperties":false,"title":"Redshift Options"},{"type":"object","properties":{"account_identifier":{"type":"string"},"database_options":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"warehouse":{"type":"string"},"disable_converting_queries_to_prepared_statements":{"type":"boolean","description":"This allows you to use Javascript to dynamically generate SQL but also turns off SQL injection protection."},"show_write_gui_only":{"type":"boolean","description":"This allows you to enable writing via only the restrictive GUI query editor."}},"required":["name"],"additionalProperties":false},"user_role":{"type":"string"},"authentication_options":{"anyOf":[{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake"]},"username":{"type":"string"},"password":{"type":"string"}},"required":["authentication_type","username","password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["snowflake_jwt"]},"username":{"type":"string"},"private_key":{"type":"string"},"private_key_passphrase":{"type":"string"}},"required":["authentication_type","username","private_key"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"}},"required":["authentication_type","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false}]}},"required":["account_identifier","database_options","authentication_options"],"additionalProperties":false,"title":"Snowflake Options"},{"type":"object","properties":{"base_url":{"type":"string","description":"Use the absolute URL (e.g. https://example.com)."},"url_parameters":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"headers":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"extra_body_values":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Extra body values are not passed for GET or HEAD requests."},"cookies_to_forward":{"type":"array","items":{"type":"string"},"description":"You can use the pattern COOKIE_your_cookie_name in the Headers section in order to implement the double-cookie submit pattern."},"forward_all_cookies":{"type":"boolean","description":"This is useful if you have dynamic cookie names."},"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"amazon_aws_region":{"type":"string"},"amazon_access_key_id":{"type":"string"},"amazon_secret_access_key":{"type":"string"},"assume_role":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"},"authentication_type":{"type":"string","enum":["aws4"]},"amazon_service_name":{"type":"string"},"enable_awsv4_authentication_via_headers":{"type":"boolean"}},"required":["amazon_aws_region","amazon_access_key_id","amazon_secret_access_key","authentication_type","amazon_service_name"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["azure_identity"]},"azureid_scope":{"type":"string"},"azureid_tenant_id":{"type":"string"},"azureid_client_id":{"type":"string"},"azureid_client_secret":{"type":"string"},"auth_with_default_credential_provider_chain":{"type":"boolean"}},"required":["authentication_type","auth_with_default_credential_provider_chain"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["basic"]},"basic_username":{"type":"string"},"basic_password":{"type":"string"}},"required":["authentication_type","basic_username"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["digest"]},"digest_username":{"type":"string"},"digest_password":{"type":"string"}},"required":["authentication_type","digest_username","digest_password"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth1"]},"oauth1_signature_method":{"anyOf":[{"type":"string","enum":["HMAC-SHA1"]},{"type":"string","enum":["HMAC-SHA256"]},{"type":"string","enum":["PLAINTEXT"]}]},"oauth1_consumer_key":{"type":"string"},"oauth1_consumer_secret":{"type":"string"},"oauth1_token_key":{"type":"string"},"oauth1_token_secret":{"type":"string"},"oauth1_realm_parameter":{"type":"string"}},"required":["authentication_type","oauth1_signature_method","oauth1_consumer_key","oauth1_consumer_secret","oauth1_token_key","oauth1_token_secret","oauth1_realm_parameter"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}],"description":"Note that custom auth is not yet supported."}},"required":["base_url"],"additionalProperties":false,"title":"Rest API Options"},{"type":"object","properties":{"authentication_options":{"anyOf":[{"type":"object","properties":{"authentication_type":{"type":"string","enum":["auth0"]},"auth0_domain":{"type":"string"},"auth0_client_id":{"type":"string"},"auth0_client_secret":{"type":"string"},"auth0_custom_audience":{"type":"string"}},"required":["authentication_type","auth0_domain","auth0_client_id","auth0_client_secret","auth0_custom_audience"],"additionalProperties":false},{"type":"object","properties":{"bearer_token":{"type":"string"},"authentication_type":{"type":"string","enum":["bearer"]}},"required":["authentication_type"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["oauth2"]},"oauth2_audience":{"type":"string"},"oauth2_access_token":{"type":"string"},"oauth2_access_token_url":{"type":"string"},"oauth2_access_token_lifespan_seconds":{"type":"number","nullable":true},"oauth2_auth_url":{"type":"string"},"oauth2_client_id":{"type":"string"},"oauth2_client_secret":{"type":"string"},"oauth2_callback_url":{"type":"string"},"oauth2_id_token":{"type":"string"},"oauth2_refresh_token":{"type":"string"},"oauth2_scope":{"type":"string"},"oauth2_share_user_credentials":{"type":"boolean"},"verify_session_url":{"type":"string"}},"required":["authentication_type","oauth2_access_token_url","oauth2_auth_url","oauth2_client_id","oauth2_client_secret"],"additionalProperties":false},{"type":"object","properties":{"authentication_type":{"type":"string","enum":["none"]}},"required":["authentication_type"],"additionalProperties":false}]},"max_receive_message_length":{"type":"string"},"max_send_message_length":{"type":"string"},"metadata":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"options":{"nullable":true},"proto_file_url":{"type":"string"},"proto_file_url_headers":{"type":"array","nullable":true,"items":{"type":"array","items":{"type":"string"}}},"proto_source":{"type":"string","enum":["url","file_system","reflection"]},"service_name":{"type":"string"},"service_names":{"type":"array","items":{"type":"string"}},"verify_session_action_enabled":{"type":"boolean"}},"additionalProperties":false,"title":"gRPC Options"},{"type":"object","properties":{},"additionalProperties":false}]},"created_at":{"type":"string","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","example":"2019-02-24T18:28:18.790Z"}},"required":["id","resource","environment","options","created_at","updated_at"],"additionalProperties":false,"description":"The updated resource configuration."}},"required":["success","data"]}}}}}}},"/environments":{"get":{"summary":"List environments","description":"Returns a list of environments. Requires the `environments:read` scope.","tags":["Environments"],"responses":{"200":{"description":"A list of environments.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"Environment"},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A list of environments."}}}}}},"post":{"summary":"Create an environment","description":"Creates an environment and returns the created environment. Requires the `environments:write` scope.","tags":["Environments"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the environment."},"description":{"type":"string","description":"A description for the environment."},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","description":"The (hexadecimal) color of the environment.","example":"#FFFFFF"}},"required":["name","color"]}}}},"responses":{"200":{"description":"The created environment.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"The created environment"}},"required":["success","data"]}}}},"409":{"description":"Environment with the same properties already exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/environments/{environmentId}":{"get":{"summary":"Get an environment","description":"Returns the specified environment. Requires the `environments:read` scope.","tags":["Environments"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"environmentId","in":"path"}],"responses":{"200":{"description":"The requested environment.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"The requested environment"}},"required":["success","data"]}}}}}},"patch":{"summary":"Update an environment","description":"Updates the specified environment and returns the updated environment. Requires the `environments:write` scope.","tags":["Environments"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"environmentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"},"description":"A list of operations to apply to the environment. See the [JSON PATCH specification](https://tools.ietf.org/html/rfc6902) for more details."}},"required":["operations"],"additionalProperties":false,"description":"The body of a request to update an environment."}}}},"responses":{"200":{"description":"The updated environment.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"color":{"type":"string","pattern":"^#[A-Fa-f0-9]{6}$","example":"#FFFFFF"},"default":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","color","default","created_at","updated_at"],"description":"The updated environment."}},"required":["success","data"]}}}}}},"delete":{"summary":"Delete an environment","description":"Deletes the specified environment. Requires the `environments:write` scope.","tags":["Environments"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"environmentId","in":"path"}],"responses":{"204":{"description":"The environment has been successfully deleted."},"404":{"description":"Environment not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/custom_component_libraries/{libraryId}":{"get":{"summary":"Get a custom component library","description":"Returns the specified custom component library. Requires the `custom_components:read` scope.","tags":["Custom Component Libraries"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"libraryId","in":"path"}],"responses":{"200":{"description":"The requested custom component library.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"How the library will be referred to in Toolscript, and other code based usages."},"description":{"type":"string","nullable":true},"label":{"type":"string","description":"How the library will be referred to in the Retool UI. Should be human readable."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","description","label","created_at","updated_at"],"description":"Custom Component Library"}},"required":["success","data"]}}}},"404":{"description":"Custom component library not found."}}}},"/custom_component_libraries":{"post":{"summary":"Create a custom component library","description":"Creates a custom component library and returns the created library. Requires the `custom_components:write` scope.","tags":["Custom Component Libraries"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Specifies a specific id to use for the library. Used for syncronizing libraries across Retool Instances."},"name":{"type":"string","description":"How the library will be referred to in Toolscript, and other code based usages."},"description":{"type":"string","nullable":true},"label":{"type":"string","description":"How the library will be referred to in the Retool UI. Should be human readable."}},"required":["name","description","label"]}}}},"responses":{"200":{"description":"The newly created custom component library.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"How the library will be referred to in Toolscript, and other code based usages."},"description":{"type":"string","nullable":true},"label":{"type":"string","description":"How the library will be referred to in the Retool UI. Should be human readable."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","description","label","created_at","updated_at"],"description":"Custom Component Library"}},"required":["success","data"],"description":"The newly created Custom Component Library."}}}},"409":{"description":"A library with the provided ID already exists."}}},"get":{"summary":"List custom component libraries","description":"Returns a paginated list of custom component libraries. Requires the `custom_components:read` scope.","tags":["Custom Component Libraries"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"libraryId","in":"query"}],"responses":{"200":{"description":"A paginated list of custom component libraries.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"How the library will be referred to in Toolscript, and other code based usages."},"description":{"type":"string","nullable":true},"label":{"type":"string","description":"How the library will be referred to in the Retool UI. Should be human readable."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","description","label","created_at","updated_at"],"description":"Custom Component Library"},"description":"An array of requested items."}},"required":["success","data"],"description":"A list of custom component libraries."}}}}}}},"/custom_component_libraries/{libraryId}/revisions":{"post":{"summary":"Create a custom component library revision","description":"Creates a new revision of the specified custom component library and returns the created revision. Requires the `custom_components:write` scope.","tags":["Custom Component Libraries"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"libraryId","in":"path"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Specifies a specific id to use for the library. Used for syncronizing libraries across Retool Instances."},"version_bump":{"type":"string","enum":["minor","major","dev","specify_version"]},"version":{"type":"string","description":"A specific version tag to use. Also specify version_bump as 'specify_version'."},"files":{"type":"string","format":"binary"}},"required":["version_bump","files"]}}}},"responses":{"200":{"description":"The newly created custom component library revision.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"version":{"type":"string"},"custom_component_library_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","version","custom_component_library_id","created_at","updated_at"],"description":"Custom Component Library Revision"}},"required":["success","data"],"description":"The newly created Custom Component Library Revision."}}}},"409":{"description":"A revision with the provided ID already exists."}}},"get":{"summary":"List revisions of a custom component library","description":"Returns a list of revisions for the specified custom component library. Requires the `custom_components:read` scope.","tags":["Custom Component Libraries"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"libraryId","in":"path"}],"responses":{"200":{"description":"A list of revisions for the custom component library.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"version":{"type":"string"},"custom_component_library_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","version","custom_component_library_id","created_at","updated_at"],"description":"Custom Component Library Revision"},"description":"An array of requested items."}},"required":["success","data"]}}}},"404":{"description":"Custom component library not found."}}}},"/custom_component_libraries/{libraryId}/revisions/{revisionId}/files":{"get":{"summary":"List files for a custom component library revision","description":"Returns a list of files for the specified custom component library revision. Requires the `custom_components:read` scope.","tags":["Custom Component Libraries"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"libraryId","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"revisionId","in":"path"}],"responses":{"200":{"description":"A list of files for the custom component library revision.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"filepath":{"type":"string"},"file_contents":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["filepath","file_contents","created_at","updated_at"],"description":"Custom Component Library Revision"},"description":"An array of requested items."}},"required":["success","data"]}}}}}}},"/configuration_variables":{"get":{"summary":"List configuration variables and their values","description":"Returns a list of configuration variables and their values. Requires the `config_vars:read` scope.","tags":["Configuration Variables"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of configuration variables and their values.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the configuration variable"},"name":{"type":"string","description":"The name of the configuration variable"},"description":{"type":"string","description":"The description of the configuration variable"},"secret":{"type":"boolean","description":"Whether the configuration variable is a secret"},"values":{"type":"array","items":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment"},"value":{"type":"string","description":"The value of the configuration variable"}},"required":["environment_id","value"]}},"default_value":{"type":"string","nullable":true,"description":"The value to use in any environment where no value was specifically set for that environment"}},"required":["id","name","secret","values","default_value"]},"description":"An array of requested items."}},"required":["success","data"]}}}}}},"post":{"summary":"Create a configuration variable","description":"Creates a configuration variable and returns the created configuration variable. Requires the `config_vars:write` scope.","tags":["Configuration Variables"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the configuration variable"},"description":{"type":"string","description":"The description of the configuration variable"},"secret":{"type":"boolean","description":"Whether the configuration variable is a secret"},"values":{"type":"array","items":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment"},"value":{"type":"string","description":"The value of the configuration variable"}},"required":["environment_id","value"]}},"default_value":{"type":"string","nullable":true,"description":"The value to use in any environment where no value was specifically set for that environment"}},"required":["name","secret","values"]}}}},"responses":{"200":{"description":"The created configuration variable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the configuration variable"},"name":{"type":"string","description":"The name of the configuration variable"},"description":{"type":"string","description":"The description of the configuration variable"},"secret":{"type":"boolean","description":"Whether the configuration variable is a secret"},"values":{"type":"array","items":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment"},"value":{"type":"string","description":"The value of the configuration variable"}},"required":["environment_id","value"]}},"default_value":{"type":"string","nullable":true,"description":"The value to use in any environment where no value was specifically set for that environment"}},"required":["id","name","secret","values","default_value"]}},"required":["success","data"]}}}}}}},"/configuration_variables/{id}":{"get":{"summary":"Get a configuration variable","description":"Returns the specified configuration variable and its values. Requires the `config_vars:read` scope.","tags":["Configuration Variables"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The ID of the configuration variable"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The requested configuration variable and its values.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the configuration variable"},"name":{"type":"string","description":"The name of the configuration variable"},"description":{"type":"string","description":"The description of the configuration variable"},"secret":{"type":"boolean","description":"Whether the configuration variable is a secret"},"values":{"type":"array","items":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment"},"value":{"type":"string","description":"The value of the configuration variable"}},"required":["environment_id","value"]}},"default_value":{"type":"string","nullable":true,"description":"The value to use in any environment where no value was specifically set for that environment"}},"required":["id","name","secret","values","default_value"]}},"required":["success","data"]}}}}}},"put":{"summary":"Update a configuration variable","description":"Updates a configuration variable and its values and returns the updated configuration variable. Requires the `config_vars:write` scope.","tags":["Configuration Variables"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The ID of the configuration variable"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the configuration variable"},"description":{"type":"string","description":"The description of the configuration variable"},"secret":{"type":"boolean","description":"Whether the configuration variable is a secret"},"values":{"type":"array","items":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment"},"value":{"type":"string","description":"The value of the configuration variable"}},"required":["environment_id","value"]}},"default_value":{"type":"string","nullable":true,"description":"The value to use in any environment where no value was specifically set for that environment"}},"required":["name","secret","values"]}}}},"responses":{"200":{"description":"The updated configuration variable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the configuration variable"},"name":{"type":"string","description":"The name of the configuration variable"},"description":{"type":"string","description":"The description of the configuration variable"},"secret":{"type":"boolean","description":"Whether the configuration variable is a secret"},"values":{"type":"array","items":{"type":"object","properties":{"environment_id":{"type":"string","description":"The ID of the environment"},"value":{"type":"string","description":"The value of the configuration variable"}},"required":["environment_id","value"]}},"default_value":{"type":"string","nullable":true,"description":"The value to use in any environment where no value was specifically set for that environment"}},"required":["id","name","secret","values","default_value"]}},"required":["success","data"]}}}}}},"delete":{"summary":"Delete a configuration variable","description":"Deletes a configuration variable and its values. Requires the `config_vars:write` scope.","tags":["Configuration Variables"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The ID of the configuration variable"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"The configuration variable has been successfully deleted."}}}},"/observability/config":{"post":{"summary":"Create an observability configuration","description":"Creates an observability configuration for the organization and returns the created configuration. Returns an error if a configuration is already set. Requires the `observability:write` scope.","tags":["Observability"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"config":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["Sentry"],"description":"This is an enumerated field that can only take the value \"Sentry\". It identifies the provider of the observability configuration."},"dsn":{"type":"string","description":"This is a string field that represents the Data Source Name (DSN). It is the unique identifier that helps Sentry know where to send errors and exceptions."},"ca_certs":{"type":"array","items":{"type":"string"},"description":"This is an optional array of Certificate Authority (CA) certificates. These are passed as `caCerts` to Sentry's NodeClient"}},"required":["provider","dsn"]},{"type":"object","properties":{"provider":{"type":"string","enum":["Datadog"],"description":"This is an enumerated field that can only take the value \"Datadog\". It identifies the provider of the observability configuration."},"api_key":{"type":"string","description":"This is a string field that represents the API key for Datadog. This key is used to authenticate with the Datadog API."},"site":{"type":"string","enum":["US1","US3","US5","EU1","US1-FED","AP1"],"default":"US1","description":"This is a enumerated field that represents the Datadog site which the organization wants to send logs to. The default value is US1 which corresponds to the default website datadoghq.com."}},"required":["provider","api_key","site"]}],"description":"Provider-specific configuration. For Datadog, provide an API key. For Sentry, provide a DSN."},"enabled":{"type":"boolean","description":"When enabled, use this provider for apps observability monitoring."}},"required":["config","enabled"],"additionalProperties":false,"description":"Shape of Post Observability Config Request"}}}},"responses":{"200":{"description":"The created observability configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the configuration."},"config":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["Sentry"],"description":"This is an enumerated field that can only take the value \"Sentry\". It identifies the provider of the observability configuration."},"dsn":{"type":"string","description":"This is a string field that represents the Data Source Name (DSN). It is the unique identifier that helps Sentry know where to send errors and exceptions."},"ca_certs":{"type":"array","items":{"type":"string"},"description":"This is an optional array of Certificate Authority (CA) certificates. These are passed as `caCerts` to Sentry's NodeClient"}},"required":["provider","dsn"]},{"type":"object","properties":{"provider":{"type":"string","enum":["Datadog"],"description":"This is an enumerated field that can only take the value \"Datadog\". It identifies the provider of the observability configuration."},"api_key":{"type":"string","description":"This is a string field that represents the API key for Datadog. This key is used to authenticate with the Datadog API."},"site":{"type":"string","enum":["US1","US3","US5","EU1","US1-FED","AP1"],"default":"US1","description":"This is a enumerated field that represents the Datadog site which the organization wants to send logs to. The default value is US1 which corresponds to the default website datadoghq.com."}},"required":["provider","api_key","site"]}],"description":"Provider-specific configuration. For Datadog, provide an API key. For Sentry, provide a DSN."},"enabled":{"type":"boolean","description":"When enabled, use this provider for apps observability monitoring."}},"required":["id","config","enabled"],"additionalProperties":false,"description":"Shape of Post Observability Config Response"}},"required":["success","data"]}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Incorrect scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"Configuration already exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"get":{"summary":"List observability configurations","description":"Returns a list of observability configurations for the organization. Requires the `observability:read` scope.","tags":["Observability"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of observability configurations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the configuration."},"config":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["Sentry"],"description":"This is an enumerated field that can only take the value \"Sentry\". It identifies the provider of the observability configuration."},"dsn":{"type":"string","description":"This is a string field that represents the Data Source Name (DSN). It is the unique identifier that helps Sentry know where to send errors and exceptions."},"ca_certs":{"type":"array","items":{"type":"string"},"description":"This is an optional array of Certificate Authority (CA) certificates. These are passed as `caCerts` to Sentry's NodeClient"}},"required":["provider","dsn"]},{"type":"object","properties":{"provider":{"type":"string","enum":["Datadog"],"description":"This is an enumerated field that can only take the value \"Datadog\". It identifies the provider of the observability configuration."},"api_key":{"type":"string","description":"This is a string field that represents the API key for Datadog. This key is used to authenticate with the Datadog API."},"site":{"type":"string","enum":["US1","US3","US5","EU1","US1-FED","AP1"],"default":"US1","description":"This is a enumerated field that represents the Datadog site which the organization wants to send logs to. The default value is US1 which corresponds to the default website datadoghq.com."}},"required":["provider","api_key","site"]}],"description":"Provider-specific configuration. For Datadog, provide an API key. For Sentry, provide a DSN."},"enabled":{"type":"boolean","description":"When enabled, use this provider for apps observability monitoring."}},"required":["id","config","enabled"],"additionalProperties":false,"description":"Shape of Get Observability Config Response"}}},"required":["success","data"]}}}},"403":{"description":"Incorrect scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"404":{"description":"Configuration not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/observability/config/{configId}":{"put":{"summary":"Update an observability configuration","description":"Updates the specified observability configuration for the organization and returns the updated configuration. Returns an error if no existing configuration is found. Requires the `observability:write` scope.","tags":["Observability"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The id of the observability configuration to update."},"required":true,"name":"configId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"config":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["Sentry"],"description":"This is an enumerated field that can only take the value \"Sentry\". It identifies the provider of the observability configuration."},"dsn":{"type":"string","description":"This is a string field that represents the Data Source Name (DSN). It is the unique identifier that helps Sentry know where to send errors and exceptions."},"ca_certs":{"type":"array","items":{"type":"string"},"description":"This is an optional array of Certificate Authority (CA) certificates. These are passed as `caCerts` to Sentry's NodeClient"}},"required":["provider","dsn"]},{"type":"object","properties":{"provider":{"type":"string","enum":["Datadog"],"description":"This is an enumerated field that can only take the value \"Datadog\". It identifies the provider of the observability configuration."},"api_key":{"type":"string","description":"This is a string field that represents the API key for Datadog. This key is used to authenticate with the Datadog API."},"site":{"type":"string","enum":["US1","US3","US5","EU1","US1-FED","AP1"],"default":"US1","description":"This is a enumerated field that represents the Datadog site which the organization wants to send logs to. The default value is US1 which corresponds to the default website datadoghq.com."}},"required":["provider","api_key","site"]}],"description":"Provider-specific configuration. For Datadog, provide an API key. For Sentry, provide a DSN."},"enabled":{"type":"boolean","description":"When enabled, use this provider for apps observability monitoring."}},"additionalProperties":false,"description":"Shape of Put Observability Config Request"}}}},"responses":{"200":{"description":"The updated observability configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The id of the configuration."},"config":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["Sentry"],"description":"This is an enumerated field that can only take the value \"Sentry\". It identifies the provider of the observability configuration."},"dsn":{"type":"string","description":"This is a string field that represents the Data Source Name (DSN). It is the unique identifier that helps Sentry know where to send errors and exceptions."},"ca_certs":{"type":"array","items":{"type":"string"},"description":"This is an optional array of Certificate Authority (CA) certificates. These are passed as `caCerts` to Sentry's NodeClient"}},"required":["provider","dsn"]},{"type":"object","properties":{"provider":{"type":"string","enum":["Datadog"],"description":"This is an enumerated field that can only take the value \"Datadog\". It identifies the provider of the observability configuration."},"api_key":{"type":"string","description":"This is a string field that represents the API key for Datadog. This key is used to authenticate with the Datadog API."},"site":{"type":"string","enum":["US1","US3","US5","EU1","US1-FED","AP1"],"default":"US1","description":"This is a enumerated field that represents the Datadog site which the organization wants to send logs to. The default value is US1 which corresponds to the default website datadoghq.com."}},"required":["provider","api_key","site"]}],"description":"Provider-specific configuration. For Datadog, provide an API key. For Sentry, provide a DSN."},"enabled":{"type":"boolean","description":"When enabled, use this provider for apps observability monitoring."}},"required":["id","config","enabled"],"additionalProperties":false,"description":"Shape of Put Observability Config Response"}},"required":["success","data"]}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"403":{"description":"Incorrect scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"No configuration exists.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}},"delete":{"summary":"Delete an observability configuration","description":"Deletes the specified observability configuration for the organization. Requires the `observability:write` scope.","tags":["Observability"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The id of the observability configuration to delete."},"required":true,"name":"configId","in":"path"}],"responses":{"204":{"description":"The observability configuration has been successfully deleted."},"403":{"description":"Incorrect scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"Configuration not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/observability/provider/{provider}/test":{"post":{"summary":"Send a test error event","description":"Sends a test error event to the specified observability provider. Requires the `observability:read` scope.","tags":["Observability"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"anyOf":[{"type":"string","enum":["Sentry"]},{"type":"string","enum":["Datadog"]}],"description":"The observability provider name, either \"Sentry\" or \"Datadog\""},"required":true,"name":"provider","in":"path"}],"responses":{"200":{"description":"Test event sent.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Send test error failed"},"message":{"type":"string","description":"Error message"}},"required":["success","message"]},{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Send test error succeeded"}},"required":["success"]}],"description":"Send test error response"}},"required":["success","data"]}}}},"403":{"description":"Incorrect scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}},"422":{"description":"Provider is not configured correctly.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/usage/organizations":{"get":{"summary":"List organizations","description":"Returns a list of organizations the token has access to. Requires the `usage` scope. The `usage:organization` scope returns just the organization, `usage:spaces` returns all spaces under the admin organization, and `usage:license` returns all organizations under that license key. If you self-host Retool, you must set the `USAGE_API_TOKEN` environment variable to use this endpoint.  Follow [our guide on enabling usage analytics for self-hosted Retool](https://docs.retool.com/org-users/guides/monitoring/usage-analytics#enable-usage-analytics-for-self-hosted-retool).","tags":["Usage"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"A list of organizations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"org_id":{"type":"string","description":"The id of the organization"},"host":{"type":"string","description":"The host of the organization"},"last_active":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"}},"required":["org_id","host","last_active"],"additionalProperties":false,"description":"An organization in the context of usage analytics"},"description":"An array of requested items."}},"required":["success","data"],"description":"A list of organizations in this deployment."}}}}}}},"/usage":{"get":{"summary":"Get usage summary","description":"Returns the usage summary for the selected organizations, including page saves, page views, active users, and growth in those fields over the specified time range. Requires the `usage` scope. If you self-host Retool, you must set the `USAGE_API_TOKEN` environment variable to use this endpoint.  Follow [our guide on enabling usage analytics for self-hosted Retool](https://docs.retool.com/org-users/guides/monitoring/usage-analytics#enable-usage-analytics-for-self-hosted-retool).","tags":["Usage"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"A comma separated list of org ids to retrieve usage data for","example":"org_id1,org_id2"},"required":false,"name":"org_ids","in":"query"},{"schema":{"type":"string","description":"The start date of the date range","example":"2024-01-15"},"required":true,"name":"start_date","in":"query"},{"schema":{"type":"string","description":"The end date of the date range. If not specified, then minimum(start_date + 30 days, today - 1) is used.","example":"2024-01-30"},"required":false,"name":"end_date","in":"query"}],"responses":{"200":{"description":"The usage summary for the selected organizations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"count_current_page_saves":{"type":"number","description":"The number of page saves for all the organizations within the date range"},"count_current_page_views":{"type":"number","description":"The number of page views for all the organizations within the date range"},"count_current_users":{"type":"number","description":"The total number of unique users who have performed any tracked activity in all the organizations within the date range"},"count_T30_users":{"type":"number","description":"The number of unique users who have been active over the trailing 30 days from the end date provided"},"percent_growth_page_saves":{"type":"number","description":"The percentage growth in page saves compared to the previous cycle of the same length as the provided date range"},"percent_growth_page_views":{"type":"number","description":"The percentage growth in page views compared to the previous cycle of the same length as the provided date range"},"percent_growth_users":{"type":"number","description":"The percentage growth in unique users compared to the previous cycle of the same length as the provided date range"},"percent_growth_T30_users":{"type":"number","description":"The percentage growth in T30 users (trailing 30 days users) compared to the previous cycle of the same length as the provided date range"},"daily_T30_usage":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"maa":{"type":"number","description":"The number of distinct applications that were active on the given day"},"mau":{"type":"number","description":"The number of distinct users who were active on the given day"}},"required":["day","maa","mau"]}}},"required":["count_current_page_saves","count_current_page_views","count_current_users","count_T30_users","percent_growth_page_saves","percent_growth_page_views","percent_growth_users","percent_growth_T30_users","daily_T30_usage"],"additionalProperties":false}},"required":["success","data"],"description":"The usage information for the organizations"}}}}}}},"/usage/app_summary":{"get":{"summary":"Get app usage summaries","description":"Returns the app usage summaries for the selected organizations, including saves, views, and unique editors and viewers in the specified time range. Requires the `usage` scope. If you self-host Retool, you must set the `USAGE_API_TOKEN` environment variable to use this endpoint.  Follow [our guide on enabling usage analytics for self-hosted Retool](https://docs.retool.com/org-users/guides/monitoring/usage-analytics#enable-usage-analytics-for-self-hosted-retool).","tags":["Usage"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"A comma separated list of org ids to retrieve usage data for","example":"org_id1,org_id2"},"required":false,"name":"org_ids","in":"query"},{"schema":{"type":"string","description":"The start date of the date range","example":"2024-01-15"},"required":true,"name":"start_date","in":"query"},{"schema":{"type":"string","description":"The end date of the date range. If not specified, then minimum(start_date + 30 days, today - 1) is used.","example":"2024-01-30"},"required":false,"name":"end_date","in":"query"}],"responses":{"200":{"description":"The app usage summaries for the selected organizations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"app_name":{"type":"string","description":"The name of the app"},"host":{"type":"string","description":"The organization host"},"count_app_views":{"type":"number","description":"The number of views of the app in the time range specified"},"count_app_saves":{"type":"number","description":"The number of saves of the app in the time range specified"},"count_viewers":{"type":"number","description":"The number of viewers of the app in the time range specified"},"count_editors":{"type":"number","description":"The number of editors of the app in the time range specified"}},"required":["app_name","host","count_app_views","count_app_saves","count_viewers","count_editors"],"additionalProperties":false},"description":"An array of requested items."}},"required":["success","data"],"description":"The app summaries for the organizations"}}}}}}},"/usage/app_details":{"get":{"summary":"Get app usage details","description":"Returns the detailed app usage for the selected organizations, including the breakdown of saves and views in the specified time range. Supports pagination via the `limit` and `next_token` query parameters. Requires the `usage` scope. If you self-host Retool, you must set the `USAGE_API_TOKEN` environment variable to use this endpoint.  Follow [our guide on enabling usage analytics for self-hosted Retool](https://docs.retool.com/org-users/guides/monitoring/usage-analytics#enable-usage-analytics-for-self-hosted-retool).","tags":["Usage"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"A comma separated list of org ids to retrieve usage data for","example":"org_id1,org_id2"},"required":false,"name":"org_ids","in":"query"},{"schema":{"type":"string","description":"The start date of the date range","example":"2024-01-15"},"required":true,"name":"start_date","in":"query"},{"schema":{"type":"string","description":"The end date of the date range. If not specified, then minimum(start_date + 30 days, today - 1) is used.","example":"2024-01-30"},"required":false,"name":"end_date","in":"query"},{"schema":{"type":"string","description":"The name of the app to retrieve usage data for"},"required":true,"name":"app_name","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of items to return per page. If not provided, all items are returned. When provided, enables pagination and the response will include next_token for retrieving subsequent pages. Valid range: 1-100.","example":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor token for retrieving the next page of results. Obtained from the next_token field of a previous paginated response. Only valid when the limit parameter is also provided.","example":"eyJsYXN0SWQiOjEyM30..."},"required":false,"name":"next_token","in":"query"}],"responses":{"200":{"description":"The app usage details for the selected app and organizations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"overall_summary":{"type":"array","items":{"type":"object","properties":{"org_id":{"type":"string"},"app_name":{"type":"string"},"count_app_saves":{"type":"number"},"count_app_views":{"type":"number"},"host":{"type":"string"}},"required":["org_id","app_name","count_app_saves","count_app_views","host"],"additionalProperties":false}},"weekly_summary":{"type":"array","items":{"type":"object","properties":{"org_id":{"type":"string"},"weekly_data":{"type":"array","items":{"type":"object","properties":{"week":{"type":"string"},"count_app_saves":{"type":"number"},"count_app_views":{"type":"number"}},"required":["week","count_app_saves","count_app_views"]}}},"required":["org_id","weekly_data"],"additionalProperties":false}},"viewer_summary":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string"},"count":{"type":"number"},"user_id":{"type":"string"},"org_id":{"type":"string"},"host":{"type":"string"}},"required":["email","count","user_id","org_id","host"],"additionalProperties":false}},"editor_summary":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string"},"count":{"type":"number"},"user_id":{"type":"string"},"org_id":{"type":"string"},"host":{"type":"string"}},"required":["email","count","user_id","org_id","host"],"additionalProperties":false}}},"required":["overall_summary","weekly_summary","viewer_summary","editor_summary"],"additionalProperties":false},"total_viewers":{"type":"number","description":"Total number of viewer entries across all pages."},"total_editors":{"type":"number","description":"Total number of editor entries across all pages."},"total_count":{"type":"number","description":"Convenience count equal to the larger of total_viewers and total_editors."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_viewers","total_editors","total_count","next_token","has_more"],"description":"The details about the app usage, such as edits and views, for the organizations"}}}}}}},"/usage/user_summary":{"get":{"summary":"Get user usage summaries","description":"Returns summaries of user usage for the selected organizations, including email, last active time, and the number of apps viewed and edited in the specified time range. Requires the `usage` scope. If you self-host Retool, you must set the `USAGE_API_TOKEN` environment variable to use this endpoint.  Follow [our guide on enabling usage analytics for self-hosted Retool](https://docs.retool.com/org-users/guides/monitoring/usage-analytics#enable-usage-analytics-for-self-hosted-retool).","tags":["Usage"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"A comma separated list of org ids to retrieve usage data for","example":"org_id1,org_id2"},"required":false,"name":"org_ids","in":"query"},{"schema":{"type":"string","description":"The start date of the date range","example":"2024-01-15"},"required":true,"name":"start_date","in":"query"},{"schema":{"type":"string","description":"The end date of the date range. If not specified, then minimum(start_date + 30 days, today - 1) is used.","example":"2024-01-30"},"required":false,"name":"end_date","in":"query"}],"responses":{"200":{"description":"The user usage summaries for the selected organizations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"org_id":{"type":"string","description":"The id of the organization to which this user belongs"},"user_id":{"type":"string","description":"The id of the user"},"email":{"type":"string","description":"The email of the user"},"host":{"type":"string","description":"The host of the organization to which this user belongs"},"count_app_views":{"type":"number","description":"The number of times the user viewed an app in the time range specified"},"count_app_saves":{"type":"number","description":"The number of times the user edited an app in the time range specified"},"count_unique_apps":{"type":"number","description":"The number of unique apps edited in the time range specified"},"last_active":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"}},"required":["org_id","user_id","email","host","count_app_views","count_app_saves","count_unique_apps","last_active"],"additionalProperties":false},"description":"An array of requested items."}},"required":["success","data"],"description":"The user summaries for the organizations"}}}}}}},"/usage/user_details":{"get":{"summary":"Get user usage details","description":"Returns the detailed usage for the selected user and organizations, including the breakdown of saves and views for apps in the specified time range. Requires the `usage` scope. If you self-host Retool, you must set the `USAGE_API_TOKEN` environment variable to use this endpoint.  Follow [our guide on enabling usage analytics for self-hosted Retool](https://docs.retool.com/org-users/guides/monitoring/usage-analytics#enable-usage-analytics-for-self-hosted-retool).","tags":["Usage"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","description":"A comma separated list of org ids to retrieve usage data for","example":"org_id1,org_id2"},"required":false,"name":"org_ids","in":"query"},{"schema":{"type":"string","description":"The start date of the date range","example":"2024-01-15"},"required":true,"name":"start_date","in":"query"},{"schema":{"type":"string","description":"The end date of the date range. If not specified, then minimum(start_date + 30 days, today - 1) is used.","example":"2024-01-30"},"required":false,"name":"end_date","in":"query"},{"schema":{"type":"string","description":"The email of the user to retrieve usage data for"},"required":true,"name":"email","in":"query"}],"responses":{"200":{"description":"The user usage details for the selected user and organizations.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"overall_summary":{"type":"array","items":{"type":"object","properties":{"org_id":{"type":"string"},"user_id":{"type":"string"},"host":{"type":"string"},"count_app_saves":{"type":"number"},"count_app_views":{"type":"number"}},"required":["org_id","user_id","host","count_app_saves","count_app_views"],"additionalProperties":false}},"weekly_summary":{"type":"array","items":{"type":"object","properties":{"org_id":{"type":"string"},"weekly_data":{"type":"array","items":{"type":"object","properties":{"week":{"type":"string"},"count_app_saves":{"type":"number"},"count_app_views":{"type":"number"}},"required":["week","count_app_saves","count_app_views"]}}},"required":["org_id","weekly_data"],"additionalProperties":false}},"viewer_summary":{"type":"array","items":{"type":"object","properties":{"app_name":{"type":"string"},"org_id":{"type":"string"},"host":{"type":"string"},"count":{"type":"number"}},"required":["app_name","org_id","host","count"],"additionalProperties":false}},"editor_summary":{"type":"array","items":{"type":"object","properties":{"app_name":{"type":"string"},"org_id":{"type":"string"},"host":{"type":"string"},"count":{"type":"number"}},"required":["app_name","org_id","host","count"],"additionalProperties":false}}},"required":["overall_summary","weekly_summary","viewer_summary","editor_summary"]}},"required":["success","data"],"description":"The details about the users usage, such as edits and views on apps, for the organizations"}}}}}}},"/user_tasks":{"get":{"summary":"List user tasks","description":"Returns a list of user tasks for the specified user. Requires the `user_tasks:read` scope.","tags":["User Tasks"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}],"description":"Filter tasks by assignment. Provide one or more user ids. If not provided, returns all accessible tasks."},"required":false,"name":"assigned_to_users","in":"query"},{"schema":{"type":"string","enum":["submitted","pending","cancelled","expired"],"description":"A comma-separated list of statuses."},"required":false,"name":"statuses","in":"query"},{"schema":{"type":"string","description":"A comma-separated list of workflow IDs."},"required":false,"name":"workflow_ids","in":"query"},{"schema":{"type":"string","description":"The maximum number of tasks to include in the response."},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"The next token from the previous API response. This is used for paginating through an arbitrary number of tasks."},"required":false,"name":"next_token","in":"query"},{"schema":{"type":"string","description":"The ID of the task following which the response will include subsequent tasks."},"required":false,"name":"starting_after","in":"query"},{"schema":{"type":"string","description":"The ID of the task before which the response will include preceding tasks."},"required":false,"name":"ending_before","in":"query"}],"responses":{"200":{"description":"List of user tasks.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the user task."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow this task belongs to."},"workflow_name":{"type":"string","description":"The name of the workflow."},"workflow_run_id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"task_name":{"type":"string","description":"The name of the task."},"status":{"type":"string","enum":["submitted","pending","cancelled","expired"],"description":"The current status of the task."},"context":{"type":"object","additionalProperties":{"nullable":true},"description":"Additional context for the task."},"created_at":{"type":"string","description":"The creation date time of the task."},"completed_at":{"type":"string","nullable":true,"description":"The completion date time of the task."},"task_url":{"type":"array","items":{"type":"string"},"description":"URL links to apps associated with the task."},"assignees":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"number"},"name":{"type":"string"}},"required":["type","id","name"]},"description":"The groups or users assigned to this task."},"workflow_release":{"type":"string","nullable":true,"description":"The workflow release version, if any."},"expires_at":{"type":"string","nullable":true,"description":"The expiration date time of the task, if set."},"output":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","workflow_id","workflow_name","workflow_run_id","task_name","status","context","created_at","completed_at","task_url","assignees","workflow_release","expires_at"],"description":"User-defined context for the task."},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A paginated list of user tasks."}}}}}}},"/user_tasks/{taskId}/submit":{"patch":{"summary":"Submit a user task","description":"Submits a user task with the provided output payload. Requires the `user_tasks:write` scope.","tags":["User Tasks"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The ID of the user task."},"required":true,"name":"taskId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of user completing the task."},"output":{"type":"object","additionalProperties":{"nullable":true},"description":"Assignee-defined output required for a task to be submitted."}},"required":["email","output"]}}}},"responses":{"200":{"description":"The submitted user task.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"user_task":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the user task."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow this task belongs to."},"workflow_name":{"type":"string","description":"The name of the workflow."},"workflow_run_id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"task_name":{"type":"string","description":"The name of the task."},"status":{"type":"string","enum":["submitted","pending","cancelled","expired"],"description":"The current status of the task."},"context":{"type":"object","additionalProperties":{"nullable":true},"description":"Additional context for the task."},"created_at":{"type":"string","description":"The creation date time of the task."},"completed_at":{"type":"string","nullable":true,"description":"The completion date time of the task."},"task_url":{"type":"array","items":{"type":"string"},"description":"URL links to apps associated with the task."},"assignees":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"number"},"name":{"type":"string"}},"required":["type","id","name"]},"description":"The groups or users assigned to this task."},"workflow_release":{"type":"string","nullable":true,"description":"The workflow release version, if any."},"expires_at":{"type":"string","nullable":true,"description":"The expiration date time of the task, if set."},"output":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","workflow_id","workflow_name","workflow_run_id","task_name","status","context","created_at","completed_at","task_url","assignees","workflow_release","expires_at"],"description":"User-defined context for the task."}},"required":["user_task"]}},"required":["success","data"]}}}}}}},"/user_tasks/{taskId}/cancel":{"patch":{"summary":"Cancel a user task","description":"Cancels the specified user task with the provided reason. Requires the `user_tasks:write` scope.","tags":["User Tasks"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The ID of the user task."},"required":true,"name":"taskId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of user cancelling the task."},"output":{"type":"object","additionalProperties":{"nullable":true},"description":"Assignee-defined output required for a task to be cancelled."}},"required":["email"]}}}},"responses":{"200":{"description":"The cancelled user task.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"user_task":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the user task."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow this task belongs to."},"workflow_name":{"type":"string","description":"The name of the workflow."},"workflow_run_id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"task_name":{"type":"string","description":"The name of the task."},"status":{"type":"string","enum":["submitted","pending","cancelled","expired"],"description":"The current status of the task."},"context":{"type":"object","additionalProperties":{"nullable":true},"description":"Additional context for the task."},"created_at":{"type":"string","description":"The creation date time of the task."},"completed_at":{"type":"string","nullable":true,"description":"The completion date time of the task."},"task_url":{"type":"array","items":{"type":"string"},"description":"URL links to apps associated with the task."},"assignees":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"number"},"name":{"type":"string"}},"required":["type","id","name"]},"description":"The groups or users assigned to this task."},"workflow_release":{"type":"string","nullable":true,"description":"The workflow release version, if any."},"expires_at":{"type":"string","nullable":true,"description":"The expiration date time of the task, if set."},"output":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","workflow_id","workflow_name","workflow_run_id","task_name","status","context","created_at","completed_at","task_url","assignees","workflow_release","expires_at"],"description":"User-defined context for the task."}},"required":["user_task"]}},"required":["success","data"]}}}}}}},"/user_tasks/{taskId}/reassign":{"patch":{"summary":"Reassign a user task","description":"Reassigns a user task to a group or user based on the provided group or user ID. Requires the `user_tasks:write` scope.","tags":["User Tasks"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The ID of the user task."},"required":true,"name":"taskId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of user reassigning the task."},"assignees":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["group"]},"id":{"type":"number"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","enum":["user"]},"id":{"type":"string"}},"required":["type","id"]}]},"description":"An array of assignees the user task should be reassigned to. Can include both groups and users.","example":[{"type":"group","id":1},{"type":"user","id":"user_4e5fb6e0b3cd4e39b518f09a3480e6ca"}]}},"required":["email","assignees"]}}}},"responses":{"200":{"description":"The reassigned user task.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"user_task":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the user task."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow this task belongs to."},"workflow_name":{"type":"string","description":"The name of the workflow."},"workflow_run_id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"task_name":{"type":"string","description":"The name of the task."},"status":{"type":"string","enum":["submitted","pending","cancelled","expired"],"description":"The current status of the task."},"context":{"type":"object","additionalProperties":{"nullable":true},"description":"Additional context for the task."},"created_at":{"type":"string","description":"The creation date time of the task."},"completed_at":{"type":"string","nullable":true,"description":"The completion date time of the task."},"task_url":{"type":"array","items":{"type":"string"},"description":"URL links to apps associated with the task."},"assignees":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"number"},"name":{"type":"string"}},"required":["type","id","name"]},"description":"The groups or users assigned to this task."},"workflow_release":{"type":"string","nullable":true,"description":"The workflow release version, if any."},"expires_at":{"type":"string","nullable":true,"description":"The expiration date time of the task, if set."},"output":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","workflow_id","workflow_name","workflow_run_id","task_name","status","context","created_at","completed_at","task_url","assignees","workflow_release","expires_at"],"description":"User-defined context for the task."}},"required":["user_task"]}},"required":["success","data"]}}}}}}},"/workflow_run/{id}":{"get":{"summary":"Get a workflow run","description":"Returns the details for the specified workflow run. Requires the `workflows:read` scope.","tags":["Workflow Runs"],"x-badges":[{"color":"blue","label":"Enterprise"}],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The requested workflow run.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"The status of the workflow run."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow."},"id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"trigger_type":{"type":"string","description":"The type of trigger that started the workflow."},"trigger_id":{"type":"string","format":"uuid","description":"The ID of the trigger."},"created_at":{"type":"string","description":"The creation date time of the workflow run."},"user_tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The ID of the user task."},"workflow_id":{"type":"string","format":"uuid","description":"The ID of the workflow this task belongs to."},"workflow_name":{"type":"string","description":"The name of the workflow."},"workflow_run_id":{"type":"string","format":"uuid","description":"The ID of the workflow run."},"task_name":{"type":"string","description":"The name of the task."},"status":{"type":"string","enum":["submitted","pending","cancelled","expired"],"description":"The current status of the task."},"context":{"type":"object","additionalProperties":{"nullable":true},"description":"Additional context for the task."},"created_at":{"type":"string","description":"The creation date time of the task."},"completed_at":{"type":"string","nullable":true,"description":"The completion date time of the task."},"task_url":{"type":"array","items":{"type":"string"},"description":"URL links to apps associated with the task."},"assignees":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"number"},"name":{"type":"string"}},"required":["type","id","name"]},"description":"The groups or users assigned to this task."},"workflow_release":{"type":"string","nullable":true,"description":"The workflow release version, if any."},"expires_at":{"type":"string","nullable":true,"description":"The expiration date time of the task, if set."},"output":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","workflow_id","workflow_name","workflow_run_id","task_name","status","context","created_at","completed_at","task_url","assignees","workflow_release","expires_at"],"description":"User-defined context for the task."},"description":"List of user tasks of the workfow run."}},"required":["status","workflow_id","id","trigger_type","trigger_id","created_at"],"description":"A workflow run and related data."}}}}}}},"/organization/":{"get":{"summary":"Get organization settings","description":"Returns the organization's advanced settings. Requires the `organizations:read` scope.","tags":["Organization"],"responses":{"200":{"description":"The requested organization.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","description":"The id of the organization."},"request_access_enabled":{"type":"boolean","description":"Whether users can request access to join the organization."},"ai_support_bot_disabled":{"type":"boolean","description":"Whether the AI support bot is disabled."},"retool_forms_disabled":{"type":"boolean","description":"Whether Retool forms are disabled."},"release_management_enabled":{"type":"boolean","description":"Whether versions and releases on apps are disabled."},"cache_queries_per_user":{"type":"boolean","nullable":true},"apply_preloaded_css_to_homepage":{"type":"boolean","description":"Whether preloaded CSS is applied to the Retool homepage."},"preloaded_css":{"type":"string","nullable":true,"description":"Custom CSS rules to apply across Retool."},"preloaded_javascript":{"type":"string","nullable":true,"description":"Preloaded JavaScript that will apply to every Retool app."},"javascript_links":{"type":"array","items":{"type":"string"},"description":"List of custom JavaScript libraries to load in every app."},"workflow_run_retention_period_mins":{"type":"number","description":"Number of minutes to store workflow run history data (up to a max of 90 days on cloud, 1 year on-prem)"},"app_owners_permissions_management":{"type":"boolean","description":"Whether app owners can manage permissions for their apps directly."},"two_factor_auth_required":{"type":"boolean","description":"Whether two-factor authentication is required for all users in the organization."},"two_factor_auth_type":{"type":"string","nullable":true,"enum":["fido2","otp"],"description":"Required 2FA type, applies to the whole organization"},"disable_new_login_ip_notification_email":{"type":"boolean","description":"Whether notification emails for logins from new IPs are disabled."}},"required":["id","request_access_enabled","ai_support_bot_disabled","retool_forms_disabled","release_management_enabled","cache_queries_per_user","apply_preloaded_css_to_homepage","preloaded_css","preloaded_javascript","javascript_links","workflow_run_retention_period_mins","app_owners_permissions_management","two_factor_auth_required","two_factor_auth_type","disable_new_login_ip_notification_email"],"additionalProperties":false,"description":"This object represents the advanced settings configured on an organization."}},"required":["success","data"],"description":"The current organization's advanced settings"}}}}}},"patch":{"summary":"Update organization settings","description":"Updates the organization settings and returns the updated organization. Requires the `organizations:write` scope.","tags":["Organization"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["replace"]},"path":{"type":"string"},"value":{"nullable":true,"description":"A JSON value"}},"required":["op","path"],"title":"Replace Operation"},"description":"A list of operations to apply to update the organization. See the [JSON PATCH specification](https://tools.ietf.org/html/rfc6902) for more details."}},"required":["operations"],"additionalProperties":false,"description":"The body of a request to update an organization."}}}},"responses":{"200":{"description":"The updated organization.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","description":"The id of the organization."},"request_access_enabled":{"type":"boolean","description":"Whether users can request access to join the organization."},"ai_support_bot_disabled":{"type":"boolean","description":"Whether the AI support bot is disabled."},"retool_forms_disabled":{"type":"boolean","description":"Whether Retool forms are disabled."},"release_management_enabled":{"type":"boolean","description":"Whether versions and releases on apps are disabled."},"cache_queries_per_user":{"type":"boolean","nullable":true},"apply_preloaded_css_to_homepage":{"type":"boolean","description":"Whether preloaded CSS is applied to the Retool homepage."},"preloaded_css":{"type":"string","nullable":true,"description":"Custom CSS rules to apply across Retool."},"preloaded_javascript":{"type":"string","nullable":true,"description":"Preloaded JavaScript that will apply to every Retool app."},"javascript_links":{"type":"array","items":{"type":"string"},"description":"List of custom JavaScript libraries to load in every app."},"workflow_run_retention_period_mins":{"type":"number","description":"Number of minutes to store workflow run history data (up to a max of 90 days on cloud, 1 year on-prem)"},"app_owners_permissions_management":{"type":"boolean","description":"Whether app owners can manage permissions for their apps directly."},"two_factor_auth_required":{"type":"boolean","description":"Whether two-factor authentication is required for all users in the organization."},"two_factor_auth_type":{"type":"string","nullable":true,"enum":["fido2","otp"],"description":"Required 2FA type, applies to the whole organization"},"disable_new_login_ip_notification_email":{"type":"boolean","description":"Whether notification emails for logins from new IPs are disabled."}},"required":["id","request_access_enabled","ai_support_bot_disabled","retool_forms_disabled","release_management_enabled","cache_queries_per_user","apply_preloaded_css_to_homepage","preloaded_css","preloaded_javascript","javascript_links","workflow_run_retention_period_mins","app_owners_permissions_management","two_factor_auth_required","two_factor_auth_type","disable_new_login_ip_notification_email"],"additionalProperties":false,"description":"The updated organization settings"}},"required":["success","data"]}}}}}}},"/organization/invalidate_sessions/":{"post":{"summary":"Invalidate all sessions","description":"Invalidates all sessions for all users in the organization. Requires the `organization:write` or `users:write` scope.","tags":["Organization"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"204":{"description":"All sessions were successfully invalidated."}}}},"/organization/ai_settings":{"get":{"summary":"Get organization AI settings","description":"Returns the organization's AI settings. Requires the `organizations:read` scope.","tags":["Organization"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"The current state of AI settings for the organization.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"retoolAI":{"type":"boolean","description":"Global switch for all Retool AI features. This switch takes precedence over individual feature switches."},"retoolAIActions":{"type":"boolean","description":"Whether Retool AI Actions are enabled."},"retoolVector":{"type":"boolean","description":"Whether Retool Vector is enabled."},"retoolAskAI":{"type":"boolean","description":"Whether Retool Ask AI is enabled."}},"required":["retoolAI","retoolAIActions","retoolVector","retoolAskAI"],"additionalProperties":false}},"required":["success","data"],"description":"The current organization AI settings"}}}}}},"put":{"summary":"Update organization AI settings","description":"Updates the AI settings for the organization and returns the updated settings. Requires the `organizations:write` scope.","tags":["Organization"],"x-badges":[{"color":"blue","label":"Enterprise"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"retoolAI":{"type":"boolean","description":"Global switch for all Retool AI features. This switch takes precedence over individual feature switches."},"retoolAIActions":{"type":"boolean","description":"Whether Retool AI Actions are enabled."},"retoolVector":{"type":"boolean","description":"Whether Retool Vector is enabled."},"retoolAskAI":{"type":"boolean","description":"Whether Retool Ask AI is enabled."}},"required":["retoolAI","retoolAIActions","retoolVector","retoolAskAI"],"additionalProperties":false}}}},"responses":{"200":{"description":"The updated AI settings for the organization.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"retoolAI":{"type":"boolean","description":"Global switch for all Retool AI features. This switch takes precedence over individual feature switches."},"retoolAIActions":{"type":"boolean","description":"Whether Retool AI Actions are enabled."},"retoolVector":{"type":"boolean","description":"Whether Retool Vector is enabled."},"retoolAskAI":{"type":"boolean","description":"Whether Retool Ask AI is enabled."}},"required":["retoolAI","retoolAIActions","retoolVector","retoolAskAI"],"additionalProperties":false}},"required":["success","data"],"description":"The updated organization AI settings"}}}}}}},"/organization/analytics_integrations":{"get":{"summary":"Get organization analytics integrations","description":"Returns the organization's analytics integrations settings. Returns at most one configuration per integration type. Requires the `organizations:read` scope.","tags":["Organization"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"The current analytics integrations settings for the organization.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["google"]},"measurement_id":{"type":"string"},"enabled":{"type":"boolean"}},"required":["type","measurement_id","enabled"]},{"type":"object","properties":{"type":{"type":"string","enum":["segment"]},"host":{"type":"string","enum":["US","EU"]},"api_key":{"type":"string"},"enabled":{"type":"boolean"}},"required":["type","host","api_key","enabled"]},{"type":"object","properties":{"type":{"type":"string","enum":["stdout"]},"enabled":{"type":"boolean"}},"required":["type","enabled"]}]},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A list of configured integrations for third-party analytics.  There is at-most one of each type."}}}},"403":{"description":"Incorrect scope or non-admin user","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}},"/workflows":{"get":{"summary":"List workflows","description":"Returns a list of workflows. Requires the `workflows:read` scope.","tags":["Workflows"],"responses":{"200":{"description":"A list of workflows.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The Workflow ID."},"name":{"type":"string","description":"The name of the Workflow"},"description":{"type":"string","nullable":true,"description":"The description of the Workflow"},"crontab":{"type":"string","nullable":true,"description":"The cron tab of the Workflow"},"timezone":{"type":"string","nullable":true,"description":"The timezone of the Workflow"},"is_enabled":{"type":"boolean","description":"Whether the Workflow is enabled"},"folder_id":{"type":"string","description":"The folder ID of the Workflow"},"protected":{"type":"boolean","description":"Whether the Workflow is protected"},"created_by":{"type":"number","nullable":true,"description":"The user ID of the creator of the Workflow"},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","name","description","crontab","timezone","is_enabled","folder_id","protected","created_by","created_at","updated_at"],"description":"This object represents a Workflow."},"description":"An array of requested items."},"total_count":{"type":"number","description":"Total number of items in the response."},"next_token":{"type":"string","nullable":true,"description":"A token to retrieve the next page of items in the collection."},"has_more":{"type":"boolean","description":"Whether there are more items in the collection."}},"required":["success","data","total_count","next_token","has_more"],"description":"A list of all workflows in the organization"}}}},"403":{"description":"Forbidden: API token is missing required scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}}}}},"/workflows/{workflowId}":{"get":{"summary":"Get a workflow","description":"Returns the specified workflow. Requires the `workflows:read` scope.","tags":["Workflows"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The Workflow ID."},"required":true,"name":"workflowId","in":"path"}],"responses":{"200":{"description":"The requested workflow.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The Workflow ID."},"name":{"type":"string","description":"The name of the Workflow"},"description":{"type":"string","nullable":true,"description":"The description of the Workflow"},"crontab":{"type":"string","nullable":true,"description":"The cron tab of the Workflow"},"timezone":{"type":"string","nullable":true,"description":"The timezone of the Workflow"},"is_enabled":{"type":"boolean","description":"Whether the Workflow is enabled"},"folder_id":{"type":"string","description":"The folder ID of the Workflow"},"protected":{"type":"boolean","description":"Whether the Workflow is protected"},"created_by":{"type":"number","nullable":true,"description":"The user ID of the creator of the Workflow"},"created_at":{"type":"string","format":"date-time","example":"2019-02-08T11:45:48.899Z"},"updated_at":{"type":"string","format":"date-time","example":"2019-02-24T18:28:18.790Z"}},"required":["id","name","description","crontab","timezone","is_enabled","folder_id","protected","created_by","created_at","updated_at"],"description":"This object represents a Workflow."}},"required":["success","data"],"description":"A single workflow"}}}},"400":{"description":"Bad Request: Invalid UUID format","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}},"403":{"description":"Forbidden: API token is missing required scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}},"404":{"description":"Not Found: Workflow does not exist","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}}}},"delete":{"summary":"Delete a workflow","description":"Deletes the specified workflow. Requires the `workflows:write` scope.","tags":["Workflows"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"The Workflow ID."},"required":true,"name":"workflowId","in":"path"}],"responses":{"204":{"description":"Workflow successfully deleted."},"400":{"description":"Bad Request: Invalid UUID format","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}},"403":{"description":"Forbidden: API token is missing required scope","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}},"404":{"description":"Not Found: Workflow does not exist","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}}}}},"/info/ip_allowlist":{"get":{"summary":"Get IP allowlist by region","description":"Returns a list of Retool Cloud IP addresses that require access to connected data sources.","tags":["Info"],"x-badges":[{"color":"blue","label":"Enterprise"}],"responses":{"200":{"description":"The IP allowlist organized by region.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true],"description":"Whether the API request was successful."},"data":{"type":"object","properties":{"ipAddresses":{"type":"object","properties":{"us-west-2":{"type":"string"},"eu-central-1":{"type":"string"},"ap-southeast-1":{"type":"string"}},"required":["us-west-2","eu-central-1","ap-southeast-1"]}},"required":["ipAddresses"],"additionalProperties":false}},"required":["success","data"],"description":"Response schema for retrieving the Retool IP allowlist by region."}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false],"description":"Whether the API request was successful."},"message":{"type":"string","description":"Error message."}},"required":["success","message"],"description":"API error response."}}}}}}}}}