### Configure macOS Onboarding Settings Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/macos_onboarding_settings.md Example of how to enable macOS onboarding and define a list of items to be displayed during device setup. Each item specifies its entity ID, type, and priority. ```terraform resource "jamfpro_macos_onboarding_settings" "example" { enabled = true onboarding_items { entity_id = "1" self_service_entity_type = "OS_X_POLICY" priority = 1 } onboarding_items { entity_id = "5" self_service_entity_type = "OS_X_MAC_APP" priority = 2 } onboarding_items { entity_id = "3" self_service_entity_type = "OS_X_CONFIGURATION_PROFILE" priority = 3 } } ``` -------------------------------- ### jamfpro_app_installer_global_settings Resource Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/app_installer_global_settings.md Example of how to configure the jamfpro_app_installer_global_settings resource to manage global app installer settings. ```APIDOC ## jamfpro_app_installer_global_settings (Resource) ### Description Configures global settings for App Installers in Jamf Pro. These settings control user notifications, update deadlines, and relaunch behavior for app installations. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Optional - **complete_message** (String) - Optional - Message to display as the push notification (up to 150 characters) when an update is complete. This applies globally to all App Installers deployments unless overridden in an individual deployment. - **deadline** (Number) - Optional - How long the user can defer the update before the app is forced to quit to complete the update in hours. This applies globally to all App Installers deployments unless overridden in an individual deployment. - **deadline_message** (String) - Optional - Message to display as the push notification (up to 150 characters) when the app is forced to quit to complete the update. This applies globally to all App Installers deployments unless overridden in an individual deployment. - **notification_interval** (Number) - Optional - How often the notification message is displayed in hours. This applies globally to all App Installers deployments unless overridden in an individual deployment. - **notification_message** (String) - Optional - Message to display as the push notification (up to 150 characters) when an app installer update is available. This message applies to all App Installers deployments unless overridden in a specific app deployment. - **quit_delay** (Number) - Optional - Additional time for users to save work and close the app in minutes. This applies globally to all App Installers deployments unless overridden in an individual deployment. - **relaunch** (Boolean) - Optional - If true, the app will be relaunched after installation. This applies globally to all App Installers deployments unless overridden in an individual deployment. - **suppress** (Boolean) - Optional - If true, suppresses all user-facing notifications globally. This applies globally to all App Installers deployments unless overridden in an individual deployment. - **timeouts** (Block) - Optional - Configuration for timeouts for create, delete, read, and update operations. #### Nested Schema for `timeouts` - **create** (String) - Optional - **delete** (String) - Optional - **read** (String) - Optional - **update** (String) - Optional ### Read-Only - **id** (String) - The ID of this resource. ### Request Example ```terraform resource "jamfpro_app_installer_global_settings" "jamfpro_app_installer_singleton" { notification_message = "A new version of this app is ready to install." notification_interval = 24 deadline_message = "Please install the update to continue using the app." deadline = 48 quit_delay = 5 complete_message = "Installation complete. You may now relaunch the app." relaunch = true suppress = false } ``` ### Response #### Success Response (200) - **id** (String) - The ID of this resource. #### Response Example (Terraform apply output will show resource creation status and ID) ``` -------------------------------- ### Create macOS Configuration Profile (Automatic Install) Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/macos_configuration_profile_plist.md Example of creating a macOS configuration profile for automatic installation. Ensure the `payloads` path points to a valid `.mobileconfig` file. ```terraform variable "version_number" { description = "The version number to include in the name and install button text." type = string default = "v1.0" } // Minimum viable example of creating a macOS configuration profile in Jamf Pro for automatic installation using a plist source file resource "jamfpro_macos_configuration_profile_plist" "jamfpro_macos_configuration_profile_064" { name = "your-name-${var.version_number}" description = "An example mobile device configuration profile." level = "System" distribution_method = "Install Automatically" // "Make Available in Self Service", "Install Automatically" redeploy_on_update = "Newly Assigned" payloads = file("${path.module}/path/to/your/file.mobileconfig") payload_validate = true user_removable = false scope { all_computers = true all_jss_users = false } } ``` -------------------------------- ### Set Up Python Virtual Environment and Install Requirements Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/testing/README.md Use these commands to create a Python virtual environment and install necessary dependencies from requirements.txt for running provider tests. ```bash python -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` -------------------------------- ### Configure Jamf Pro App Installer Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/app_installer.md Example of configuring an app installer for Jamf Pro. This includes settings for deployment type, update behavior, and notification preferences. Use 'SELF_SERVICE' for user-initiated installs and 'AUTOMATIC' for background updates. ```terraform resource "jamfpro_app_installer" "jamfpro_app_installer_001" { name = "010 Editor" enabled = true deployment_type = "SELF_SERVICE" update_behavior = "AUTOMATIC" category_id = "-1" site_id = "-1" smart_group_id = "1" install_predefined_config_profiles = false trigger_admin_notifications = false notification_settings { notification_message = "A new update is available" notification_interval = 1 deadline_message = "Update deadline approaching" deadline = 1 quit_delay = 1 complete_message = "Update completed successfully" relaunch = true suppress = false } self_service_settings { include_in_featured_category = true include_in_compliance_category = true force_view_description = true description = "This is an example app deployment" categories { id = "5" featured = true } } } ``` -------------------------------- ### jamfpro_macos_onboarding_settings Resource Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/macos_onboarding_settings.md Example of how to configure the jamfpro_macos_onboarding_settings resource in Terraform. ```APIDOC ## jamfpro_macos_onboarding_settings ### Description This resource allows you to manage the settings for macOS onboarding, including enabling the feature and defining the list of onboarding items that will be displayed during device setup. ### Schema #### Required - `enabled` (Boolean) - Enable or disable macOS onboarding #### Optional - `onboarding_items` (Block Set) - List of onboarding items to display during device setup. - `entity_id` (String) - Required - ID of the Self Service entity (policy, app, or configuration profile) - `priority` (Number) - Required - Priority order for the onboarding item (lower numbers appear first) - `self_service_entity_type` (String) - Required - Type of Self Service entity. Supported values are 'OS_X_POLICY', 'OS_X_MAC_APP', 'OS_X_CONFIGURATION_PROFILE' - `timeouts` (Block, Optional) - `create` (String) - Optional - `delete` (String) - Optional - `read` (String) - Optional - `update` (String) - Optional #### Read-Only - `id` (String) - The ID of this resource. - `entity_name` (String) - Name of the entity (computed) - `id` (String) - Unique identifier for the onboarding item (computed) - `scope_description` (String) - Description of the scope (computed) - `site_description` (String) - Description of the site (computed) ### Request Example ```terraform resource "jamfpro_macos_onboarding_settings" "example" { enabled = true onboarding_items { entity_id = "1" self_service_entity_type = "OS_X_POLICY" priority = 1 } onboarding_items { entity_id = "5" self_service_entity_type = "OS_X_MAC_APP" priority = 2 } onboarding_items { entity_id = "3" self_service_entity_type = "OS_X_CONFIGURATION_PROFILE" priority = 3 } } ``` ``` -------------------------------- ### Full Example of File Share Distribution Point Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/file_share_distribution_point.md This example demonstrates the configuration of a comprehensive file share distribution point, including all available settings for connection type, authentication, and HTTPS access. ```terraform resource "jamfpro_file_share_distribution_points" "full_example" { // Page 1 name = "tf-example-fileshare-distribution-point" ip_address = "ny.company.com" is_master = false failover_point = "Cloud Distribution Point" // Cloud Distribution Point / or any other dp defined with jamf pro enable_load_balancing = false // Page 2 connection_type = "AFP" // SMB / AFP share_name = "FullExampleShareName" share_port = 445 workgroup_or_domain = "EXAMPLEDOMAIN" read_only_username = "fullreadonlyuser" read_only_password = "funky_password_qwerty" read_write_username = "fullreadwriteuser" read_write_password = "funky_password_qwerty" no_authentication_required = false // page 3 https_downloads_enabled = true https_port = 443 https_share_path = "/contextpath" https_username_password_required = true https_username = "fullhttpuser" https_password = "funky_password_qwerty" } ``` -------------------------------- ### List Installed Applications on a Computer Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/data-sources/computer_inventory.md Fetches a list of all applications installed on a computer. This output includes application name, version, and bundle ID. ```terraform data "jamfpro_computer_inventory" "app_inventory" { id = "707" } output "installed_applications" { value = [ for app in data.jamfpro_computer_inventory.app_inventory.applications : { name = app.name version = app.version bundle_id = app.bundle_id mac_app_store = app.mac_app_store update_available = app.update_available } ] description = "List of all installed applications" } ``` -------------------------------- ### jamfpro_self_service_branding_ios Resource Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/self_service_branding_ios.md Example configuration for the jamfpro_self_service_branding_ios resource. ```APIDOC ## jamfpro_self_service_branding_ios Resource ### Description This resource allows for the configuration of Self Service branding specifically for iOS devices in Jamf Pro. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body This resource does not use a request body in the traditional API sense. Configuration is managed through Terraform resource arguments. ### Request Example ```terraform resource "jamfpro_self_service_branding_ios" "example" { main_header = "My Organization (iOS)" icon_id = 5 header_background_color_code = "0066CC" menu_icon_color_code = "FFFFFF" branding_name_color_code = "FFFFFF" status_bar_text_color = "light" } ``` ### Response #### Success Response (200) Not Applicable (Terraform Resource - state is managed by Terraform) #### Response Example Not Applicable (Terraform Resource - state is managed by Terraform) ### Schema #### Required - **main_header** (String) - The main header for the branding configuration. #### Optional - **branding_name_color_code** (String) - Branding name color code (RRGGBB, without leading '#'). - **header_background_color_code** (String) - Header background color code (RRGGBB, without leading '#'). - **icon_id** (Number) - Icon ID to use for the branding. - **menu_icon_color_code** (String) - Menu icon color code (RRGGBB, without leading '#'). - **status_bar_text_color** (String) - Status bar text color; typically 'light' or 'dark'. - **timeouts** (Block, Optional) - Configuration for timeouts. ### Nested Schema for timeouts Optional: - **create** (String) - **delete** (String) - **read** (String) - **update** (String) #### Read-Only - **id** (String) - The unique identifier of the Self Service branding configuration. ``` -------------------------------- ### jamfpro_file_share_distribution_point Resource Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/file_share_distribution_point.md Example configuration for creating a jamfpro_file_share_distribution_point resource. ```APIDOC ## jamfpro_file_share_distribution_point Resource ### Description Manages a File Share Distribution Point in Jamf Pro. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body This resource is configured via Terraform HCL, not a direct API request body. ### Request Example ```terraform resource "jamfpro_file_share_distribution_point" "example" { name = "tf-example-fileshare-distribution-point" ip_address = "ny.company.com" is_master = false failover_point = "Cloud Distribution Point" enable_load_balancing = false connection_type = "AFP" share_name = "FullExampleShareName" share_port = 445 workgroup_or_domain = "EXAMPLEDOMAIN" read_only_username = "fullreadonlyuser" read_only_password = "funky_password_qwerty" read_write_username = "fullreadwriteuser" read_write_password = "funky_password_qwerty" no_authentication_required = false https_downloads_enabled = true https_port = 443 https_share_path = "/contextpath" https_username_password_required = true https_username = "fullhttpuser" https_password = "funky_password_qwerty" } ``` ### Response This resource is managed by Terraform and does not have direct API responses in this format. #### Success Response (200) N/A #### Response Example N/A ### Schema #### Required - `connection_type` (String) The type of connection protocol to the distribution point. Can be either 'AFP', or 'SMB'. - `name` (String) The name of the distribution point. #### Optional - `enable_load_balancing` (Boolean) Indicates if load balancing is enabled. - `failover_point` (String) The failover point for the distribution point. - `https_downloads_enabled` (Boolean) Indicates if HTTP downloads are enabled. - `https_password` (String, Sensitive) The password for HTTP access, if username/password authentication is required. This field is marked as sensitive. - `https_port` (Number) The port number for the https share. - `https_share_path` (String) Path to the https share (e.g. if the share is accessible at http://192.168.10.10/JamfShare, the context is 'JamfShare'). - `https_username` (String) The username for HTTP access, if username/password authentication is required. - `https_username_password_required` (Boolean) Indicates if username/password authentication is required for accessing the distribution point. - `ip_address` (String) Hostname or IP address of the distribution point server. - `is_master` (Boolean) Indicates if the distribution point is the principal distribution point, used as the authoritative source for all files. - `no_authentication_required` (Boolean) Indicates if no authentication is required for accessing the distribution point. - `read_only_password` (String, Sensitive) The password for read-only access. This field is marked as sensitive. - `read_only_username` (String) The username for read-only access to the distribution point. - `read_write_password` (String, Sensitive) The password for read-write access. This field is marked as sensitive. - `read_write_username` (String) The username for read-write access to the distribution point. - `share_name` (String) The name of the network share. - `share_port` (Number) The port number used for the fileshare distribution point. - `timeouts` (Block, Optional) Configuration for timeouts. - `workgroup_or_domain` (String) The workgroup or domain of the distribution point. #### Read-Only - `failover_point_url` (String) The URL of the failover point. - `http_url` (String) The URL for HTTP downloads. Constructed from the protocol, IP address, and port. - `id` (String) The unique identifier of the distribution point. - `ipaddress` (String) Hostname or IP address of the distribution point server. - `local_path` (String) The local path to the distribution point. - `password` (String, Sensitive) The password for the distribution point. This field is marked as sensitive and will not be displayed in logs or console output. - `protocol` (String) The protocol used if HTTPS is enabled for the distribution point. Result will always be 'https' if enabled. - `ssh_username` (String) The SSH username for the distribution point. #### Nested Schema for `timeouts` Optional: - `create` (String) - `delete` (String) - `read` (String) - `update` (String) ``` -------------------------------- ### Package Details Output Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/data-sources/package.md This example demonstrates how to output various details of a retrieved package, such as its ID, name, filename, and other configuration attributes. ```terraform output "firefox_details" { value = { id = data.jamfpro_package.by_name.id package_name = data.jamfpro_package.by_name.package_name filename = data.jamfpro_package.by_name.filename package_file_source = data.jamfpro_package.by_name.package_file_source category_id = data.jamfpro_package.by_name.category_id info = data.jamfpro_package.by_name.info notes = data.jamfpro_package.by_name.notes priority = data.jamfpro_package.by_name.priority os_requirements = data.jamfpro_package.by_name.os_requirements fill_user_template = data.jamfpro_package.by_name.fill_user_template indexed = data.jamfpro_package.by_name.indexed fill_existing_users = data.jamfpro_package.by_name.fill_existing_users swu = data.jamfpro_package.by_name.swu reboot_required = data.jamfpro_package.by_name.reboot_required self_heal_notify = data.jamfpro_package.by_name.self_heal_notify self_healing_action = data.jamfpro_package.by_name.self_healing_action os_install = data.jamfpro_package.by_name.os_install serial_number = data.jamfpro_package.by_name.serial_number parent_package_id = data.jamfpro_package.by_name.parent_package_id base_path = data.jamfpro_package.by_name.base_path suppress_updates = data.jamfpro_package.by_name.suppress_updates cloud_transfer_status = data.jamfpro_package.by_name.cloud_transfer_status ignore_conflicts = data.jamfpro_package.by_name.ignore_conflicts suppress_from_dock = data.jamfpro_package.by_name.suppress_from_dock suppress_eula = data.jamfpro_package.by_name.suppress_eula suppress_registration = data.jamfpro_package.by_name.suppress_registration install_language = data.jamfpro_package.by_name.install_language md5 = data.jamfpro_package.by_name.md5 sha256 = data.jamfpro_package.by_name.sha256 hash_type = data.jamfpro_package.by_name.hash_type hash_value = data.jamfpro_package.by_name.hash_value size = data.jamfpro_package.by_name.size os_installer_version = data.jamfpro_package.by_name.os_installer_version manifest = data.jamfpro_package.by_name.manifest manifest_file_name = data.jamfpro_package.by_name.manifest_file_name format = data.jamfpro_package.by_name.format package_uri = data.jamfpro_package.by_name.package_uri md5_file_hash = data.jamfpro_package.by_name.md5_file_hash } } ``` -------------------------------- ### jamfpro_local_admin_password_settings Resource Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/local_admin_password_settings.md Example configuration for the jamfpro_local_admin_password_settings resource. ```APIDOC ## jamfpro_local_admin_password_settings Resource ### Description Manages local administrator password settings for Jamf Pro. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Optional - **auto_deploy_enabled** (Boolean) - Optional - When enabled, all appropriate computers will have the SetAutoAdminPassword command sent to them automatically. - **auto_rotate_enabled** (Boolean) - Optional - When enabled, all appropriate computers will automatically have their password expired and rotated after the configured autoRotateExpirationTime. - **auto_rotate_expiration_time_seconds** (Number) - Optional - The amount of time in seconds that the local admin password will be rotated automatically if it is never viewed. - **password_rotation_time_seconds** (Number) - Optional - The amount of time in seconds that the local admin password will be rotated after viewing. - **timeouts** (Block) - Optional - Configuration for timeouts. ### Nested Schema for `timeouts` #### Optional - **create** (String) - Optional - **delete** (String) - Optional - **read** (String) - Optional - **update** (String) - Optional ### Read-Only - **id** (String) - The ID of this resource. ### Request Example ```terraform resource "jamfpro_local_admin_password_settings" "local_admin_password_settings_001" { auto_deploy_enabled = false password_rotation_time_seconds = 3600 auto_rotate_enabled = false auto_rotate_expiration_time_seconds = 7776000 } ``` ### Response #### Success Response (200) - **id** (String) - The ID of this resource. #### Response Example ```json { "id": "some-resource-id" } ``` ``` -------------------------------- ### jamfpro_cloud_ldap Resource Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/cloud_ldap.md Example of how to configure the jamfpro_cloud_ldap resource with various settings. ```APIDOC ## jamfpro_cloud_ldap (Resource) ### Description Manages cloud LDAP configurations for Jamf Pro. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Required - **connection_type** (String) - The type of LDAP connection (LDAPS or START_TLS) - **display_name** (String) - The display name for the cloud LDAP configuration - **domain_name** (String, Sensitive) - The domain name for the LDAP server - **group_mappings_id** (String) - Group ID attribute mapping (e.g., cn) - **group_mappings_name** (String) - Group name attribute mapping (e.g., cn) - **group_mappings_object_class_limitation** (String) - Object class limitation for group mappings - **group_mappings_object_classes** (String) - Object classes for group mappings (e.g., groupOfNames) - **group_mappings_search_base** (String) - Search base for group mappings (e.g., ou=Groups) - **group_mappings_search_scope** (String) - Search scope for group mappings - **group_mappings_uuid** (String) - Group UUID attribute mapping (e.g., gidNumber) - **group_membership_mapping** (String) - Group membership attribute mapping (e.g., memberOf) - **keystore_file_bytes** (String, Sensitive) - Base64 encoded keystore file - **keystore_file_name** (String) - Name of the keystore file - **keystore_password** (String, Sensitive) - Keystore password - **port** (Number) - The port number for the LDAP server - **provider_name** (String) - The name of the cloud identity provider. Must be 'GOOGLE' or 'AZURE'. - **server_enabled** (Boolean) - Whether the cloud LDAP server is enabled - **server_url** (String) - The URL of the LDAP server - **user_mappings_email_address** (String) - Email address attribute mapping (e.g., mail) - **user_mappings_id** (String) - User ID attribute mapping (e.g., mail) - **user_mappings_object_class_limitation** (String) - Object class limitation for user mappings - **user_mappings_object_classes** (String) - Object classes for user mappings (e.g., inetOrgPerson) - **user_mappings_real_name** (String) - Real name attribute mapping (e.g., displayName) - **user_mappings_search_base** (String) - Search base for user mappings (e.g., ou=Users) - **user_mappings_search_scope** (String) - Search scope for user mappings - **user_mappings_username** (String) - Username attribute mapping (e.g., uid) - **user_mappings_uuid** (String) - User UUID attribute mapping (e.g., uid) #### Optional - **connection_timeout** (Number) - Connection timeout in seconds - **membership_calculation_optimization_enabled** (Boolean) - Enable optimization for membership calculations - **search_timeout** (Number) - Search timeout in seconds - **timeouts** (Block, Optional) - Nested schema for timeouts - **use_wildcards** (Boolean) - Whether to use wildcards in LDAP queries - **user_mappings_additional_search_base** (String) - Additional search base for user mappings - **user_mappings_building** (String) - Building attribute mapping - **user_mappings_department** (String) - Department attribute mapping (e.g., departmentNumber) - **user_mappings_phone** (String) - Phone attribute mapping - **user_mappings_position** (String) - Position attribute mapping (e.g., title) - **user_mappings_room** (String) - Room attribute mapping ### Request Example ```terraform resource "jamfpro_cloud_ldap" "example" { # Cloud IDP Common Settings provider_name = "GOOGLE" display_name = "Google LDAP" # Server Configuration server_enabled = true server_url = "ldap.google.com" domain_name = "jamf.com" port = 636 # Connection Settings connection_type = "LDAPS" connection_timeout = 60 search_timeout = 60 # Keystore Configuration keystore_password = "supersecretpassword" keystore_file_bytes = filebase64("/path/to/keystore.p12") keystore_file_name = "keystore.p12" # Advanced Server Settings use_wildcards = true membership_calculation_optimization_enabled = true # User Mappings user_mappings_object_class_limitation = "ANY_OBJECT_CLASSES" user_mappings_object_classes = "inetOrgPerson" user_mappings_search_base = "ou=Users" user_mappings_search_scope = "ALL_SUBTREES" user_mappings_additional_search_base = "" # User Attribute Mappings user_mappings_id = "mail" user_mappings_username = "uid" user_mappings_real_name = "displayName" user_mappings_email_address = "mail" user_mappings_uuid = "uid" # Optional User Attributes user_mappings_department = "departmentNumber" user_mappings_position = "title" user_mappings_phone = "" user_mappings_building = "" user_mappings_room = "" # Group Mappings group_mappings_object_class_limitation = "ANY_OBJECT_CLASSES" group_mappings_object_classes = "groupOfNames" group_mappings_search_base = "ou=Groups" group_mappings_search_scope = "ALL_SUBTREES" # Group Attribute Mappings group_mappings_id = "cn" group_mappings_name = "cn" group_mappings_uuid = "gidNumber" # Membership Mapping group_membership_mapping = "memberOf" } ``` ### Response #### Success Response (200) Not Applicable (Terraform Resource) #### Response Example Not Applicable (Terraform Resource) ``` -------------------------------- ### jamfpro_impact_alert_notification_settings Resource Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/impact_alert_notification_settings.md Example configuration for the jamfpro_impact_alert_notification_settings resource. ```APIDOC ## Resource: jamfpro_impact_alert_notification_settings ### Description Manages the notification settings for deployment impact alerts in Jamf Pro. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Required - **deployable_objects_alert_enabled** (Boolean) - Required - Display deployment impact alert on Save for deployable objects. Jamf Pro users will be prompted with a deployment summary if edits are made to a deployable object. - **deployable_objects_confirmation_code_enabled** (Boolean) - Required - Require Jamf Pro users to acknowledge edits for deployable objects. Jamf Pro users will be prompted to type COMMIT in the criteria summary before saving. - **scopeable_objects_alert_enabled** (Boolean) - Required - Display criteria impact alert on Save for scopeable object edits. Jamf Pro users will be prompted with a deployment summary if edits are made to a scopeable object. - **scopeable_objects_confirmation_code_enabled** (Boolean) - Required - Require Jamf Pro users to acknowledge edits for scopeable objects. Jamf Pro users will be prompted to type COMMIT in the criteria summary before saving. #### Optional - **timeouts** (Block) - Optional - Configuration for timeouts. - **create** (String) - Optional - Timeout for create operations. - **delete** (String) - Optional - Timeout for delete operations. - **read** (String) - Optional - Timeout for read operations. - **update** (String) - Optional - Timeout for update operations. ### Read-Only - **id** (String) - The ID of this resource. ### Request Example ```terraform resource "jamfpro_impact_alert_notification_settings" "main" { deployable_objects_alert_enabled = true deployable_objects_confirmation_code_enabled = false scopeable_objects_alert_enabled = true scopeable_objects_confirmation_code_enabled = false } ``` ### Response #### Success Response (200) Not Applicable (Terraform Resource) #### Response Example Not Applicable (Terraform Resource) ``` -------------------------------- ### jamfpro_client_checkin Resource Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/client_checkin.md Example configuration for the jamfpro_client_checkin resource. ```APIDOC ## jamfpro_client_checkin (Resource) ### Description Manages client check-in settings within Jamf Pro. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **check_in_frequency** (Number) - Required - The frequency at which computers check in with Jamf Pro for available policies. Valid values are 5, 15, 30, or 60. - **create_startup_script** (Boolean) - Optional - Determines if a startup script should be created. - **startup_log** (Boolean) - Optional - Determines if startup events should be logged. Requires `create_startup_script` to be true. - **startup_ssh** (Boolean) - Optional - Enable SSH (Remote Login) on computers that have it disabled at startup. Requires `create_startup_script` to be true. - **startup_policies** (Boolean) - Optional - Determines if policies should be checked at startup. Requires `create_startup_script` to be true. - **create_hooks** (Boolean) - Optional - Determines if login/logout hooks should be created. - **hook_log** (Boolean) - Optional - Determines if login/logout events should be logged. Requires `create_hooks` to be true. - **hook_policies** (Boolean) - Optional - Determines if policies should be checked at login/logout. Requires `create_hooks` to be true. - **enable_local_configuration_profiles** (Boolean) - Optional - Enable local configuration profiles management. - **allow_network_state_change_triggers** (Boolean) - Optional - Check for policies with a 'Network State Change' trigger when a network change occurs, such as a network connection change, a computer name change, or an IP address change. - **timeouts** (Block) - Optional - Configuration for timeouts. - **create** (String) - Optional - Timeout for create operations. - **delete** (String) - Optional - Timeout for delete operations. - **read** (String) - Optional - Timeout for read operations. - **update** (String) - Optional - Timeout for update operations. ### Request Example ```terraform { "check_in_frequency": 30, "create_startup_script": true, "startup_log": true, "startup_ssh": true, "startup_policies": true, "create_hooks": true, "hook_log": true, "hook_policies": true, "enable_local_configuration_profiles": true, "allow_network_state_change_triggers": true } ``` ### Response #### Success Response (200) - **id** (String) - The ID of this resource. #### Response Example ```json { "id": "some-resource-id" } ``` ``` -------------------------------- ### Create jamfpro_access_management_settings Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/access_management_settings.md Example of creating an access management settings resource. Requires the MDM Server UUID. ```terraform resource "jamfpro_access_management_settings" "example" { automated_device_enrollment_server_uuid = "550d8400-e29b-41d4-a716-446655440000" } ``` -------------------------------- ### Output Building Details Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/data-sources/building.md This example demonstrates how to output various details of a building, including its full address, formatted as a map. ```terraform output "building_details" { value = { name = data.jamfpro_building.by_name.name full_address = join("\n", [ data.jamfpro_building.by_name.street_address1, data.jamfpro_building.by_name.street_address2, data.jamfpro_building.by_name.city, data.jamfpro_building.by_name.state_province, data.jamfpro_building.by_name.zip_postal_code, data.jamfpro_building.by_name.country ]) } } ``` -------------------------------- ### Create jamfpro_sso_certificate Resource Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/sso_certificate.md Example of how to declare and create a jamfpro_sso_certificate resource. No specific configuration is required for basic creation. ```terraform resource "jamfpro_sso_certificate" "currrent" {} ``` -------------------------------- ### jamfpro_computer_inventory_collection_settings Resource Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/computer_inventory_collection_settings.md Example of how to configure the jamfpro_computer_inventory_collection_settings resource to manage computer inventory collection preferences and application paths. ```APIDOC ## jamfpro_computer_inventory_collection_settings Resource ### Description Manages computer inventory collection settings within Jamf Pro. ### Method Resource (Terraform) ### Endpoint N/A (Managed by Terraform Provider) ### Parameters #### Required - `computer_inventory_collection_preferences` (Block List, Min: 1, Max: 1) - Configuration block for inventory collection preferences. - `allow_changing_user_and_location` (Boolean) - Required - Allow local administrators to use the jamf binary recon verb to change User and Location inventory information in Jamf Pro. - `calculate_sizes` (Boolean) - Required - Calculate sizes of items in inventory collection. - `collect_synced_mobile_device_info` (Boolean) - Required - Collect information about synced mobile devices. - `collect_unmanaged_certificates` (Boolean) - Required - Collect unmanaged certificates (managed certificates are always collected). - `include_accounts` (Boolean) - Required - Collect UIDs, usernames, full names, and home directory paths for local user accounts. - `include_hidden_accounts` (Boolean) - Required - Include hidden accounts in inventory collection. - `include_packages` (Boolean) - Required - Include packages in inventory collection. - `include_printers` (Boolean) - Required - Include printers in inventory collection. - `include_services` (Boolean) - Required - Include services in inventory collection. - `include_software_id` (Boolean) - Required - Include software ID in inventory collection. - `include_software_updates` (Boolean) - Required - Include software updates in inventory collection. - `monitor_application_usage` (Boolean) - Required - Collect the number of minutes applications are in the foreground. - `monitor_beacons` (Boolean) - Required - Monitor iBeacon regions and have computers submit information to Jamf Pro when they enter or exit a region. - `update_ldap_info_on_computer_inventory_submissions` (Boolean) - Required - Update LDAP information when computer inventory is submitted. - `use_unix_user_paths` (Boolean) - Required - Use Unix user paths. #### Optional - `application_paths` (Block Set) - Custom paths to use for collecting applications. These paths will also be used for collecting Application Usage information (if enabled). - `path` (String) - Required - Custom path to be included in inventory collection. - `timeouts` (Block) - Configuration block for timeouts. - `create` (String) - Optional - Timeout for create operations. - `delete` (String) - Optional - Timeout for delete operations. - `read` (String) - Optional - Timeout for read operations. - `update` (String) - Optional - Timeout for update operations. ### Read-Only - `id` (String) - The ID of this resource. ### Request Example ```terraform resource "jamfpro_computer_inventory_collection_settings" "example" { computer_inventory_collection_preferences { monitor_application_usage = false include_packages = true include_software_updates = false include_software_id = true include_accounts = true calculate_sizes = false include_hidden_accounts = false include_printers = true include_services = true collect_synced_mobile_device_info = false update_ldap_info_on_computer_inventory_submissions = true monitor_beacons = false allow_changing_user_and_location = true use_unix_user_paths = true collect_unmanaged_certificates = true } application_paths { path = "/Applications/Custom/App1" } application_paths { path = "/Applications/Custom/App2" } application_paths { path = "/Applications/Adobe/Creative Cloud" } } ``` ### Response #### Success Response (200) - `id` (String) - The ID of the resource. #### Response Example (Terraform apply output will show the resource ID upon successful creation/update) ``` -------------------------------- ### Create and Query Jamf Pro Smart Computer Group Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/data-sources/smart_computer_group.md This example demonstrates how to create a smart computer group using the `jamfpro_smart_computer_group` resource and then query it using the data source by both ID and name. It also includes an output block to verify the retrieved group details. ```terraform resource "jamfpro_smart_computer_group" "test_group" { name = "Test Smart Group" site_id = "1" criteria { name = "Operating System Version" search_type = "is" value = "13.0" and_or = "and" opening_paren = false closing_paren = false } criteria { name = "Computer Model" search_type = "like" value = "MacBook Pro" and_or = "and" opening_paren = false closing_paren = false } } # Query by ID data "jamfpro_smart_computer_group" "by_id" { id = jamfpro_smart_computer_group.test_group.id depends_on = [jamfpro_smart_computer_group.test_group] } # Query by name data "jamfpro_smart_computer_group" "by_name" { name = jamfpro_smart_computer_group.test_group.name depends_on = [jamfpro_smart_computer_group.test_group] } # Verify output output "group_verification" { value = { by_id = { id = data.jamfpro_smart_computer_group.by_id.id name = data.jamfpro_smart_computer_group.by_id.name site_id = data.jamfpro_smart_computer_group.by_id.site_id criteria = data.jamfpro_smart_computer_group.by_id.criteria } by_name = { id = data.jamfpro_smart_computer_group.by_name.id name = data.jamfpro_smart_computer_group.by_name.name site_id = data.jamfpro_smart_computer_group.by_name.site_id criteria = data.jamfpro_smart_computer_group.by_name.criteria } } } ``` -------------------------------- ### Good Schema Description Example (Go) Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/consolidated-developer-guide.md Use clear, user-focused descriptions that explain implications and conditions for Terraform resource attributes. This approach aids users transitioning from the Jamf Pro GUI. ```go "enabled": { Type: schema.TypeBool, Required: true, Description: "Enable the policy. When set to true, the policy will be deployed to targeted devices based on triggers and scope.", }, ``` ```go "require_authentication": { Type: schema.TypeBool, Required: true, Description: "Require user authentication during enrollment on devices with macOS 10.10 or later. When enabled, users must provide username and password.", }, ``` ```go "default_prestage": { Type: schema.TypeBool, Required: true, Description: "Mark this as the default computer prestage enrollment configuration. If enabled, new devices will automatically be assigned to this PreStage enrollment.", }, ``` -------------------------------- ### Configure Self Service Settings Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/self_service_settings.md Use this resource to define how Self Service is installed and presented to users. Configure options like automatic installation, install location, login requirements, and authentication methods. ```terraform resource "jamfpro_self_service_settings" "example" { install_automatically = true install_location = "/Applications" user_login_level = "Anonymous" allow_remember_me = true use_fido2 = false auth_type = "Basic" notifications_enabled = true alert_user_approved_mdm = true default_landing_page = "HOME" default_home_category_id = -1 bookmarks_name = "Bookmarks" } ``` -------------------------------- ### Configure Global App Installer Settings Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/app_installer_global_settings.md Use this resource to set global preferences for app installer notifications, including messages, intervals, deadlines, and relaunch behavior. These settings affect all App Installers deployments unless specifically overridden. ```terraform resource "jamfpro_app_installer_global_settings" "jamfpro_app_installer_singleton" { notification_message = "A new version of this app is ready to install." notification_interval = 24 deadline_message = "Please install the update to continue using the app." deadline = 48 quit_delay = 5 complete_message = "Installation complete. You may now relaunch the app." relaunch = true suppress = false } ``` -------------------------------- ### QuickAdd Package Configuration Source: https://github.com/deploymenttheory/terraform-provider-jamfpro/blob/main/docs/resources/user_initiated_enrollment_settings.md Configure settings for creating and signing QuickAdd packages for user-initiated enrollment. ```APIDOC ## POST /api/v1/user-initiated-enrollment/computers/quickadd-package ### Description Configures the QuickAdd package for user-initiated enrollment. ### Method POST ### Endpoint /api/v1/user-initiated-enrollment/computers/quickadd-package ### Parameters #### Request Body - **filename** (String) - Required - Name of the certificate file in .p12 format. e.g 'my_test_certificate.p12'. - **identity_keystore** (String, Sensitive) - Required - Base64-encoded certificate in .p12 format. - **keystore_password** (String, Sensitive) - Required - Password for the certificate keystore - **sign_quickadd_package** (Boolean) - Required - Ensure that the QuickAdd package is signed and appears as verified to users when enrolling via user-initiated enrollment with a QuickAdd package. Maps to request field 'signQuickAdd' ### Request Example { "filename": "my_certificate.p12", "identity_keystore": "MIID...", "keystore_password": "password123", "sign_quickadd_package": true } ### Response #### Success Response (200) - **message** (String) - Confirmation message of the update. #### Response Example { "message": "QuickAdd package settings updated successfully." } ```