import {z} from 'zod' export type AuditLogAction = 'login' | 'create_org' | 'update_org' | 'delete_org' | 'revoke_all_enterprise_api_keys' | 'add_enterprise_member' | 'delete_member' | 'add_member' | 'assign_roles' | 'update_role' | 'create_role' | 'delete_role' | 'add_group_membership' | 'update_group_membership' | 'delete_group_membership' | 'create_knowledge' | 'edit_knowledge' | 'delete_knowledge' | 'create_folder' | 'update_folder' | 'delete_folder' | 'create_session' | 'sleep_session' | 'terminate_session' | 'send_message' | 'create_service_api_key' | 'revoke_enterprise_api_key' | 'create_gitlab_integration' | 'update_gitlab_integration' | 'reconnect_gitlab_integration' | 'delete_gitlab_integration' | 'create_gitlab_app_config' | 'create_azure_devops_integration' | 'reconnect_azure_devops_integration' | 'delete_azure_devops_integration' | 'remove_repo_from_devin' | 'update_enterprise_hypervisor_settings' | 'update_enterprise_settings' | 'update_org_settings' | 'update_code_snippet_telemetry' | 'ai_guardrail_violation' | 'update_ai_guardrail' | 'approve_deploy' | 'approve_test_app' | 'permission_response' | 'search_query' | 'create_org_api_key' | 'create_user_api_key' | 'view_org_api_key' | 'view_user_api_key' | 'create_secret' | 'update_secret' | 'delete_secret' | 'create_playbook' | 'update_playbook' | 'delete_playbook' | 'enable_persona' | 'disable_persona' | 'delete_persona' | 'start_repo_setup' | 'delete_repo_setup' | 'finish_repo_setup' | 'github_integration_deleted' | 'create_github_integration' | 'delete_github_integration' | 'refresh_github_integration' | 'create_bitbucket_integration' | 'delete_bitbucket_integration' | 'mcp_server_install' | 'mcp_server_update' | 'mcp_server_enable' | 'mcp_server_disable' | 'mcp_server_delete' | 'mcp_server_secret_link' | 'mcp_server_secret_unlink' | 'mcp_server_oauth_initiate' | 'mcp_server_oauth_tokens_granted' | 'mcp_server_oauth_tokens_revoked' | 'mcp_enterprise_server_targets_update' | 'mcp_enterprise_server_credential_set' | 'mcp_enterprise_server_credential_delete' | 'create_mcp_validation_session' | 'set_account_managed_plugins' | 'set_org_managed_plugins' | 'set_managed_plugin_bundle' | 'delete_managed_plugin_bundle' | 'secure_mode_profile_created' | 'secure_mode_profile_updated' | 'secure_mode_binding_created' | 'secure_mode_binding_updated' | 'secure_mode_binding_deleted' | 'create_service_user' | 'update_service_user' | 'delete_service_user' | 'assign_service_user_role' | 'remove_service_user_role' | 'create_git_permission' | 'delete_git_permission' | 'update_git_permission' | 'create_maintenance_task' | 'update_maintenance_task' | 'delete_maintenance_task' | 'create_snapshot_script' | 'schedule_snapshot_script' | 'execute_snapshot_script' | 'update_repo_setup_steering_knowledge' | 'delete_repo_setup_steering_knowledge' | 'set_org_group_limits' | 'create_join_request' | 'approve_join_request' | 'automatic_join_event' | 'reject_join_request' | 'create_seat_request' | 'approve_seat_request' | 'decline_seat_request' | 'create_service_user_api_key' | 'revoke_service_user_api_key' | 'rotate_service_user_api_key' | 'create_pat' | 'revoke_pat' | 'rotate_pat' | 'create_blueprint' | 'create_blueprint_version' | 'rollback_blueprint_version' | 'delete_blueprint' | 'reorder_blueprints' | 'create_enterprise_blueprint' | 'create_enterprise_blueprint_version' | 'rollback_enterprise_blueprint_version' | 'delete_enterprise_blueprint' | 'accept_skill_pr' | 'trigger_blueprint_build' | 'cancel_blueprint_build' | 'upload_blueprint_file' | 'delete_blueprint_file' | 'sync_repo_blueprints' | 'detach_blueprint_from_git' | 'create_blueprint_pr' | 'pin_build' | 'unpin_build' | 'delete_build' | 'trigger_automation' | 'create_automation' | 'update_automation' | 'delete_automation' | 'reset_automation_monitor' | 'update_automation_scratch' | 'regenerate_automation_webhook_secret' | 'acknowledge_session_hard_cap' | 'create_audit_log_export' | 'update_audit_log_export' | 'delete_audit_log_export' | 'start_code_scan' | 'create_outpost_pool' | 'update_outpost_pool' | 'delete_outpost_pool' | 'claim_outpost_session' | 'release_outpost_session'; export type GetApiV3EnterpriseOrganizationsOrgIdAuditLogsArgs = {org_id: string, order?: ('asc' | 'desc') | undefined, time_before?: (number | null) | undefined, time_after?: (number | null) | undefined, after?: (string | null) | undefined, first?: number | undefined, action?: (AuditLogAction | null) | undefined}; export type GetApiV3EnterpriseOrganizationsOrgIdAuditLogsOptions = {baseUrl: string, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const auditLogAction = z.enum(["login", "create_org", "update_org", "delete_org", "revoke_all_enterprise_api_keys", "add_enterprise_member", "delete_member", "add_member", "assign_roles", "update_role", "create_role", "delete_role", "add_group_membership", "update_group_membership", "delete_group_membership", "create_knowledge", "edit_knowledge", "delete_knowledge", "create_folder", "update_folder", "delete_folder", "create_session", "sleep_session", "terminate_session", "send_message", "create_service_api_key", "revoke_enterprise_api_key", "create_gitlab_integration", "update_gitlab_integration", "reconnect_gitlab_integration", "delete_gitlab_integration", "create_gitlab_app_config", "create_azure_devops_integration", "reconnect_azure_devops_integration", "delete_azure_devops_integration", "remove_repo_from_devin", "update_enterprise_hypervisor_settings", "update_enterprise_settings", "update_org_settings", "update_code_snippet_telemetry", "ai_guardrail_violation", "update_ai_guardrail", "approve_deploy", "approve_test_app", "permission_response", "search_query", "create_org_api_key", "create_user_api_key", "view_org_api_key", "view_user_api_key", "create_secret", "update_secret", "delete_secret", "create_playbook", "update_playbook", "delete_playbook", "enable_persona", "disable_persona", "delete_persona", "start_repo_setup", "delete_repo_setup", "finish_repo_setup", "github_integration_deleted", "create_github_integration", "delete_github_integration", "refresh_github_integration", "create_bitbucket_integration", "delete_bitbucket_integration", "mcp_server_install", "mcp_server_update", "mcp_server_enable", "mcp_server_disable", "mcp_server_delete", "mcp_server_secret_link", "mcp_server_secret_unlink", "mcp_server_oauth_initiate", "mcp_server_oauth_tokens_granted", "mcp_server_oauth_tokens_revoked", "mcp_enterprise_server_targets_update", "mcp_enterprise_server_credential_set", "mcp_enterprise_server_credential_delete", "create_mcp_validation_session", "set_account_managed_plugins", "set_org_managed_plugins", "set_managed_plugin_bundle", "delete_managed_plugin_bundle", "secure_mode_profile_created", "secure_mode_profile_updated", "secure_mode_binding_created", "secure_mode_binding_updated", "secure_mode_binding_deleted", "create_service_user", "update_service_user", "delete_service_user", "assign_service_user_role", "remove_service_user_role", "create_git_permission", "delete_git_permission", "update_git_permission", "create_maintenance_task", "update_maintenance_task", "delete_maintenance_task", "create_snapshot_script", "schedule_snapshot_script", "execute_snapshot_script", "update_repo_setup_steering_knowledge", "delete_repo_setup_steering_knowledge", "set_org_group_limits", "create_join_request", "approve_join_request", "automatic_join_event", "reject_join_request", "create_seat_request", "approve_seat_request", "decline_seat_request", "create_service_user_api_key", "revoke_service_user_api_key", "rotate_service_user_api_key", "create_pat", "revoke_pat", "rotate_pat", "create_blueprint", "create_blueprint_version", "rollback_blueprint_version", "delete_blueprint", "reorder_blueprints", "create_enterprise_blueprint", "create_enterprise_blueprint_version", "rollback_enterprise_blueprint_version", "delete_enterprise_blueprint", "accept_skill_pr", "trigger_blueprint_build", "cancel_blueprint_build", "upload_blueprint_file", "delete_blueprint_file", "sync_repo_blueprints", "detach_blueprint_from_git", "create_blueprint_pr", "pin_build", "unpin_build", "delete_build", "trigger_automation", "create_automation", "update_automation", "delete_automation", "reset_automation_monitor", "update_automation_scratch", "regenerate_automation_webhook_secret", "acknowledge_session_hard_cap", "create_audit_log_export", "update_audit_log_export", "delete_audit_log_export", "start_code_scan", "create_outpost_pool", "update_outpost_pool", "delete_outpost_pool", "claim_outpost_session", "release_outpost_session"]); export const auditLogResponse = z.object({action: auditLogAction, audit_log_id: z.string(), created_at: z.number().int(), data: z.record(z.string(), z.unknown()), org_id: z.string().nullable(), service_user_id: z.string().nullable(), service_user_name: z.string().nullable(), user_email: z.string().nullable(), user_id: z.string().nullable()}); export const paginatedResponseAuditLogResponse = z.object({end_cursor: z.string().nullable().optional(), has_next_page: z.boolean().optional(), items: z.array(auditLogResponse), total: z.number().int().nullable().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 }; /** * List Organization Audit Logs * * GET /v3/enterprise/organizations/{org_id}/audit-logs */ export const getApiV3EnterpriseOrganizationsOrgIdAuditLogs = async (args: GetApiV3EnterpriseOrganizationsOrgIdAuditLogsArgs, options: GetApiV3EnterpriseOrganizationsOrgIdAuditLogsOptions) => { const {baseUrl, fetch: fetchFn = fetch, bearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.order != null) query.append("order", String(args.order)) if (args.time_before != null) query.append("time_before", String(args.time_before)) if (args.time_after != null) query.append("time_after", String(args.time_after)) if (args.after != null) query.append("after", String(args.after)) if (args.first != null) query.append("first", String(args.first)) if (args.action != null) query.append("action", String(args.action)) if (bearerAuth !== undefined) headers.set('authorization', `Bearer ${bearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/v3/enterprise/organizations/${encodeURIComponent(String(args.org_id))}/audit-logs${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(paginatedResponseAuditLogResponse, await res.json()) };