feat: initial implementation with docs and system_config

This commit is contained in:
2026-06-01 11:19:02 -04:00
commit 1337034f07
39 changed files with 3451 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "immich_album Resource - terraform-provider-immich"
subcategory: ""
description: |-
Manages an Immich album.
---
# immich_album (Resource)
Manages an Immich album.
## Example Usage
```terraform
resource "immich_album" "example" {
name = "Vacation 2024"
description = "Photos from our summer vacation"
order = "desc"
users = [
{
user_id = "some-user-id"
role = "Editor"
}
]
}
```
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `name` (String) Display name of the album.
### Optional
- `album_thumbnail_asset_id` (String) ID of the asset used as the album's thumbnail.
- `asset_ids` (List of String) List of asset IDs to include in the album.
- `description` (String) Optional description of the album.
- `is_activity_enabled` (Boolean) Whether user activity (comments/likes) is enabled for this album.
- `order` (String) Sort order for assets in the album. Must be either `asc` or `desc`.
- `users` (Attributes List) List of users to share the album with. (see [below for nested schema](#nestedatt--users))
### Read-Only
- `id` (String) Unique identifier for the album.
<a id="nestedatt--users"></a>
### Nested Schema for `users`
Required:
- `role` (String) Role granted to the user. Must be either `Editor` or `Viewer`.
- `user_id` (String) Unique identifier of the user to share with.
+36
View File
@@ -0,0 +1,36 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "immich_api_key Resource - terraform-provider-immich"
subcategory: ""
description: |-
Manages an Immich personal API key. Note that the secret is only available upon creation.
---
# immich_api_key (Resource)
Manages an Immich personal API key. Note that the secret is only available upon creation.
## Example Usage
```terraform
resource "immich_api_key" "example" {
name = "Example API Key"
permissions = ["asset.read", "asset.upload"]
}
```
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `permissions` (List of String) List of permissions granted to this API key (e.g. `asset.read`, `asset.upload`).
### Optional
- `name` (String) Display name for the API key.
### Read-Only
- `id` (String) Unique identifier for the API key.
- `secret` (String, Sensitive) The generated API key secret. This value is only returned when the key is created.
+46
View File
@@ -0,0 +1,46 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "immich_shared_link Resource - terraform-provider-immich"
subcategory: ""
description: |-
Manages an Immich shared link for albums or individual assets.
---
# immich_shared_link (Resource)
Manages an Immich shared link for albums or individual assets.
## Example Usage
```terraform
resource "immich_shared_link" "example" {
type = "ALBUM"
album_id = "some-album-id"
description = "My shared album"
allow_download = true
}
```
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `type` (String) Type of the shared link. Must be either `ALBUM` or `INDIVIDUAL`.
### Optional
- `album_id` (String) ID of the album to share (required if type is `ALBUM`).
- `allow_download` (Boolean) Whether to allow users with the link to download assets.
- `allow_upload` (Boolean) Whether to allow users with the link to upload assets.
- `asset_ids` (List of String) List of asset IDs to share (required if type is `INDIVIDUAL`).
- `description` (String) Optional description for the shared link.
- `expires_at` (String) ISO 8601 formatted timestamp when the link expires.
- `password` (String, Sensitive) Optional password protection for the link.
- `show_metadata` (Boolean) Whether to show asset metadata to users with the link.
- `slug` (String) Custom URL slug for the shared link.
### Read-Only
- `id` (String) Unique identifier for the shared link.
- `key` (String) The encryption key for the shared link.
+96
View File
@@ -0,0 +1,96 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "immich_system_config Resource - terraform-provider-immich"
subcategory: ""
description: |-
Manages Immich system configuration. This is a singleton resource.
---
# immich_system_config (Resource)
Manages Immich system configuration. This is a singleton resource.
## Example Usage
```terraform
resource "immich_system_config" "example" {
password_login = {
enabled = true
}
oauth = {
enabled = true
issuer_url = "https://keycloak.example.com/realms/immich"
client_id = "immich-client"
client_secret = "your-client-secret"
scope = "openid profile email"
button_text = "Login with Keycloak"
auto_register = true
}
storage_template = {
template = "{{y}}/{{y}}-{{m}}-{{d}}/{{filename}}"
}
machine_learning = {
enabled = true
url = "http://immich-machine-learning:3003"
clip_model = "ViT-L-14__openai"
}
}
```
<!-- schema generated by tfplugindocs -->
## Schema
### Optional
- `machine_learning` (Attributes) (see [below for nested schema](#nestedatt--machine_learning))
- `oauth` (Attributes) (see [below for nested schema](#nestedatt--oauth))
- `password_login` (Attributes) (see [below for nested schema](#nestedatt--password_login))
- `storage_template` (Attributes) (see [below for nested schema](#nestedatt--storage_template))
<a id="nestedatt--machine_learning"></a>
### Nested Schema for `machine_learning`
Optional:
- `clip_model` (String) CLIP model to use.
- `enabled` (Boolean) Enable machine learning features.
- `facial_recognition_model` (String) Facial recognition model to use.
- `url` (String) URL of the machine learning server.
<a id="nestedatt--oauth"></a>
### Nested Schema for `oauth`
Optional:
- `auto_launch` (Boolean) Auto launch OAuth login.
- `auto_register` (Boolean) Auto register users via OAuth.
- `button_text` (String) OAuth button text.
- `client_id` (String) OAuth client ID.
- `client_secret` (String, Sensitive) OAuth client secret.
- `default_storage_quota` (Number) Default storage quota for new users in bytes.
- `enabled` (Boolean) Enable OAuth login.
- `issuer_url` (String) OAuth issuer URL.
- `mobile_override_url` (String) Mobile override URL.
- `mobile_redirect_uri` (String) Mobile redirect URI.
- `scope` (String) OAuth scope.
- `signing_algorithm` (String) Signing algorithm.
<a id="nestedatt--password_login"></a>
### Nested Schema for `password_login`
Optional:
- `enabled` (Boolean) Enable password login.
<a id="nestedatt--storage_template"></a>
### Nested Schema for `storage_template`
Optional:
- `template` (String) Storage template (e.g. `{{y}}/{{y}}-{{m}}-{{d}}/{{filename}}`).
+42
View File
@@ -0,0 +1,42 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "immich_user Resource - terraform-provider-immich"
subcategory: ""
description: |-
Manages an Immich user account.
---
# immich_user (Resource)
Manages an Immich user account.
## Example Usage
```terraform
resource "immich_user" "example" {
email = "user@example.com"
name = "Example User"
password = "securepassword123"
is_admin = false
}
```
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `email` (String) Email address of the user. This is used for login.
- `name` (String) Full name of the user.
- `password` (String, Sensitive) Initial password for the user. Only used during creation or when forced by `should_change_password`.
### Optional
- `is_admin` (Boolean) Whether the user has administrative privileges.
- `quota_size_in_bytes` (Number) Maximum storage quota for the user in bytes. Set to 0 or null for unlimited.
- `should_change_password` (Boolean) Force the user to change their password on next login.
- `storage_label` (String) Label used for the user's storage path.
### Read-Only
- `id` (String) Unique identifier for the user.