import {z} from 'zod' export type GetApiApiV1OrganizationsOrganizationIdConnectionsIdArgs = {organization_id: string, id: string}; export type GetApiApiV1OrganizationsOrganizationIdConnectionsIdOptions = {baseUrl?: string | undefined, oauth2?: string | undefined, fetch?: typeof fetch | undefined}; export const connectionsConfigurationType = z.enum(["DISCOVERY", "MANUAL"]); export const domainsVerificationMethod = z.enum(["ADMIN", "DNS", "NOT_APPLICABLE"]); export const domainsVerificationStatus = z.enum(["PENDING", "VERIFIED", "FAILED", "AUTO_VERIFIED"]); export const domainsDomain = z.object({create_time: z.string().optional(), domain: z.string().optional(), domain_type: z.string().optional(), environment_id: z.string().optional(), id: z.string().optional(), organization_id: z.string().optional(), update_time: z.string().optional(), verification_method: domainsVerificationMethod.optional(), verification_status: domainsVerificationStatus.optional()}); export const connectionsGoogleDWDConfig = z.object({required_scopes: z.array(z.string()).optional(), scope_selection_allowed: z.boolean().optional(), scopes: z.array(z.string()).optional(), service_account_json: z.string().optional(), token_uri: z.string().optional()}); export const connectionsSmartConfig = z.object({aud: z.string().optional(), domain: z.string().optional()}); export const connectionsOauthExtensions = z.object({extra_authorize_params: z.record(z.string(), z.string()).optional(), smart: connectionsSmartConfig.optional()}); export const connectionsOptionalScopes = z.object({field_name: z.string().optional(), scopes: z.array(z.string()).optional()}); export const connectionsOAuthConnectionConfig = z.object({access_type: z.string().optional(), app_name: z.string().optional(), authorize_uri: z.string().optional(), client_id: z.string().optional(), client_secret: z.string().optional(), custom_scope_name: z.string().optional(), extensions: connectionsOauthExtensions.optional(), googleads_developer_token: z.string().optional(), is_cimd: z.boolean().optional(), optional_scopes: connectionsOptionalScopes.optional(), pkce_enabled: z.boolean().optional(), prompt: z.string().optional(), redirect_uri: z.string().optional(), scopes: z.array(z.string()).optional(), sync_user_profile_on_login: z.boolean().optional(), tenant_id: z.string().optional(), token_access_type: z.string().optional(), token_endpoint_auth_method: z.string().optional(), token_uri: z.string().optional(), use_platform_creds: z.boolean().optional(), user_info_uri: z.string().optional()}); export const connectionsOIDCScope = z.enum(["openid", "profile", "email", "address", "phone"]); export const connectionsTokenAuthType = z.enum(["URL_PARAMS", "BASIC_AUTH"]); export const connectionsOIDCConnectionConfig = z.object({authorize_uri: z.string().optional(), backchannel_logout_redirect_uri: z.string().optional(), client_id: z.string().optional(), client_secret: z.string().optional(), discovery_endpoint: z.string().optional(), idp_logout_required: z.boolean().optional(), issuer: z.string().optional(), jit_provisioning_with_sso_enabled: z.boolean().optional(), jwks_uri: z.string().optional(), pkce_enabled: z.boolean().optional(), post_logout_redirect_uri: z.string().optional(), redirect_uri: z.string().optional(), scopes: z.array(connectionsOIDCScope).optional(), sync_user_profile_on_login: z.boolean().optional(), token_auth_type: connectionsTokenAuthType.optional(), token_uri: z.string().optional(), user_info_uri: z.string().optional()}); export const connectionsCodeChallengeType = z.enum(["NUMERIC", "ALPHANUMERIC"]); export const connectionsPasswordlessType = z.enum(["LINK", "OTP", "LINK_OTP"]); export const connectionsPasswordLessConfig = z.object({code_challenge_length: z.number().int().optional(), code_challenge_type: connectionsCodeChallengeType.optional(), enforce_same_browser_origin: z.boolean().optional(), frequency: z.number().int().optional(), regenerate_passwordless_credentials_on_resend: z.boolean().optional(), type: connectionsPasswordlessType.optional(), validity: z.number().int().optional()}); export const connectionsConnectionProvider = z.enum(["OKTA", "GOOGLE", "MICROSOFT_AD", "AUTH0", "ONELOGIN", "PING_IDENTITY", "JUMPCLOUD", "CUSTOM", "GITHUB", "GITLAB", "LINKEDIN", "SALESFORCE", "MICROSOFT", "IDP_SIMULATOR", "SCALEKIT", "ADFS"]); export const connectionsIDPCertificate = z.object({certificate: z.string().optional(), create_time: z.string().optional(), expiry_time: z.string().optional(), id: z.string().optional(), issuer: z.string().optional()}); export const connectionsNameIdFormat = z.enum(["UNSPECIFIED", "EMAIL", "TRANSIENT", "PERSISTENT"]); export const connectionsRequestBinding = z.enum(["HTTP_POST", "HTTP_REDIRECT"]); export const connectionsSAMLSigningOptions = z.enum(["NO_SIGNING", "SAML_ONLY_RESPONSE_SIGNING", "SAML_ONLY_ASSERTION_SIGNING", "SAML_RESPONSE_ASSERTION_SIGNING", "SAML_RESPONSE_OR_ASSERTION_SIGNING"]); export const connectionsSAMLConnectionConfigResponse = z.object({allow_idp_initiated_login: z.boolean().optional(), assertion_encrypted: z.boolean().optional(), certificate_id: z.string().optional(), default_redirect_uri: z.string().optional(), force_authn: z.boolean().optional(), idp_certificates: z.array(connectionsIDPCertificate).optional(), idp_entity_id: z.string().optional(), idp_metadata_url: z.string().optional(), idp_name_id_format: connectionsNameIdFormat.optional(), idp_slo_request_binding: connectionsRequestBinding.optional(), idp_slo_required: z.boolean().optional(), idp_slo_url: z.string().optional(), idp_sso_request_binding: connectionsRequestBinding.optional(), idp_sso_url: z.string().optional(), jit_provisioning_with_sso_enabled: z.boolean().optional(), saml_signing_option: connectionsSAMLSigningOptions.optional(), sp_assertion_url: z.string().optional(), sp_entity_id: z.string().optional(), sp_metadata_url: z.string().optional(), sp_slo_url: z.string().optional(), sync_user_profile_on_login: z.boolean().optional(), ui_button_title: z.string().optional(), want_request_signed: z.boolean().optional()}); export const connectionsStaticAuthConfig = z.object({static_config: z.object({}).optional()}); export const connectionsConnectionStatus = z.enum(["DRAFT", "IN_PROGRESS", "COMPLETED"]); export const connectionsConnectionType = z.enum(["OIDC", "SAML", "PASSWORD", "OAUTH", "PASSWORDLESS", "BASIC", "BEARER", "API_KEY", "WEBAUTHN", "OAUTH_M2M", "TRELLO_OAUTH1", "GOOGLE_DWD", "TRUSTED_IDP", "SMART_FHIR", "NO_AUTH"]); export const webAuthConfigurationAttestation = z.object({conveyance_preference: z.string().optional(), enterprise_approved_ids: z.array(z.string()).optional()}); export const webAuthConfigurationAuthenticatorSelection = z.object({authenticator_attachment: z.string().optional(), user_verification: z.string().optional()}); export const webAuthConfigurationAuthenticators = z.object({desired_authenticator_status: z.array(z.string()).optional(), undesired_authenticator_status: z.array(z.string()).optional(), validate_anchors: z.boolean().optional(), validate_attestation_type: z.boolean().optional(), validate_entry: z.boolean().optional(), validate_entry_permit_zero_aaguid: z.boolean().optional(), validate_status: z.boolean().optional()}); export const webAuthConfigurationRp = z.object({ids: z.array(z.string()).optional(), origins: z.array(z.string()).optional()}); export const webAuthConfigurationTimeout = z.object({login: z.string().optional(), login_uvd: z.string().optional(), registration: z.string().optional(), registration_uvd: z.string().optional()}); export const connectionsWebAuthConfiguration = z.object({attestation: webAuthConfigurationAttestation.optional(), authenticator_selection: webAuthConfigurationAuthenticatorSelection.optional(), authenticators: webAuthConfigurationAuthenticators.optional(), enable_auto_registration: z.boolean().optional(), enable_conditional_login: z.boolean().optional(), rp: webAuthConfigurationRp.optional(), show_passkey_button: z.boolean().optional(), timeout: webAuthConfigurationTimeout.optional()}); export const connectionsConnection = z.object({attribute_mapping: z.record(z.string(), z.string()).optional(), configuration_type: connectionsConfigurationType.optional(), debug_enabled: z.boolean().optional(), domains: z.array(domainsDomain).optional(), enabled: z.boolean().optional(), google_dwd_config: connectionsGoogleDWDConfig.optional(), id: z.string().optional(), key_id: z.string().optional(), mcp_server_url: z.string().optional(), oauth_config: connectionsOAuthConnectionConfig.optional(), oidc_config: connectionsOIDCConnectionConfig.optional(), organization_id: z.string().optional(), passwordless_config: connectionsPasswordLessConfig.optional(), provider: connectionsConnectionProvider.optional(), provider_key: z.string().optional(), saml_config: connectionsSAMLConnectionConfigResponse.optional(), static_config: connectionsStaticAuthConfig.optional(), status: connectionsConnectionStatus.optional(), test_connection_uri: z.string().optional(), type: connectionsConnectionType.optional(), webauthn_config: connectionsWebAuthConfiguration.optional()}); export const connectionsGetConnectionResponse = z.object({connection: connectionsConnection.optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get connection details * * GET /api/v1/organizations/{organization_id}/connections/{id} */ export const getApiApiV1OrganizationsOrganizationIdConnectionsId = async (args: GetApiApiV1OrganizationsOrganizationIdConnectionsIdArgs, options?: GetApiApiV1OrganizationsOrganizationIdConnectionsIdOptions) => { const {baseUrl = "https://$SCALEKIT_ENVIRONMENT_URL", fetch: fetchFn = fetch, oauth2} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (oauth2 !== undefined) headers.set('authorization', `Bearer ${oauth2}`) const url = `${baseUrl.replace(/\/+$/, '')}/api/v1/organizations/${encodeURIComponent(String(args.organization_id))}/connections/${encodeURIComponent(String(args.id))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(connectionsGetConnectionResponse, await res.json()) };