{
    "name": "logfire",
    "displayName": "Logfire",
    "description": "A Pulumi package for creating and managing logfire cloud resources.",
    "keywords": [
        "logfire",
        "category/cloud"
    ],
    "homepage": "https://pydantic.dev/logfire",
    "license": "Apache-2.0",
    "attribution": "This Pulumi package is based on the [`logfire` Terraform Provider](https://github.com/pydantic/terraform-provider-logfire).",
    "repository": "https://github.com/pydantic/pulumi-logfire",
    "logoUrl": "https://avatars.githubusercontent.com/u/110818415?s=200\u0026v=4",
    "pluginDownloadURL": "github://api.github.com/pydantic/pulumi-logfire",
    "publisher": "Pydantic",
    "meta": {
        "moduleFormat": "(.*)(?:/[^/]*)"
    },
    "language": {
        "go": {
            "importBasePath": "github.com/pydantic/pulumi-logfire/sdk/go/logfire",
            "generateResourceContainerTypes": true,
            "generateExtraInputTypes": true,
            "respectSchemaVersion": true
        },
        "nodejs": {
            "packageName": "@pydantic/pulumi-logfire",
            "packageDescription": "A Pulumi package for creating and managing logfire cloud resources.",
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/pydantic/terraform-provider-logfire)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-logfire` repo](https://github.com/pydantic/pulumi-logfire/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-logfire` repo](https://github.com/pydantic/terraform-provider-logfire/issues).",
            "compatibility": "tfbridge20",
            "disableUnionOutputTypes": true,
            "respectSchemaVersion": true
        },
        "python": {
            "packageName": "pulumi_logfire",
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/pydantic/terraform-provider-logfire)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-logfire` repo](https://github.com/pydantic/pulumi-logfire/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-logfire` repo](https://github.com/pydantic/terraform-provider-logfire/issues).",
            "compatibility": "tfbridge20",
            "respectSchemaVersion": true,
            "pyproject": {
                "enabled": true
            }
        }
    },
    "config": {
        "variables": {
            "apiKey": {
                "type": "string",
                "description": "Bearer token. If omitted, the LOGFIRE_API_KEY environment variable is used.",
                "secret": true
            },
            "baseUrl": {
                "type": "string",
                "description": "Base URL for the Logfire API. If omitted, the provider uses LOGFIRE_BASE_URL or infers the SaaS endpoint from the\u003cspan pulumi-lang-nodejs=\" apiKey \" pulumi-lang-dotnet=\" ApiKey \" pulumi-lang-go=\" apiKey \" pulumi-lang-python=\" api_key \" pulumi-lang-yaml=\" apiKey \" pulumi-lang-java=\" apiKey \"\u003e api_key \u003c/span\u003eregion. Self-hosted customers should set this explicitly."
            }
        }
    },
    "types": {
        "logfire:index/ChannelConfig:ChannelConfig": {
            "properties": {
                "authKey": {
                    "type": "string",
                    "description": "Opsgenie API key.\n",
                    "secret": true
                },
                "format": {
                    "type": "string",
                    "description": "Webhook payload format.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Channel type (\u003cspan pulumi-lang-nodejs=\"`webhook`\" pulumi-lang-dotnet=\"`Webhook`\" pulumi-lang-go=\"`webhook`\" pulumi-lang-python=\"`webhook`\" pulumi-lang-yaml=\"`webhook`\" pulumi-lang-java=\"`webhook`\"\u003e`webhook`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`opsgenie`\" pulumi-lang-dotnet=\"`Opsgenie`\" pulumi-lang-go=\"`opsgenie`\" pulumi-lang-python=\"`opsgenie`\" pulumi-lang-yaml=\"`opsgenie`\" pulumi-lang-java=\"`opsgenie`\"\u003e`opsgenie`\u003c/span\u003e).\n"
                },
                "url": {
                    "type": "string",
                    "description": "Webhook URL endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        }
    },
    "provider": {
        "description": "The provider type for the logfire package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n",
        "properties": {
            "apiKey": {
                "type": "string",
                "description": "Bearer token. If omitted, the LOGFIRE_API_KEY environment variable is used.",
                "secret": true
            },
            "baseUrl": {
                "type": "string",
                "description": "Base URL for the Logfire API. If omitted, the provider uses LOGFIRE_BASE_URL or infers the SaaS endpoint from the\u003cspan pulumi-lang-nodejs=\" apiKey \" pulumi-lang-dotnet=\" ApiKey \" pulumi-lang-go=\" apiKey \" pulumi-lang-python=\" api_key \" pulumi-lang-yaml=\" apiKey \" pulumi-lang-java=\" apiKey \"\u003e api_key \u003c/span\u003eregion. Self-hosted customers should set this explicitly."
            }
        },
        "inputProperties": {
            "apiKey": {
                "type": "string",
                "description": "Bearer token. If omitted, the LOGFIRE_API_KEY environment variable is used.",
                "secret": true
            },
            "baseUrl": {
                "type": "string",
                "description": "Base URL for the Logfire API. If omitted, the provider uses LOGFIRE_BASE_URL or infers the SaaS endpoint from the\u003cspan pulumi-lang-nodejs=\" apiKey \" pulumi-lang-dotnet=\" ApiKey \" pulumi-lang-go=\" apiKey \" pulumi-lang-python=\" api_key \" pulumi-lang-yaml=\" apiKey \" pulumi-lang-java=\" apiKey \"\u003e api_key \u003c/span\u003eregion. Self-hosted customers should set this explicitly."
            }
        },
        "methods": {
            "terraformConfig": "pulumi:providers:logfire/terraformConfig"
        }
    },
    "resources": {
        "logfire:index/alert:Alert": {
            "description": "Manages a Logfire alert.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as logfire from \"@pydantic/pulumi-logfire\";\n\nconst exampleProject = new logfire.Project(\"exampleProject\", {});\nconst exampleChannel = new logfire.Channel(\"exampleChannel\", {config: [{\n    type: \"webhook\",\n    format: \"auto\",\n    url: \"https://example.com/logfire-webhook\",\n}]});\nconst exampleAlert = new logfire.Alert(\"exampleAlert\", {\n    projectId: exampleProject.id,\n    description: \"Alert on exception spans\",\n    query: `select\n  service_name,\n  trace_id,\n  otel_status_message as exception_message\nfrom records\nwhere level = 'error'\norder by start_timestamp desc\n`,\n    timeWindow: \"1h\",\n    frequency: \"15m\",\n    channelIds: [exampleChannel.id],\n    notifyWhen: \"has_matches\",\n    active: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_logfire as logfire\n\nexample_project = logfire.Project(\"exampleProject\")\nexample_channel = logfire.Channel(\"exampleChannel\", config=[{\n    \"type\": \"webhook\",\n    \"format\": \"auto\",\n    \"url\": \"https://example.com/logfire-webhook\",\n}])\nexample_alert = logfire.Alert(\"exampleAlert\",\n    project_id=example_project.id,\n    description=\"Alert on exception spans\",\n    query=\"\"\"select\n  service_name,\n  trace_id,\n  otel_status_message as exception_message\nfrom records\nwhere level = 'error'\norder by start_timestamp desc\n\"\"\",\n    time_window=\"1h\",\n    frequency=\"15m\",\n    channel_ids=[example_channel.id],\n    notify_when=\"has_matches\",\n    active=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Logfire = Pulumi.Logfire;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleProject = new Logfire.Project(\"exampleProject\");\n\n    var exampleChannel = new Logfire.Channel(\"exampleChannel\", new()\n    {\n        Config = new[]\n        {\n            \n            {\n                { \"type\", \"webhook\" },\n                { \"format\", \"auto\" },\n                { \"url\", \"https://example.com/logfire-webhook\" },\n            },\n        },\n    });\n\n    var exampleAlert = new Logfire.Alert(\"exampleAlert\", new()\n    {\n        ProjectId = exampleProject.Id,\n        Description = \"Alert on exception spans\",\n        Query = @\"select\n  service_name,\n  trace_id,\n  otel_status_message as exception_message\nfrom records\nwhere level = 'error'\norder by start_timestamp desc\n\",\n        TimeWindow = \"1h\",\n        Frequency = \"15m\",\n        ChannelIds = new[]\n        {\n            exampleChannel.Id,\n        },\n        NotifyWhen = \"has_matches\",\n        Active = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pydantic/pulumi-logfire/sdk/go/logfire\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleProject, err := logfire.NewProject(ctx, \"exampleProject\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleChannel, err := logfire.NewChannel(ctx, \"exampleChannel\", \u0026logfire.ChannelArgs{\n\t\t\tConfig: logfire.ChannelConfigArgs{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"type\":   \"webhook\",\n\t\t\t\t\t\"format\": \"auto\",\n\t\t\t\t\t\"url\":    \"https://example.com/logfire-webhook\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logfire.NewAlert(ctx, \"exampleAlert\", \u0026logfire.AlertArgs{\n\t\t\tProjectId:   exampleProject.ID(),\n\t\t\tDescription: pulumi.String(\"Alert on exception spans\"),\n\t\t\tQuery: pulumi.String(`select\n  service_name,\n  trace_id,\n  otel_status_message as exception_message\nfrom records\nwhere level = 'error'\norder by start_timestamp desc\n`),\n\t\t\tTimeWindow: pulumi.String(\"1h\"),\n\t\t\tFrequency:  pulumi.String(\"15m\"),\n\t\t\tChannelIds: pulumi.StringArray{\n\t\t\t\texampleChannel.ID(),\n\t\t\t},\n\t\t\tNotifyWhen: pulumi.String(\"has_matches\"),\n\t\t\tActive:     pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.logfire.Project;\nimport com.pulumi.logfire.Channel;\nimport com.pulumi.logfire.ChannelArgs;\nimport com.pulumi.logfire.Alert;\nimport com.pulumi.logfire.AlertArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleProject = new Project(\"exampleProject\");\n\n        var exampleChannel = new Channel(\"exampleChannel\", ChannelArgs.builder()\n            .config(ChannelConfigArgs.builder()\n                .type(\"webhook\")\n                .format(\"auto\")\n                .url(\"https://example.com/logfire-webhook\")\n                .build())\n            .build());\n\n        var exampleAlert = new Alert(\"exampleAlert\", AlertArgs.builder()\n            .projectId(exampleProject.id())\n            .description(\"Alert on exception spans\")\n            .query(\"\"\"\nselect\n  service_name,\n  trace_id,\n  otel_status_message as exception_message\nfrom records\nwhere level = 'error'\norder by start_timestamp desc\n            \"\"\")\n            .timeWindow(\"1h\")\n            .frequency(\"15m\")\n            .channelIds(exampleChannel.id())\n            .notifyWhen(\"has_matches\")\n            .active(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleProject:\n    type: logfire:Project\n  exampleChannel:\n    type: logfire:Channel\n    properties:\n      config:\n        - type: webhook\n          format: auto\n          url: https://example.com/logfire-webhook\n  exampleAlert:\n    type: logfire:Alert\n    properties:\n      projectId: ${exampleProject.id}\n      description: Alert on exception spans\n      query: |\n        select\n          service_name,\n          trace_id,\n          otel_status_message as exception_message\n        from records\n        where level = 'error'\n        order by start_timestamp desc\n      timeWindow: 1h\n      frequency: 15m\n      channelIds:\n        - ${exampleChannel.id}\n      notifyWhen: has_matches\n      active: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "active": {
                    "type": "boolean",
                    "description": "Whether the alert is active (defaults to true on creation).\n"
                },
                "channelIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set of channel IDs to notify.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Alert description.\n"
                },
                "frequency": {
                    "type": "string",
                    "description": "Evaluation frequency as Go duration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Alert name (unique per project).\n"
                },
                "notifyWhen": {
                    "type": "string",
                    "description": "Notification rule. Must match API enum.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID (UUID) used for alert API paths.\n"
                },
                "query": {
                    "type": "string",
                    "description": "SQL / query string used by the alert.\n"
                },
                "timeWindow": {
                    "type": "string",
                    "description": "Lookback window as Go duration.\n"
                },
                "watermark": {
                    "type": "string",
                    "description": "Provider-managed watermark (lateness tolerance) sent to the API.\n"
                }
            },
            "required": [
                "active",
                "channelIds",
                "frequency",
                "name",
                "notifyWhen",
                "projectId",
                "query",
                "timeWindow",
                "watermark"
            ],
            "inputProperties": {
                "active": {
                    "type": "boolean",
                    "description": "Whether the alert is active (defaults to true on creation).\n"
                },
                "channelIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set of channel IDs to notify.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Alert description.\n"
                },
                "frequency": {
                    "type": "string",
                    "description": "Evaluation frequency as Go duration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Alert name (unique per project).\n"
                },
                "notifyWhen": {
                    "type": "string",
                    "description": "Notification rule. Must match API enum.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID (UUID) used for alert API paths.\n"
                },
                "query": {
                    "type": "string",
                    "description": "SQL / query string used by the alert.\n"
                },
                "timeWindow": {
                    "type": "string",
                    "description": "Lookback window as Go duration.\n"
                }
            },
            "requiredInputs": [
                "channelIds",
                "frequency",
                "notifyWhen",
                "projectId",
                "query",
                "timeWindow"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Alert resources.\n",
                "properties": {
                    "active": {
                        "type": "boolean",
                        "description": "Whether the alert is active (defaults to true on creation).\n"
                    },
                    "channelIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Set of channel IDs to notify.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Alert description.\n"
                    },
                    "frequency": {
                        "type": "string",
                        "description": "Evaluation frequency as Go duration.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Alert name (unique per project).\n"
                    },
                    "notifyWhen": {
                        "type": "string",
                        "description": "Notification rule. Must match API enum.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "Project ID (UUID) used for alert API paths.\n"
                    },
                    "query": {
                        "type": "string",
                        "description": "SQL / query string used by the alert.\n"
                    },
                    "timeWindow": {
                        "type": "string",
                        "description": "Lookback window as Go duration.\n"
                    },
                    "watermark": {
                        "type": "string",
                        "description": "Provider-managed watermark (lateness tolerance) sent to the API.\n"
                    }
                },
                "type": "object"
            }
        },
        "logfire:index/channel:Channel": {
            "description": "Manages a Logfire alert channel.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as logfire from \"@pydantic/pulumi-logfire\";\n\nconst example = new logfire.Channel(\"example\", {\n    active: true,\n    config: {\n        format: \"auto\",\n        type: \"webhook\",\n        url: \"https://example.com/logfire-webhook\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_logfire as logfire\n\nexample = logfire.Channel(\"example\",\n    active=True,\n    config={\n        \"format\": \"auto\",\n        \"type\": \"webhook\",\n        \"url\": \"https://example.com/logfire-webhook\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Logfire = Pulumi.Logfire;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Logfire.Channel(\"example\", new()\n    {\n        Active = true,\n        Config = new Logfire.Inputs.ChannelConfigArgs\n        {\n            Format = \"auto\",\n            Type = \"webhook\",\n            Url = \"https://example.com/logfire-webhook\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pydantic/pulumi-logfire/sdk/go/logfire\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logfire.NewChannel(ctx, \"example\", \u0026logfire.ChannelArgs{\n\t\t\tActive: pulumi.Bool(true),\n\t\t\tConfig: \u0026logfire.ChannelConfigArgs{\n\t\t\t\tFormat: pulumi.String(\"auto\"),\n\t\t\t\tType:   pulumi.String(\"webhook\"),\n\t\t\t\tUrl:    pulumi.String(\"https://example.com/logfire-webhook\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.logfire.Channel;\nimport com.pulumi.logfire.ChannelArgs;\nimport com.pulumi.logfire.inputs.ChannelConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Channel(\"example\", ChannelArgs.builder()\n            .active(true)\n            .config(ChannelConfigArgs.builder()\n                .format(\"auto\")\n                .type(\"webhook\")\n                .url(\"https://example.com/logfire-webhook\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: logfire:Channel\n    properties:\n      active: true\n      config:\n        format: auto\n        type: webhook\n        url: https://example.com/logfire-webhook\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "active": {
                    "type": "boolean",
                    "description": "Whether the channel is active.\n"
                },
                "config": {
                    "$ref": "#/types/logfire:index/ChannelConfig:ChannelConfig",
                    "description": "Required channel configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Channel name.\n"
                }
            },
            "required": [
                "active",
                "name"
            ],
            "inputProperties": {
                "active": {
                    "type": "boolean",
                    "description": "Whether the channel is active.\n"
                },
                "config": {
                    "$ref": "#/types/logfire:index/ChannelConfig:ChannelConfig",
                    "description": "Required channel configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Channel name.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Channel resources.\n",
                "properties": {
                    "active": {
                        "type": "boolean",
                        "description": "Whether the channel is active.\n"
                    },
                    "config": {
                        "$ref": "#/types/logfire:index/ChannelConfig:ChannelConfig",
                        "description": "Required channel configuration.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Channel name.\n"
                    }
                },
                "type": "object"
            }
        },
        "logfire:index/dashboard:Dashboard": {
            "description": "Manages a Logfire dashboard.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as logfire from \"@pydantic/pulumi-logfire\";\n\nconst exampleProject = new logfire.Project(\"exampleProject\", {});\nconst exampleDashboard = new logfire.Dashboard(\"exampleDashboard\", {\n    projectId: exampleProject.id,\n    slug: \"example-dashboard\",\n    definition: fs.readFileSync(`${path.module}/dashboard.json`, \"utf8\"),\n});\n```\n```python\nimport pulumi\nimport pulumi_logfire as logfire\n\nexample_project = logfire.Project(\"exampleProject\")\nexample_dashboard = logfire.Dashboard(\"exampleDashboard\",\n    project_id=example_project.id,\n    slug=\"example-dashboard\",\n    definition=(lambda path: open(path).read())(f\"{path['module']}/dashboard.json\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Logfire = Pulumi.Logfire;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleProject = new Logfire.Project(\"exampleProject\");\n\n    var exampleDashboard = new Logfire.Dashboard(\"exampleDashboard\", new()\n    {\n        ProjectId = exampleProject.Id,\n        Slug = \"example-dashboard\",\n        Definition = File.ReadAllText($\"{path.Module}/dashboard.json\"),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pydantic/pulumi-logfire/sdk/go/logfire\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleProject, err := logfire.NewProject(ctx, \"exampleProject\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logfire.NewDashboard(ctx, \"exampleDashboard\", \u0026logfire.DashboardArgs{\n\t\t\tProjectId:  exampleProject.ID(),\n\t\t\tSlug:       pulumi.String(\"example-dashboard\"),\n\t\t\tDefinition: pulumi.String(readFileOrPanic(fmt.Sprintf(\"%v/dashboard.json\", path.Module))),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.logfire.Project;\nimport com.pulumi.logfire.Dashboard;\nimport com.pulumi.logfire.DashboardArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleProject = new Project(\"exampleProject\");\n\n        var exampleDashboard = new Dashboard(\"exampleDashboard\", DashboardArgs.builder()\n            .projectId(exampleProject.id())\n            .slug(\"example-dashboard\")\n            .definition(Files.readString(Paths.get(String.format(\"%s/dashboard.json\", path.module()))))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleProject:\n    type: logfire:Project\n  exampleDashboard:\n    type: logfire:Dashboard\n    properties:\n      projectId: ${exampleProject.id}\n      slug: example-dashboard\n      definition:\n        fn::readFile: ${path.module}/dashboard.json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "definition": {
                    "type": "string",
                    "description": "Dashboard definition JSON payload.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Dashboard display name.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project UUID used for API paths.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "Dashboard slug used in URLs.\n"
                }
            },
            "required": [
                "definition",
                "name",
                "projectId",
                "slug"
            ],
            "inputProperties": {
                "definition": {
                    "type": "string",
                    "description": "Dashboard definition JSON payload.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Dashboard display name.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project UUID used for API paths.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "Dashboard slug used in URLs.\n"
                }
            },
            "requiredInputs": [
                "definition",
                "projectId",
                "slug"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Dashboard resources.\n",
                "properties": {
                    "definition": {
                        "type": "string",
                        "description": "Dashboard definition JSON payload.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Dashboard display name.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "Project UUID used for API paths.\n"
                    },
                    "slug": {
                        "type": "string",
                        "description": "Dashboard slug used in URLs.\n"
                    }
                },
                "type": "object"
            }
        },
        "logfire:index/organization:Organization": {
            "description": "Manages a Logfire organization. This resource is only available for self-hosted deployments and requires an API key with a special organization scope.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as logfire from \"@pydantic/pulumi-logfire\";\n\nconst example = new logfire.Organization(\"example\", {\n    deletionProtection: false,\n    displayName: \"Terraform Example Org\",\n});\n```\n```python\nimport pulumi\nimport pulumi_logfire as logfire\n\nexample = logfire.Organization(\"example\",\n    deletion_protection=False,\n    display_name=\"Terraform Example Org\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Logfire = Pulumi.Logfire;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Logfire.Organization(\"example\", new()\n    {\n        DeletionProtection = false,\n        DisplayName = \"Terraform Example Org\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pydantic/pulumi-logfire/sdk/go/logfire\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logfire.NewOrganization(ctx, \"example\", \u0026logfire.OrganizationArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDisplayName:        pulumi.String(\"Terraform Example Org\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.logfire.Organization;\nimport com.pulumi.logfire.OrganizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Organization(\"example\", OrganizationArgs.builder()\n            .deletionProtection(false)\n            .displayName(\"Terraform Example Org\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: logfire:Organization\n    properties:\n      # This defaults to true. Set false to allow destroy.\n      deletionProtection: false\n      displayName: Terraform Example Org\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "aiEnabled": {
                    "type": "boolean",
                    "description": "Whether AI features are enabled.\n"
                },
                "avatar": {
                    "type": "string",
                    "description": "Avatar URL.\n"
                },
                "billingEmail": {
                    "type": "string",
                    "description": "Billing contact email.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the organization was created.\n"
                },
                "deletionProtection": {
                    "type": "boolean",
                    "description": "Prevents accidental destroy when true (defaults to true). Set to false and apply before deleting this resource.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Organization description.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "Display name shown in the UI.\n"
                },
                "gatewayEnabled": {
                    "type": "boolean",
                    "description": "Whether gateway features are enabled.\n"
                },
                "githubHandle": {
                    "type": "string",
                    "description": "Organization GitHub handle.\n"
                },
                "hasAdminPanel": {
                    "type": "boolean",
                    "description": "Whether the organization has access to the admin panel.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Organization location.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Organization name/slug.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the organization was last updated.\n"
                }
            },
            "required": [
                "aiEnabled",
                "avatar",
                "billingEmail",
                "createdAt",
                "deletionProtection",
                "description",
                "displayName",
                "gatewayEnabled",
                "githubHandle",
                "hasAdminPanel",
                "location",
                "name",
                "updatedAt"
            ],
            "inputProperties": {
                "avatar": {
                    "type": "string",
                    "description": "Avatar URL.\n"
                },
                "billingEmail": {
                    "type": "string",
                    "description": "Billing contact email.\n"
                },
                "deletionProtection": {
                    "type": "boolean",
                    "description": "Prevents accidental destroy when true (defaults to true). Set to false and apply before deleting this resource.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Organization description.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "Display name shown in the UI.\n"
                },
                "githubHandle": {
                    "type": "string",
                    "description": "Organization GitHub handle.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Organization location.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Organization name/slug.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Organization resources.\n",
                "properties": {
                    "aiEnabled": {
                        "type": "boolean",
                        "description": "Whether AI features are enabled.\n"
                    },
                    "avatar": {
                        "type": "string",
                        "description": "Avatar URL.\n"
                    },
                    "billingEmail": {
                        "type": "string",
                        "description": "Billing contact email.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Timestamp when the organization was created.\n"
                    },
                    "deletionProtection": {
                        "type": "boolean",
                        "description": "Prevents accidental destroy when true (defaults to true). Set to false and apply before deleting this resource.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Organization description.\n"
                    },
                    "displayName": {
                        "type": "string",
                        "description": "Display name shown in the UI.\n"
                    },
                    "gatewayEnabled": {
                        "type": "boolean",
                        "description": "Whether gateway features are enabled.\n"
                    },
                    "githubHandle": {
                        "type": "string",
                        "description": "Organization GitHub handle.\n"
                    },
                    "hasAdminPanel": {
                        "type": "boolean",
                        "description": "Whether the organization has access to the admin panel.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Organization location.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Organization name/slug.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Timestamp when the organization was last updated.\n"
                    }
                },
                "type": "object"
            }
        },
        "logfire:index/project:Project": {
            "description": "Manages a Logfire project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as logfire from \"@pydantic/pulumi-logfire\";\n\nconst example = new logfire.Project(\"example\", {description: \"Managed by Pulumi\"});\n```\n```python\nimport pulumi\nimport pulumi_logfire as logfire\n\nexample = logfire.Project(\"example\", description=\"Managed by Pulumi\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Logfire = Pulumi.Logfire;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Logfire.Project(\"example\", new()\n    {\n        Description = \"Managed by Pulumi\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pydantic/pulumi-logfire/sdk/go/logfire\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logfire.NewProject(ctx, \"example\", \u0026logfire.ProjectArgs{\n\t\t\tDescription: pulumi.String(\"Managed by Pulumi\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.logfire.Project;\nimport com.pulumi.logfire.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .description(\"Managed by Pulumi\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: logfire:Project\n    properties:\n      description: Managed by Pulumi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Project description.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Project name/slug. Must be unique within the organization.\n"
                },
                "organization": {
                    "type": "string",
                    "description": "Organization name. Computed from the API and cannot be set.\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Project visibility (\u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e).\n"
                }
            },
            "required": [
                "name",
                "organization",
                "visibility"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "Project description.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Project name/slug. Must be unique within the organization.\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Project visibility (\u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e).\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Project resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Project description.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Project name/slug. Must be unique within the organization.\n"
                    },
                    "organization": {
                        "type": "string",
                        "description": "Organization name. Computed from the API and cannot be set.\n"
                    },
                    "visibility": {
                        "type": "string",
                        "description": "Project visibility (\u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e).\n"
                    }
                },
                "type": "object"
            }
        },
        "logfire:index/readToken:ReadToken": {
            "description": "Manages a Logfire read token.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as logfire from \"@pydantic/pulumi-logfire\";\n\nconst exampleProject = new logfire.Project(\"exampleProject\", {});\nconst exampleReadToken = new logfire.ReadToken(\"exampleReadToken\", {\n    projectId: exampleProject.id,\n    expiresAt: \"2099-12-31T23:59:59Z\",\n});\n```\n```python\nimport pulumi\nimport pulumi_logfire as logfire\n\nexample_project = logfire.Project(\"exampleProject\")\nexample_read_token = logfire.ReadToken(\"exampleReadToken\",\n    project_id=example_project.id,\n    expires_at=\"2099-12-31T23:59:59Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Logfire = Pulumi.Logfire;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleProject = new Logfire.Project(\"exampleProject\");\n\n    var exampleReadToken = new Logfire.ReadToken(\"exampleReadToken\", new()\n    {\n        ProjectId = exampleProject.Id,\n        ExpiresAt = \"2099-12-31T23:59:59Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pydantic/pulumi-logfire/sdk/go/logfire\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleProject, err := logfire.NewProject(ctx, \"exampleProject\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logfire.NewReadToken(ctx, \"exampleReadToken\", \u0026logfire.ReadTokenArgs{\n\t\t\tProjectId: exampleProject.ID(),\n\t\t\tExpiresAt: pulumi.String(\"2099-12-31T23:59:59Z\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.logfire.Project;\nimport com.pulumi.logfire.ReadToken;\nimport com.pulumi.logfire.ReadTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleProject = new Project(\"exampleProject\");\n\n        var exampleReadToken = new ReadToken(\"exampleReadToken\", ReadTokenArgs.builder()\n            .projectId(exampleProject.id())\n            .expiresAt(\"2099-12-31T23:59:59Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleProject:\n    type: logfire:Project\n  exampleReadToken:\n    type: logfire:ReadToken\n    properties:\n      projectId: ${exampleProject.id}\n      expiresAt: 2099-12-31T23:59:59Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the token was created.\n"
                },
                "createdByName": {
                    "type": "string",
                    "description": "Display name of the user that created the token.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description is fixed to \"Created by Public API\" for provider-managed tokens.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "Optional RFC3339 expiration timestamp for the token (for example `2026-12-31T23:59:59Z`). If omitted, the token does not expire.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the project that owns the token.\n"
                },
                "projectName": {
                    "type": "string",
                    "description": "Name of the project that owns the token.\n"
                },
                "token": {
                    "type": "string",
                    "description": "The generated read token. Only returned on creation.\n",
                    "secret": true
                },
                "tokenPrefix": {
                    "type": "string",
                    "description": "Prefix of the generated read token.\n"
                }
            },
            "required": [
                "createdAt",
                "createdByName",
                "description",
                "projectId",
                "projectName",
                "token",
                "tokenPrefix"
            ],
            "inputProperties": {
                "expiresAt": {
                    "type": "string",
                    "description": "Optional RFC3339 expiration timestamp for the token (for example `2026-12-31T23:59:59Z`). If omitted, the token does not expire.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the project that owns the token.\n"
                }
            },
            "requiredInputs": [
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ReadToken resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "Timestamp when the token was created.\n"
                    },
                    "createdByName": {
                        "type": "string",
                        "description": "Display name of the user that created the token.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description is fixed to \"Created by Public API\" for provider-managed tokens.\n"
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "Optional RFC3339 expiration timestamp for the token (for example `2026-12-31T23:59:59Z`). If omitted, the token does not expire.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of the project that owns the token.\n"
                    },
                    "projectName": {
                        "type": "string",
                        "description": "Name of the project that owns the token.\n"
                    },
                    "token": {
                        "type": "string",
                        "description": "The generated read token. Only returned on creation.\n",
                        "secret": true
                    },
                    "tokenPrefix": {
                        "type": "string",
                        "description": "Prefix of the generated read token.\n"
                    }
                },
                "type": "object"
            }
        },
        "logfire:index/writeToken:WriteToken": {
            "description": "Manages a Logfire write token.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as logfire from \"@pydantic/pulumi-logfire\";\n\nconst exampleProject = new logfire.Project(\"exampleProject\", {});\nconst exampleWriteToken = new logfire.WriteToken(\"exampleWriteToken\", {\n    projectId: exampleProject.id,\n    expiresAt: \"2099-12-31T23:59:59Z\",\n});\n```\n```python\nimport pulumi\nimport pulumi_logfire as logfire\n\nexample_project = logfire.Project(\"exampleProject\")\nexample_write_token = logfire.WriteToken(\"exampleWriteToken\",\n    project_id=example_project.id,\n    expires_at=\"2099-12-31T23:59:59Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Logfire = Pulumi.Logfire;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleProject = new Logfire.Project(\"exampleProject\");\n\n    var exampleWriteToken = new Logfire.WriteToken(\"exampleWriteToken\", new()\n    {\n        ProjectId = exampleProject.Id,\n        ExpiresAt = \"2099-12-31T23:59:59Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pydantic/pulumi-logfire/sdk/go/logfire\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleProject, err := logfire.NewProject(ctx, \"exampleProject\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logfire.NewWriteToken(ctx, \"exampleWriteToken\", \u0026logfire.WriteTokenArgs{\n\t\t\tProjectId: exampleProject.ID(),\n\t\t\tExpiresAt: pulumi.String(\"2099-12-31T23:59:59Z\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.logfire.Project;\nimport com.pulumi.logfire.WriteToken;\nimport com.pulumi.logfire.WriteTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleProject = new Project(\"exampleProject\");\n\n        var exampleWriteToken = new WriteToken(\"exampleWriteToken\", WriteTokenArgs.builder()\n            .projectId(exampleProject.id())\n            .expiresAt(\"2099-12-31T23:59:59Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleProject:\n    type: logfire:Project\n  exampleWriteToken:\n    type: logfire:WriteToken\n    properties:\n      projectId: ${exampleProject.id}\n      expiresAt: 2099-12-31T23:59:59Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the token was created.\n"
                },
                "createdByName": {
                    "type": "string",
                    "description": "Display name of the user that created the token.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description is fixed to \"Created by Public API\" for provider-managed tokens.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "Optional RFC3339 expiration timestamp for the token (for example `2026-12-31T23:59:59Z`). If omitted, the token does not expire.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the project that owns the token.\n"
                },
                "projectName": {
                    "type": "string",
                    "description": "Name of the project that owns the token.\n"
                },
                "token": {
                    "type": "string",
                    "description": "The generated write token. Only returned on creation.\n",
                    "secret": true
                },
                "tokenPrefix": {
                    "type": "string",
                    "description": "Prefix of the generated write token.\n"
                }
            },
            "required": [
                "createdAt",
                "createdByName",
                "description",
                "projectId",
                "projectName",
                "token",
                "tokenPrefix"
            ],
            "inputProperties": {
                "expiresAt": {
                    "type": "string",
                    "description": "Optional RFC3339 expiration timestamp for the token (for example `2026-12-31T23:59:59Z`). If omitted, the token does not expire.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "UUID of the project that owns the token.\n"
                }
            },
            "requiredInputs": [
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering WriteToken resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "Timestamp when the token was created.\n"
                    },
                    "createdByName": {
                        "type": "string",
                        "description": "Display name of the user that created the token.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description is fixed to \"Created by Public API\" for provider-managed tokens.\n"
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "Optional RFC3339 expiration timestamp for the token (for example `2026-12-31T23:59:59Z`). If omitted, the token does not expire.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "UUID of the project that owns the token.\n"
                    },
                    "projectName": {
                        "type": "string",
                        "description": "Name of the project that owns the token.\n"
                    },
                    "token": {
                        "type": "string",
                        "description": "The generated write token. Only returned on creation.\n",
                        "secret": true
                    },
                    "tokenPrefix": {
                        "type": "string",
                        "description": "Prefix of the generated write token.\n"
                    }
                },
                "type": "object"
            }
        }
    },
    "functions": {
        "pulumi:providers:logfire/terraformConfig": {
            "description": "This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.",
            "inputs": {
                "properties": {
                    "__self__": {
                        "type": "ref",
                        "$ref": "#/provider"
                    }
                },
                "type": "pulumi:providers:logfire/terraformConfig",
                "required": [
                    "__self__"
                ]
            },
            "outputs": {
                "properties": {
                    "result": {
                        "additionalProperties": {
                            "$ref": "pulumi.json#/Any"
                        },
                        "type": "object"
                    }
                },
                "required": [
                    "result"
                ],
                "type": "object"
            }
        }
    }
}