1. Packages
  2. Sentry
  3. API Docs
  4. SentryDashboard
Sentry v0.0.9 published on Friday, Nov 15, 2024 by Pulumiverse

sentry.SentryDashboard

Explore with Pulumi AI

sentry logo
Sentry v0.0.9 published on Friday, Nov 15, 2024 by Pulumiverse

    Sentry Dashboard resource.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as sentry from "@pulumiverse/sentry";
    
    const main = new sentry.SentryDashboard("main", {
        organization: mainSentryOrganization.id,
        title: "Test dashboard",
        widgets: [
            {
                title: "Number of Errors",
                displayType: "big_number",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: ["count()"],
                    aggregates: ["count()"],
                    conditions: "!event.type:transaction",
                    orderBy: "count()",
                }],
                layout: {
                    x: 0,
                    y: 0,
                    w: 1,
                    h: 1,
                    minH: 1,
                },
            },
            {
                title: "Number of Issues",
                displayType: "big_number",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: ["count_unique(issue)"],
                    aggregates: ["count_unique(issue)"],
                    conditions: "!event.type:transaction",
                    orderBy: "count_unique(issue)",
                }],
                layout: {
                    x: 1,
                    y: 0,
                    w: 1,
                    h: 1,
                    minH: 1,
                },
            },
            {
                title: "Events",
                displayType: "line",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    name: "Events",
                    fields: ["count()"],
                    aggregates: ["count()"],
                    conditions: "!event.type:transaction",
                    orderBy: "count()",
                }],
                layout: {
                    x: 2,
                    y: 0,
                    w: 4,
                    h: 2,
                    minH: 2,
                },
            },
            {
                title: "Affected Users",
                displayType: "line",
                interval: "5m",
                widgetType: "discover",
                queries: [
                    {
                        name: "Known Users",
                        fields: ["count_unique(user)"],
                        aggregates: ["count_unique(user)"],
                        conditions: "has:user.email !event.type:transaction",
                        orderBy: "count_unique(user)",
                    },
                    {
                        name: "Anonymous Users",
                        fields: ["count_unique(user)"],
                        aggregates: ["count_unique(user)"],
                        conditions: "!has:user.email !event.type:transaction",
                        orderBy: "count_unique(user)",
                    },
                ],
                layout: {
                    x: 1,
                    y: 2,
                    w: 1,
                    h: 2,
                    minH: 2,
                },
            },
            {
                title: "Handled vs. Unhandled",
                displayType: "line",
                interval: "5m",
                widgetType: "discover",
                queries: [
                    {
                        name: "Handled",
                        fields: ["count()"],
                        aggregates: ["count()"],
                        conditions: "error.handled:true",
                        orderBy: "count()",
                    },
                    {
                        name: "Unhandled",
                        fields: ["count()"],
                        aggregates: ["count()"],
                        conditions: "error.handled:false",
                        orderBy: "count()",
                    },
                ],
                layout: {
                    x: 0,
                    y: 2,
                    w: 1,
                    h: 2,
                    minH: 2,
                },
            },
            {
                title: "Errors by Country",
                displayType: "world_map",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: ["count()"],
                    aggregates: ["count()"],
                    conditions: "!event.type:transaction has:geo.country_code",
                    orderBy: "count()",
                }],
                layout: {
                    x: 4,
                    y: 6,
                    w: 2,
                    h: 4,
                    minH: 2,
                },
            },
            {
                title: "High Throughput Transactions",
                displayType: "table",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: [
                        "count()",
                        "transaction",
                    ],
                    aggregates: ["count()"],
                    columns: ["transaction"],
                    conditions: "!event.type:error",
                    orderBy: "-count()",
                }],
                layout: {
                    x: 0,
                    y: 6,
                    w: 2,
                    h: 4,
                    minH: 2,
                },
            },
            {
                title: "Errors by Browser",
                displayType: "table",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: [
                        "browser.name",
                        "count()",
                    ],
                    aggregates: ["count()"],
                    columns: ["browser.name"],
                    conditions: "!event.type:transaction has:browser.name",
                    orderBy: "-count()",
                }],
                layout: {
                    x: 5,
                    y: 2,
                    w: 1,
                    h: 4,
                    minH: 2,
                },
            },
            {
                title: "Overall User Misery",
                displayType: "big_number",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: ["user_misery(300)"],
                    aggregates: ["user_misery(300)"],
                }],
                layout: {
                    x: 0,
                    y: 1,
                    w: 1,
                    h: 1,
                    minH: 1,
                },
            },
            {
                title: "Overall Apdex",
                displayType: "big_number",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: ["apdex(300)"],
                    aggregates: ["apdex(300)"],
                }],
                layout: {
                    x: 1,
                    y: 1,
                    w: 1,
                    h: 1,
                    minH: 1,
                },
            },
            {
                title: "High Throughput Transactions",
                displayType: "top_n",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: [
                        "transaction",
                        "count()",
                    ],
                    aggregates: ["count()"],
                    columns: ["transaction"],
                    conditions: "!event.type:error",
                    orderBy: "-count()",
                }],
                layout: {
                    x: 0,
                    y: 4,
                    w: 2,
                    h: 2,
                    minH: 2,
                },
            },
            {
                title: "Issues Assigned to Me or My Teams",
                displayType: "table",
                interval: "5m",
                widgetType: "issue",
                queries: [{
                    fields: [
                        "assignee",
                        "issue",
                        "title",
                    ],
                    columns: [
                        "assignee",
                        "issue",
                        "title",
                    ],
                    conditions: "assigned_or_suggested:me is:unresolved",
                    orderBy: "priority",
                }],
                layout: {
                    x: 2,
                    y: 2,
                    w: 2,
                    h: 4,
                    minH: 2,
                },
            },
            {
                title: "Transactions Ordered by Misery",
                displayType: "table",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: [
                        "transaction",
                        "user_misery(300)",
                    ],
                    aggregates: ["user_misery(300)"],
                    columns: ["transaction"],
                    orderBy: "-user_misery(300)",
                }],
                layout: {
                    x: 2,
                    y: 6,
                    w: 2,
                    h: 4,
                    minH: 2,
                },
            },
            {
                title: "Errors by Browser Over Time",
                displayType: "top_n",
                interval: "5m",
                widgetType: "discover",
                queries: [{
                    fields: [
                        "browser.name",
                        "count()",
                    ],
                    aggregates: ["count()"],
                    columns: ["browser.name"],
                    conditions: "event.type:error has:browser.name",
                    orderBy: "-count()",
                }],
                layout: {
                    x: 4,
                    y: 2,
                    w: 1,
                    h: 4,
                    minH: 2,
                },
            },
        ],
    });
    
    import pulumi
    import pulumiverse_sentry as sentry
    
    main = sentry.SentryDashboard("main",
        organization=main_sentry_organization["id"],
        title="Test dashboard",
        widgets=[
            {
                "title": "Number of Errors",
                "display_type": "big_number",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": ["count()"],
                    "aggregates": ["count()"],
                    "conditions": "!event.type:transaction",
                    "order_by": "count()",
                }],
                "layout": {
                    "x": 0,
                    "y": 0,
                    "w": 1,
                    "h": 1,
                    "min_h": 1,
                },
            },
            {
                "title": "Number of Issues",
                "display_type": "big_number",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": ["count_unique(issue)"],
                    "aggregates": ["count_unique(issue)"],
                    "conditions": "!event.type:transaction",
                    "order_by": "count_unique(issue)",
                }],
                "layout": {
                    "x": 1,
                    "y": 0,
                    "w": 1,
                    "h": 1,
                    "min_h": 1,
                },
            },
            {
                "title": "Events",
                "display_type": "line",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "name": "Events",
                    "fields": ["count()"],
                    "aggregates": ["count()"],
                    "conditions": "!event.type:transaction",
                    "order_by": "count()",
                }],
                "layout": {
                    "x": 2,
                    "y": 0,
                    "w": 4,
                    "h": 2,
                    "min_h": 2,
                },
            },
            {
                "title": "Affected Users",
                "display_type": "line",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [
                    {
                        "name": "Known Users",
                        "fields": ["count_unique(user)"],
                        "aggregates": ["count_unique(user)"],
                        "conditions": "has:user.email !event.type:transaction",
                        "order_by": "count_unique(user)",
                    },
                    {
                        "name": "Anonymous Users",
                        "fields": ["count_unique(user)"],
                        "aggregates": ["count_unique(user)"],
                        "conditions": "!has:user.email !event.type:transaction",
                        "order_by": "count_unique(user)",
                    },
                ],
                "layout": {
                    "x": 1,
                    "y": 2,
                    "w": 1,
                    "h": 2,
                    "min_h": 2,
                },
            },
            {
                "title": "Handled vs. Unhandled",
                "display_type": "line",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [
                    {
                        "name": "Handled",
                        "fields": ["count()"],
                        "aggregates": ["count()"],
                        "conditions": "error.handled:true",
                        "order_by": "count()",
                    },
                    {
                        "name": "Unhandled",
                        "fields": ["count()"],
                        "aggregates": ["count()"],
                        "conditions": "error.handled:false",
                        "order_by": "count()",
                    },
                ],
                "layout": {
                    "x": 0,
                    "y": 2,
                    "w": 1,
                    "h": 2,
                    "min_h": 2,
                },
            },
            {
                "title": "Errors by Country",
                "display_type": "world_map",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": ["count()"],
                    "aggregates": ["count()"],
                    "conditions": "!event.type:transaction has:geo.country_code",
                    "order_by": "count()",
                }],
                "layout": {
                    "x": 4,
                    "y": 6,
                    "w": 2,
                    "h": 4,
                    "min_h": 2,
                },
            },
            {
                "title": "High Throughput Transactions",
                "display_type": "table",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": [
                        "count()",
                        "transaction",
                    ],
                    "aggregates": ["count()"],
                    "columns": ["transaction"],
                    "conditions": "!event.type:error",
                    "order_by": "-count()",
                }],
                "layout": {
                    "x": 0,
                    "y": 6,
                    "w": 2,
                    "h": 4,
                    "min_h": 2,
                },
            },
            {
                "title": "Errors by Browser",
                "display_type": "table",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": [
                        "browser.name",
                        "count()",
                    ],
                    "aggregates": ["count()"],
                    "columns": ["browser.name"],
                    "conditions": "!event.type:transaction has:browser.name",
                    "order_by": "-count()",
                }],
                "layout": {
                    "x": 5,
                    "y": 2,
                    "w": 1,
                    "h": 4,
                    "min_h": 2,
                },
            },
            {
                "title": "Overall User Misery",
                "display_type": "big_number",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": ["user_misery(300)"],
                    "aggregates": ["user_misery(300)"],
                }],
                "layout": {
                    "x": 0,
                    "y": 1,
                    "w": 1,
                    "h": 1,
                    "min_h": 1,
                },
            },
            {
                "title": "Overall Apdex",
                "display_type": "big_number",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": ["apdex(300)"],
                    "aggregates": ["apdex(300)"],
                }],
                "layout": {
                    "x": 1,
                    "y": 1,
                    "w": 1,
                    "h": 1,
                    "min_h": 1,
                },
            },
            {
                "title": "High Throughput Transactions",
                "display_type": "top_n",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": [
                        "transaction",
                        "count()",
                    ],
                    "aggregates": ["count()"],
                    "columns": ["transaction"],
                    "conditions": "!event.type:error",
                    "order_by": "-count()",
                }],
                "layout": {
                    "x": 0,
                    "y": 4,
                    "w": 2,
                    "h": 2,
                    "min_h": 2,
                },
            },
            {
                "title": "Issues Assigned to Me or My Teams",
                "display_type": "table",
                "interval": "5m",
                "widget_type": "issue",
                "queries": [{
                    "fields": [
                        "assignee",
                        "issue",
                        "title",
                    ],
                    "columns": [
                        "assignee",
                        "issue",
                        "title",
                    ],
                    "conditions": "assigned_or_suggested:me is:unresolved",
                    "order_by": "priority",
                }],
                "layout": {
                    "x": 2,
                    "y": 2,
                    "w": 2,
                    "h": 4,
                    "min_h": 2,
                },
            },
            {
                "title": "Transactions Ordered by Misery",
                "display_type": "table",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": [
                        "transaction",
                        "user_misery(300)",
                    ],
                    "aggregates": ["user_misery(300)"],
                    "columns": ["transaction"],
                    "order_by": "-user_misery(300)",
                }],
                "layout": {
                    "x": 2,
                    "y": 6,
                    "w": 2,
                    "h": 4,
                    "min_h": 2,
                },
            },
            {
                "title": "Errors by Browser Over Time",
                "display_type": "top_n",
                "interval": "5m",
                "widget_type": "discover",
                "queries": [{
                    "fields": [
                        "browser.name",
                        "count()",
                    ],
                    "aggregates": ["count()"],
                    "columns": ["browser.name"],
                    "conditions": "event.type:error has:browser.name",
                    "order_by": "-count()",
                }],
                "layout": {
                    "x": 4,
                    "y": 2,
                    "w": 1,
                    "h": 4,
                    "min_h": 2,
                },
            },
        ])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumiverse/pulumi-sentry/sdk/go/sentry"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := sentry.NewSentryDashboard(ctx, "main", &sentry.SentryDashboardArgs{
    			Organization: pulumi.Any(mainSentryOrganization.Id),
    			Title:        pulumi.String("Test dashboard"),
    			Widgets: sentry.SentryDashboardWidgetArray{
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Number of Errors"),
    					DisplayType: pulumi.String("big_number"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Conditions: pulumi.String("!event.type:transaction"),
    							OrderBy:    pulumi.String("count()"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(0),
    						Y:    pulumi.Int(0),
    						W:    pulumi.Int(1),
    						H:    pulumi.Int(1),
    						MinH: pulumi.Int(1),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Number of Issues"),
    					DisplayType: pulumi.String("big_number"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("count_unique(issue)"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count_unique(issue)"),
    							},
    							Conditions: pulumi.String("!event.type:transaction"),
    							OrderBy:    pulumi.String("count_unique(issue)"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(1),
    						Y:    pulumi.Int(0),
    						W:    pulumi.Int(1),
    						H:    pulumi.Int(1),
    						MinH: pulumi.Int(1),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Events"),
    					DisplayType: pulumi.String("line"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Name: pulumi.String("Events"),
    							Fields: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Conditions: pulumi.String("!event.type:transaction"),
    							OrderBy:    pulumi.String("count()"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(2),
    						Y:    pulumi.Int(0),
    						W:    pulumi.Int(4),
    						H:    pulumi.Int(2),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Affected Users"),
    					DisplayType: pulumi.String("line"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Name: pulumi.String("Known Users"),
    							Fields: pulumi.StringArray{
    								pulumi.String("count_unique(user)"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count_unique(user)"),
    							},
    							Conditions: pulumi.String("has:user.email !event.type:transaction"),
    							OrderBy:    pulumi.String("count_unique(user)"),
    						},
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Name: pulumi.String("Anonymous Users"),
    							Fields: pulumi.StringArray{
    								pulumi.String("count_unique(user)"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count_unique(user)"),
    							},
    							Conditions: pulumi.String("!has:user.email !event.type:transaction"),
    							OrderBy:    pulumi.String("count_unique(user)"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(1),
    						Y:    pulumi.Int(2),
    						W:    pulumi.Int(1),
    						H:    pulumi.Int(2),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Handled vs. Unhandled"),
    					DisplayType: pulumi.String("line"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Name: pulumi.String("Handled"),
    							Fields: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Conditions: pulumi.String("error.handled:true"),
    							OrderBy:    pulumi.String("count()"),
    						},
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Name: pulumi.String("Unhandled"),
    							Fields: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Conditions: pulumi.String("error.handled:false"),
    							OrderBy:    pulumi.String("count()"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(0),
    						Y:    pulumi.Int(2),
    						W:    pulumi.Int(1),
    						H:    pulumi.Int(2),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Errors by Country"),
    					DisplayType: pulumi.String("world_map"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Conditions: pulumi.String("!event.type:transaction has:geo.country_code"),
    							OrderBy:    pulumi.String("count()"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(4),
    						Y:    pulumi.Int(6),
    						W:    pulumi.Int(2),
    						H:    pulumi.Int(4),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("High Throughput Transactions"),
    					DisplayType: pulumi.String("table"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("count()"),
    								pulumi.String("transaction"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Columns: pulumi.StringArray{
    								pulumi.String("transaction"),
    							},
    							Conditions: pulumi.String("!event.type:error"),
    							OrderBy:    pulumi.String("-count()"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(0),
    						Y:    pulumi.Int(6),
    						W:    pulumi.Int(2),
    						H:    pulumi.Int(4),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Errors by Browser"),
    					DisplayType: pulumi.String("table"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("browser.name"),
    								pulumi.String("count()"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Columns: pulumi.StringArray{
    								pulumi.String("browser.name"),
    							},
    							Conditions: pulumi.String("!event.type:transaction has:browser.name"),
    							OrderBy:    pulumi.String("-count()"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(5),
    						Y:    pulumi.Int(2),
    						W:    pulumi.Int(1),
    						H:    pulumi.Int(4),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Overall User Misery"),
    					DisplayType: pulumi.String("big_number"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("user_misery(300)"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("user_misery(300)"),
    							},
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(0),
    						Y:    pulumi.Int(1),
    						W:    pulumi.Int(1),
    						H:    pulumi.Int(1),
    						MinH: pulumi.Int(1),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Overall Apdex"),
    					DisplayType: pulumi.String("big_number"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("apdex(300)"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("apdex(300)"),
    							},
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(1),
    						Y:    pulumi.Int(1),
    						W:    pulumi.Int(1),
    						H:    pulumi.Int(1),
    						MinH: pulumi.Int(1),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("High Throughput Transactions"),
    					DisplayType: pulumi.String("top_n"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("transaction"),
    								pulumi.String("count()"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Columns: pulumi.StringArray{
    								pulumi.String("transaction"),
    							},
    							Conditions: pulumi.String("!event.type:error"),
    							OrderBy:    pulumi.String("-count()"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(0),
    						Y:    pulumi.Int(4),
    						W:    pulumi.Int(2),
    						H:    pulumi.Int(2),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Issues Assigned to Me or My Teams"),
    					DisplayType: pulumi.String("table"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("issue"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("assignee"),
    								pulumi.String("issue"),
    								pulumi.String("title"),
    							},
    							Columns: pulumi.StringArray{
    								pulumi.String("assignee"),
    								pulumi.String("issue"),
    								pulumi.String("title"),
    							},
    							Conditions: pulumi.String("assigned_or_suggested:me is:unresolved"),
    							OrderBy:    pulumi.String("priority"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(2),
    						Y:    pulumi.Int(2),
    						W:    pulumi.Int(2),
    						H:    pulumi.Int(4),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Transactions Ordered by Misery"),
    					DisplayType: pulumi.String("table"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("transaction"),
    								pulumi.String("user_misery(300)"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("user_misery(300)"),
    							},
    							Columns: pulumi.StringArray{
    								pulumi.String("transaction"),
    							},
    							OrderBy: pulumi.String("-user_misery(300)"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(2),
    						Y:    pulumi.Int(6),
    						W:    pulumi.Int(2),
    						H:    pulumi.Int(4),
    						MinH: pulumi.Int(2),
    					},
    				},
    				&sentry.SentryDashboardWidgetArgs{
    					Title:       pulumi.String("Errors by Browser Over Time"),
    					DisplayType: pulumi.String("top_n"),
    					Interval:    pulumi.String("5m"),
    					WidgetType:  pulumi.String("discover"),
    					Queries: sentry.SentryDashboardWidgetQueryArray{
    						&sentry.SentryDashboardWidgetQueryArgs{
    							Fields: pulumi.StringArray{
    								pulumi.String("browser.name"),
    								pulumi.String("count()"),
    							},
    							Aggregates: pulumi.StringArray{
    								pulumi.String("count()"),
    							},
    							Columns: pulumi.StringArray{
    								pulumi.String("browser.name"),
    							},
    							Conditions: pulumi.String("event.type:error has:browser.name"),
    							OrderBy:    pulumi.String("-count()"),
    						},
    					},
    					Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    						X:    pulumi.Int(4),
    						Y:    pulumi.Int(2),
    						W:    pulumi.Int(1),
    						H:    pulumi.Int(4),
    						MinH: pulumi.Int(2),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Sentry = Pulumiverse.Sentry;
    
    return await Deployment.RunAsync(() => 
    {
        var main = new Sentry.SentryDashboard("main", new()
        {
            Organization = mainSentryOrganization.Id,
            Title = "Test dashboard",
            Widgets = new[]
            {
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Number of Errors",
                    DisplayType = "big_number",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "count()",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Conditions = "!event.type:transaction",
                            OrderBy = "count()",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 0,
                        Y = 0,
                        W = 1,
                        H = 1,
                        MinH = 1,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Number of Issues",
                    DisplayType = "big_number",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "count_unique(issue)",
                            },
                            Aggregates = new[]
                            {
                                "count_unique(issue)",
                            },
                            Conditions = "!event.type:transaction",
                            OrderBy = "count_unique(issue)",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 1,
                        Y = 0,
                        W = 1,
                        H = 1,
                        MinH = 1,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Events",
                    DisplayType = "line",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Name = "Events",
                            Fields = new[]
                            {
                                "count()",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Conditions = "!event.type:transaction",
                            OrderBy = "count()",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 2,
                        Y = 0,
                        W = 4,
                        H = 2,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Affected Users",
                    DisplayType = "line",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Name = "Known Users",
                            Fields = new[]
                            {
                                "count_unique(user)",
                            },
                            Aggregates = new[]
                            {
                                "count_unique(user)",
                            },
                            Conditions = "has:user.email !event.type:transaction",
                            OrderBy = "count_unique(user)",
                        },
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Name = "Anonymous Users",
                            Fields = new[]
                            {
                                "count_unique(user)",
                            },
                            Aggregates = new[]
                            {
                                "count_unique(user)",
                            },
                            Conditions = "!has:user.email !event.type:transaction",
                            OrderBy = "count_unique(user)",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 1,
                        Y = 2,
                        W = 1,
                        H = 2,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Handled vs. Unhandled",
                    DisplayType = "line",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Name = "Handled",
                            Fields = new[]
                            {
                                "count()",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Conditions = "error.handled:true",
                            OrderBy = "count()",
                        },
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Name = "Unhandled",
                            Fields = new[]
                            {
                                "count()",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Conditions = "error.handled:false",
                            OrderBy = "count()",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 0,
                        Y = 2,
                        W = 1,
                        H = 2,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Errors by Country",
                    DisplayType = "world_map",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "count()",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Conditions = "!event.type:transaction has:geo.country_code",
                            OrderBy = "count()",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 4,
                        Y = 6,
                        W = 2,
                        H = 4,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "High Throughput Transactions",
                    DisplayType = "table",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "count()",
                                "transaction",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Columns = new[]
                            {
                                "transaction",
                            },
                            Conditions = "!event.type:error",
                            OrderBy = "-count()",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 0,
                        Y = 6,
                        W = 2,
                        H = 4,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Errors by Browser",
                    DisplayType = "table",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "browser.name",
                                "count()",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Columns = new[]
                            {
                                "browser.name",
                            },
                            Conditions = "!event.type:transaction has:browser.name",
                            OrderBy = "-count()",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 5,
                        Y = 2,
                        W = 1,
                        H = 4,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Overall User Misery",
                    DisplayType = "big_number",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "user_misery(300)",
                            },
                            Aggregates = new[]
                            {
                                "user_misery(300)",
                            },
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 0,
                        Y = 1,
                        W = 1,
                        H = 1,
                        MinH = 1,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Overall Apdex",
                    DisplayType = "big_number",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "apdex(300)",
                            },
                            Aggregates = new[]
                            {
                                "apdex(300)",
                            },
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 1,
                        Y = 1,
                        W = 1,
                        H = 1,
                        MinH = 1,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "High Throughput Transactions",
                    DisplayType = "top_n",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "transaction",
                                "count()",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Columns = new[]
                            {
                                "transaction",
                            },
                            Conditions = "!event.type:error",
                            OrderBy = "-count()",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 0,
                        Y = 4,
                        W = 2,
                        H = 2,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Issues Assigned to Me or My Teams",
                    DisplayType = "table",
                    Interval = "5m",
                    WidgetType = "issue",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "assignee",
                                "issue",
                                "title",
                            },
                            Columns = new[]
                            {
                                "assignee",
                                "issue",
                                "title",
                            },
                            Conditions = "assigned_or_suggested:me is:unresolved",
                            OrderBy = "priority",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 2,
                        Y = 2,
                        W = 2,
                        H = 4,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Transactions Ordered by Misery",
                    DisplayType = "table",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "transaction",
                                "user_misery(300)",
                            },
                            Aggregates = new[]
                            {
                                "user_misery(300)",
                            },
                            Columns = new[]
                            {
                                "transaction",
                            },
                            OrderBy = "-user_misery(300)",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 2,
                        Y = 6,
                        W = 2,
                        H = 4,
                        MinH = 2,
                    },
                },
                new Sentry.Inputs.SentryDashboardWidgetArgs
                {
                    Title = "Errors by Browser Over Time",
                    DisplayType = "top_n",
                    Interval = "5m",
                    WidgetType = "discover",
                    Queries = new[]
                    {
                        new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                        {
                            Fields = new[]
                            {
                                "browser.name",
                                "count()",
                            },
                            Aggregates = new[]
                            {
                                "count()",
                            },
                            Columns = new[]
                            {
                                "browser.name",
                            },
                            Conditions = "event.type:error has:browser.name",
                            OrderBy = "-count()",
                        },
                    },
                    Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                    {
                        X = 4,
                        Y = 2,
                        W = 1,
                        H = 4,
                        MinH = 2,
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.sentry.SentryDashboard;
    import com.pulumi.sentry.SentryDashboardArgs;
    import com.pulumi.sentry.inputs.SentryDashboardWidgetArgs;
    import com.pulumi.sentry.inputs.SentryDashboardWidgetLayoutArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var main = new SentryDashboard("main", SentryDashboardArgs.builder()
                .organization(mainSentryOrganization.id())
                .title("Test dashboard")
                .widgets(            
                    SentryDashboardWidgetArgs.builder()
                        .title("Number of Errors")
                        .displayType("big_number")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields("count()")
                            .aggregates("count()")
                            .conditions("!event.type:transaction")
                            .orderBy("count()")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(0)
                            .y(0)
                            .w(1)
                            .h(1)
                            .minH(1)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Number of Issues")
                        .displayType("big_number")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields("count_unique(issue)")
                            .aggregates("count_unique(issue)")
                            .conditions("!event.type:transaction")
                            .orderBy("count_unique(issue)")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(1)
                            .y(0)
                            .w(1)
                            .h(1)
                            .minH(1)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Events")
                        .displayType("line")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .name("Events")
                            .fields("count()")
                            .aggregates("count()")
                            .conditions("!event.type:transaction")
                            .orderBy("count()")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(2)
                            .y(0)
                            .w(4)
                            .h(2)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Affected Users")
                        .displayType("line")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(                    
                            SentryDashboardWidgetQueryArgs.builder()
                                .name("Known Users")
                                .fields("count_unique(user)")
                                .aggregates("count_unique(user)")
                                .conditions("has:user.email !event.type:transaction")
                                .orderBy("count_unique(user)")
                                .build(),
                            SentryDashboardWidgetQueryArgs.builder()
                                .name("Anonymous Users")
                                .fields("count_unique(user)")
                                .aggregates("count_unique(user)")
                                .conditions("!has:user.email !event.type:transaction")
                                .orderBy("count_unique(user)")
                                .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(1)
                            .y(2)
                            .w(1)
                            .h(2)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Handled vs. Unhandled")
                        .displayType("line")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(                    
                            SentryDashboardWidgetQueryArgs.builder()
                                .name("Handled")
                                .fields("count()")
                                .aggregates("count()")
                                .conditions("error.handled:true")
                                .orderBy("count()")
                                .build(),
                            SentryDashboardWidgetQueryArgs.builder()
                                .name("Unhandled")
                                .fields("count()")
                                .aggregates("count()")
                                .conditions("error.handled:false")
                                .orderBy("count()")
                                .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(0)
                            .y(2)
                            .w(1)
                            .h(2)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Errors by Country")
                        .displayType("world_map")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields("count()")
                            .aggregates("count()")
                            .conditions("!event.type:transaction has:geo.country_code")
                            .orderBy("count()")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(4)
                            .y(6)
                            .w(2)
                            .h(4)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("High Throughput Transactions")
                        .displayType("table")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields(                        
                                "count()",
                                "transaction")
                            .aggregates("count()")
                            .columns("transaction")
                            .conditions("!event.type:error")
                            .orderBy("-count()")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(0)
                            .y(6)
                            .w(2)
                            .h(4)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Errors by Browser")
                        .displayType("table")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields(                        
                                "browser.name",
                                "count()")
                            .aggregates("count()")
                            .columns("browser.name")
                            .conditions("!event.type:transaction has:browser.name")
                            .orderBy("-count()")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(5)
                            .y(2)
                            .w(1)
                            .h(4)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Overall User Misery")
                        .displayType("big_number")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields("user_misery(300)")
                            .aggregates("user_misery(300)")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(0)
                            .y(1)
                            .w(1)
                            .h(1)
                            .minH(1)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Overall Apdex")
                        .displayType("big_number")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields("apdex(300)")
                            .aggregates("apdex(300)")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(1)
                            .y(1)
                            .w(1)
                            .h(1)
                            .minH(1)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("High Throughput Transactions")
                        .displayType("top_n")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields(                        
                                "transaction",
                                "count()")
                            .aggregates("count()")
                            .columns("transaction")
                            .conditions("!event.type:error")
                            .orderBy("-count()")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(0)
                            .y(4)
                            .w(2)
                            .h(2)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Issues Assigned to Me or My Teams")
                        .displayType("table")
                        .interval("5m")
                        .widgetType("issue")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields(                        
                                "assignee",
                                "issue",
                                "title")
                            .columns(                        
                                "assignee",
                                "issue",
                                "title")
                            .conditions("assigned_or_suggested:me is:unresolved")
                            .orderBy("priority")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(2)
                            .y(2)
                            .w(2)
                            .h(4)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Transactions Ordered by Misery")
                        .displayType("table")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields(                        
                                "transaction",
                                "user_misery(300)")
                            .aggregates("user_misery(300)")
                            .columns("transaction")
                            .orderBy("-user_misery(300)")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(2)
                            .y(6)
                            .w(2)
                            .h(4)
                            .minH(2)
                            .build())
                        .build(),
                    SentryDashboardWidgetArgs.builder()
                        .title("Errors by Browser Over Time")
                        .displayType("top_n")
                        .interval("5m")
                        .widgetType("discover")
                        .queries(SentryDashboardWidgetQueryArgs.builder()
                            .fields(                        
                                "browser.name",
                                "count()")
                            .aggregates("count()")
                            .columns("browser.name")
                            .conditions("event.type:error has:browser.name")
                            .orderBy("-count()")
                            .build())
                        .layout(SentryDashboardWidgetLayoutArgs.builder()
                            .x(4)
                            .y(2)
                            .w(1)
                            .h(4)
                            .minH(2)
                            .build())
                        .build())
                .build());
    
        }
    }
    
    resources:
      main:
        type: sentry:SentryDashboard
        properties:
          organization: ${mainSentryOrganization.id}
          title: Test dashboard
          widgets:
            - title: Number of Errors
              displayType: big_number
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - count()
                  aggregates:
                    - count()
                  conditions: '!event.type:transaction'
                  orderBy: count()
              layout:
                x: 0
                y: 0
                w: 1
                h: 1
                minH: 1
            - title: Number of Issues
              displayType: big_number
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - count_unique(issue)
                  aggregates:
                    - count_unique(issue)
                  conditions: '!event.type:transaction'
                  orderBy: count_unique(issue)
              layout:
                x: 1
                y: 0
                w: 1
                h: 1
                minH: 1
            - title: Events
              displayType: line
              interval: 5m
              widgetType: discover
              queries:
                - name: Events
                  fields:
                    - count()
                  aggregates:
                    - count()
                  conditions: '!event.type:transaction'
                  orderBy: count()
              layout:
                x: 2
                y: 0
                w: 4
                h: 2
                minH: 2
            - title: Affected Users
              displayType: line
              interval: 5m
              widgetType: discover
              queries:
                - name: Known Users
                  fields:
                    - count_unique(user)
                  aggregates:
                    - count_unique(user)
                  conditions: has:user.email !event.type:transaction
                  orderBy: count_unique(user)
                - name: Anonymous Users
                  fields:
                    - count_unique(user)
                  aggregates:
                    - count_unique(user)
                  conditions: '!has:user.email !event.type:transaction'
                  orderBy: count_unique(user)
              layout:
                x: 1
                y: 2
                w: 1
                h: 2
                minH: 2
            - title: Handled vs. Unhandled
              displayType: line
              interval: 5m
              widgetType: discover
              queries:
                - name: Handled
                  fields:
                    - count()
                  aggregates:
                    - count()
                  conditions: error.handled:true
                  orderBy: count()
                - name: Unhandled
                  fields:
                    - count()
                  aggregates:
                    - count()
                  conditions: error.handled:false
                  orderBy: count()
              layout:
                x: 0
                y: 2
                w: 1
                h: 2
                minH: 2
            - title: Errors by Country
              displayType: world_map
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - count()
                  aggregates:
                    - count()
                  conditions: '!event.type:transaction has:geo.country_code'
                  orderBy: count()
              layout:
                x: 4
                y: 6
                w: 2
                h: 4
                minH: 2
            - title: High Throughput Transactions
              displayType: table
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - count()
                    - transaction
                  aggregates:
                    - count()
                  columns:
                    - transaction
                  conditions: '!event.type:error'
                  orderBy: -count()
              layout:
                x: 0
                y: 6
                w: 2
                h: 4
                minH: 2
            - title: Errors by Browser
              displayType: table
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - browser.name
                    - count()
                  aggregates:
                    - count()
                  columns:
                    - browser.name
                  conditions: '!event.type:transaction has:browser.name'
                  orderBy: -count()
              layout:
                x: 5
                y: 2
                w: 1
                h: 4
                minH: 2
            - title: Overall User Misery
              displayType: big_number
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - user_misery(300)
                  aggregates:
                    - user_misery(300)
              layout:
                x: 0
                y: 1
                w: 1
                h: 1
                minH: 1
            - title: Overall Apdex
              displayType: big_number
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - apdex(300)
                  aggregates:
                    - apdex(300)
              layout:
                x: 1
                y: 1
                w: 1
                h: 1
                minH: 1
            - title: High Throughput Transactions
              displayType: top_n
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - transaction
                    - count()
                  aggregates:
                    - count()
                  columns:
                    - transaction
                  conditions: '!event.type:error'
                  orderBy: -count()
              layout:
                x: 0
                y: 4
                w: 2
                h: 2
                minH: 2
            - title: Issues Assigned to Me or My Teams
              displayType: table
              interval: 5m
              widgetType: issue
              queries:
                - fields:
                    - assignee
                    - issue
                    - title
                  columns:
                    - assignee
                    - issue
                    - title
                  conditions: assigned_or_suggested:me is:unresolved
                  orderBy: priority
              layout:
                x: 2
                y: 2
                w: 2
                h: 4
                minH: 2
            - title: Transactions Ordered by Misery
              displayType: table
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - transaction
                    - user_misery(300)
                  aggregates:
                    - user_misery(300)
                  columns:
                    - transaction
                  orderBy: -user_misery(300)
              layout:
                x: 2
                y: 6
                w: 2
                h: 4
                minH: 2
            - title: Errors by Browser Over Time
              displayType: top_n
              interval: 5m
              widgetType: discover
              queries:
                - fields:
                    - browser.name
                    - count()
                  aggregates:
                    - count()
                  columns:
                    - browser.name
                  conditions: event.type:error has:browser.name
                  orderBy: -count()
              layout:
                x: 4
                y: 2
                w: 1
                h: 4
                minH: 2
    

    Create SentryDashboard Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new SentryDashboard(name: string, args: SentryDashboardArgs, opts?: CustomResourceOptions);
    @overload
    def SentryDashboard(resource_name: str,
                        args: SentryDashboardArgs,
                        opts: Optional[ResourceOptions] = None)
    
    @overload
    def SentryDashboard(resource_name: str,
                        opts: Optional[ResourceOptions] = None,
                        organization: Optional[str] = None,
                        title: Optional[str] = None,
                        widgets: Optional[Sequence[SentryDashboardWidgetArgs]] = None)
    func NewSentryDashboard(ctx *Context, name string, args SentryDashboardArgs, opts ...ResourceOption) (*SentryDashboard, error)
    public SentryDashboard(string name, SentryDashboardArgs args, CustomResourceOptions? opts = null)
    public SentryDashboard(String name, SentryDashboardArgs args)
    public SentryDashboard(String name, SentryDashboardArgs args, CustomResourceOptions options)
    
    type: sentry:SentryDashboard
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args SentryDashboardArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args SentryDashboardArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args SentryDashboardArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args SentryDashboardArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args SentryDashboardArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var sentryDashboardResource = new Sentry.SentryDashboard("sentryDashboardResource", new()
    {
        Organization = "string",
        Title = "string",
        Widgets = new[]
        {
            new Sentry.Inputs.SentryDashboardWidgetArgs
            {
                DisplayType = "string",
                Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
                {
                    H = 0,
                    MinH = 0,
                    W = 0,
                    X = 0,
                    Y = 0,
                },
                Queries = new[]
                {
                    new Sentry.Inputs.SentryDashboardWidgetQueryArgs
                    {
                        Aggregates = new[]
                        {
                            "string",
                        },
                        Columns = new[]
                        {
                            "string",
                        },
                        Conditions = "string",
                        FieldAliases = new[]
                        {
                            "string",
                        },
                        Fields = new[]
                        {
                            "string",
                        },
                        Id = "string",
                        Name = "string",
                        OrderBy = "string",
                    },
                },
                Title = "string",
                Id = "string",
                Interval = "string",
                Limit = 0,
                WidgetType = "string",
            },
        },
    });
    
    example, err := sentry.NewSentryDashboard(ctx, "sentryDashboardResource", &sentry.SentryDashboardArgs{
    	Organization: pulumi.String("string"),
    	Title:        pulumi.String("string"),
    	Widgets: sentry.SentryDashboardWidgetArray{
    		&sentry.SentryDashboardWidgetArgs{
    			DisplayType: pulumi.String("string"),
    			Layout: &sentry.SentryDashboardWidgetLayoutArgs{
    				H:    pulumi.Int(0),
    				MinH: pulumi.Int(0),
    				W:    pulumi.Int(0),
    				X:    pulumi.Int(0),
    				Y:    pulumi.Int(0),
    			},
    			Queries: sentry.SentryDashboardWidgetQueryArray{
    				&sentry.SentryDashboardWidgetQueryArgs{
    					Aggregates: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    					Columns: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    					Conditions: pulumi.String("string"),
    					FieldAliases: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    					Fields: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    					Id:      pulumi.String("string"),
    					Name:    pulumi.String("string"),
    					OrderBy: pulumi.String("string"),
    				},
    			},
    			Title:      pulumi.String("string"),
    			Id:         pulumi.String("string"),
    			Interval:   pulumi.String("string"),
    			Limit:      pulumi.Int(0),
    			WidgetType: pulumi.String("string"),
    		},
    	},
    })
    
    var sentryDashboardResource = new SentryDashboard("sentryDashboardResource", SentryDashboardArgs.builder()
        .organization("string")
        .title("string")
        .widgets(SentryDashboardWidgetArgs.builder()
            .displayType("string")
            .layout(SentryDashboardWidgetLayoutArgs.builder()
                .h(0)
                .minH(0)
                .w(0)
                .x(0)
                .y(0)
                .build())
            .queries(SentryDashboardWidgetQueryArgs.builder()
                .aggregates("string")
                .columns("string")
                .conditions("string")
                .fieldAliases("string")
                .fields("string")
                .id("string")
                .name("string")
                .orderBy("string")
                .build())
            .title("string")
            .id("string")
            .interval("string")
            .limit(0)
            .widgetType("string")
            .build())
        .build());
    
    sentry_dashboard_resource = sentry.SentryDashboard("sentryDashboardResource",
        organization="string",
        title="string",
        widgets=[{
            "display_type": "string",
            "layout": {
                "h": 0,
                "min_h": 0,
                "w": 0,
                "x": 0,
                "y": 0,
            },
            "queries": [{
                "aggregates": ["string"],
                "columns": ["string"],
                "conditions": "string",
                "field_aliases": ["string"],
                "fields": ["string"],
                "id": "string",
                "name": "string",
                "order_by": "string",
            }],
            "title": "string",
            "id": "string",
            "interval": "string",
            "limit": 0,
            "widget_type": "string",
        }])
    
    const sentryDashboardResource = new sentry.SentryDashboard("sentryDashboardResource", {
        organization: "string",
        title: "string",
        widgets: [{
            displayType: "string",
            layout: {
                h: 0,
                minH: 0,
                w: 0,
                x: 0,
                y: 0,
            },
            queries: [{
                aggregates: ["string"],
                columns: ["string"],
                conditions: "string",
                fieldAliases: ["string"],
                fields: ["string"],
                id: "string",
                name: "string",
                orderBy: "string",
            }],
            title: "string",
            id: "string",
            interval: "string",
            limit: 0,
            widgetType: "string",
        }],
    });
    
    type: sentry:SentryDashboard
    properties:
        organization: string
        title: string
        widgets:
            - displayType: string
              id: string
              interval: string
              layout:
                h: 0
                minH: 0
                w: 0
                x: 0
                "y": 0
              limit: 0
              queries:
                - aggregates:
                    - string
                  columns:
                    - string
                  conditions: string
                  fieldAliases:
                    - string
                  fields:
                    - string
                  id: string
                  name: string
                  orderBy: string
              title: string
              widgetType: string
    

    SentryDashboard Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The SentryDashboard resource accepts the following input properties:

    Organization string
    The slug of the organization the dashboard belongs to.
    Title string
    Dashboard title.
    Widgets List<Pulumiverse.Sentry.Inputs.SentryDashboardWidget>
    Dashboard widgets.
    Organization string
    The slug of the organization the dashboard belongs to.
    Title string
    Dashboard title.
    Widgets []SentryDashboardWidgetArgs
    Dashboard widgets.
    organization String
    The slug of the organization the dashboard belongs to.
    title String
    Dashboard title.
    widgets List<SentryDashboardWidget>
    Dashboard widgets.
    organization string
    The slug of the organization the dashboard belongs to.
    title string
    Dashboard title.
    widgets SentryDashboardWidget[]
    Dashboard widgets.
    organization str
    The slug of the organization the dashboard belongs to.
    title str
    Dashboard title.
    widgets Sequence[SentryDashboardWidgetArgs]
    Dashboard widgets.
    organization String
    The slug of the organization the dashboard belongs to.
    title String
    Dashboard title.
    widgets List<Property Map>
    Dashboard widgets.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the SentryDashboard resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    InternalId string
    The internal ID for this dashboard.
    Id string
    The provider-assigned unique ID for this managed resource.
    InternalId string
    The internal ID for this dashboard.
    id String
    The provider-assigned unique ID for this managed resource.
    internalId String
    The internal ID for this dashboard.
    id string
    The provider-assigned unique ID for this managed resource.
    internalId string
    The internal ID for this dashboard.
    id str
    The provider-assigned unique ID for this managed resource.
    internal_id str
    The internal ID for this dashboard.
    id String
    The provider-assigned unique ID for this managed resource.
    internalId String
    The internal ID for this dashboard.

    Look up Existing SentryDashboard Resource

    Get an existing SentryDashboard resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: SentryDashboardState, opts?: CustomResourceOptions): SentryDashboard
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            internal_id: Optional[str] = None,
            organization: Optional[str] = None,
            title: Optional[str] = None,
            widgets: Optional[Sequence[SentryDashboardWidgetArgs]] = None) -> SentryDashboard
    func GetSentryDashboard(ctx *Context, name string, id IDInput, state *SentryDashboardState, opts ...ResourceOption) (*SentryDashboard, error)
    public static SentryDashboard Get(string name, Input<string> id, SentryDashboardState? state, CustomResourceOptions? opts = null)
    public static SentryDashboard get(String name, Output<String> id, SentryDashboardState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    InternalId string
    The internal ID for this dashboard.
    Organization string
    The slug of the organization the dashboard belongs to.
    Title string
    Dashboard title.
    Widgets List<Pulumiverse.Sentry.Inputs.SentryDashboardWidget>
    Dashboard widgets.
    InternalId string
    The internal ID for this dashboard.
    Organization string
    The slug of the organization the dashboard belongs to.
    Title string
    Dashboard title.
    Widgets []SentryDashboardWidgetArgs
    Dashboard widgets.
    internalId String
    The internal ID for this dashboard.
    organization String
    The slug of the organization the dashboard belongs to.
    title String
    Dashboard title.
    widgets List<SentryDashboardWidget>
    Dashboard widgets.
    internalId string
    The internal ID for this dashboard.
    organization string
    The slug of the organization the dashboard belongs to.
    title string
    Dashboard title.
    widgets SentryDashboardWidget[]
    Dashboard widgets.
    internal_id str
    The internal ID for this dashboard.
    organization str
    The slug of the organization the dashboard belongs to.
    title str
    Dashboard title.
    widgets Sequence[SentryDashboardWidgetArgs]
    Dashboard widgets.
    internalId String
    The internal ID for this dashboard.
    organization String
    The slug of the organization the dashboard belongs to.
    title String
    Dashboard title.
    widgets List<Property Map>
    Dashboard widgets.

    Supporting Types

    SentryDashboardWidget, SentryDashboardWidgetArgs

    displayType String
    layout Property Map
    queries List<Property Map>
    title String
    id String
    The ID of this resource.
    interval String
    limit Number
    widgetType String

    SentryDashboardWidgetLayout, SentryDashboardWidgetLayoutArgs

    H int
    MinH int
    W int
    X int
    Y int
    H int
    MinH int
    W int
    X int
    Y int
    h Integer
    minH Integer
    w Integer
    x Integer
    y Integer
    h number
    minH number
    w number
    x number
    y number
    h int
    min_h int
    w int
    x int
    y int
    h Number
    minH Number
    w Number
    x Number
    y Number

    SentryDashboardWidgetQuery, SentryDashboardWidgetQueryArgs

    Aggregates List<string>
    Columns List<string>
    Conditions string
    FieldAliases List<string>
    Fields List<string>
    Id string
    The ID of this resource.
    Name string
    OrderBy string
    Aggregates []string
    Columns []string
    Conditions string
    FieldAliases []string
    Fields []string
    Id string
    The ID of this resource.
    Name string
    OrderBy string
    aggregates List<String>
    columns List<String>
    conditions String
    fieldAliases List<String>
    fields List<String>
    id String
    The ID of this resource.
    name String
    orderBy String
    aggregates string[]
    columns string[]
    conditions string
    fieldAliases string[]
    fields string[]
    id string
    The ID of this resource.
    name string
    orderBy string
    aggregates Sequence[str]
    columns Sequence[str]
    conditions str
    field_aliases Sequence[str]
    fields Sequence[str]
    id str
    The ID of this resource.
    name str
    order_by str
    aggregates List<String>
    columns List<String>
    conditions String
    fieldAliases List<String>
    fields List<String>
    id String
    The ID of this resource.
    name String
    orderBy String

    Package Details

    Repository
    sentry pulumiverse/pulumi-sentry
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the sentry Terraform Provider.
    sentry logo
    Sentry v0.0.9 published on Friday, Nov 15, 2024 by Pulumiverse