diff --git a/README.md b/README.md index ad5edcb..b4ba9aa 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ from terraform. To enable debug: ## Release process -1. Update the [Changelog][./CHANGELOG.md] with an entry for the new release. +1. Update the [Changelog](./CHANGELOG.md) with an entry for the new release. 2. Create a release tag with `just tag-release X.Y.Z`. 3. Push the tag upstream. This will start the Release workflow which creates the release on GitHub and builds packages. diff --git a/docs/data-sources/configuration_profile_jira.md b/docs/data-sources/configuration_profile_jira.md index 8f87972..c3e9382 100644 --- a/docs/data-sources/configuration_profile_jira.md +++ b/docs/data-sources/configuration_profile_jira.md @@ -21,6 +21,7 @@ data "stacklet_configuration_profile_jira" "example" {} ### Read-Only +- `api_key` (String) The encrypted value for the API key. - `id` (String) The GraphQL Node ID of the configuration profile. - `profile` (String) The profile name. - `project` (Block List) Jira project configuration. (see [below for nested schema](#nestedblock--project)) diff --git a/docs/resources/configuration_profile_jira.md b/docs/resources/configuration_profile_jira.md new file mode 100644 index 0000000..01210cc --- /dev/null +++ b/docs/resources/configuration_profile_jira.md @@ -0,0 +1,82 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "stacklet_configuration_profile_jira Resource - terraform-provider-stacklet" +subcategory: "" +description: |- + Manage the Jira configuration profile. + The profile is global, adding multiple resources of this kind will cause them to override each other. +--- + +# stacklet_configuration_profile_jira (Resource) + +Manage the Jira configuration profile. + +The profile is global, adding multiple resources of this kind will cause them to override each other. + +## Example Usage + +```terraform +resource "stacklet_configuration_profile_jira" "jira" { + url = "https://example.com/jira" + user = "username" + + api_key_wo = "seKret" + api_key_wo_version = "1" + + project { + name = "PRJ1" + project = "123" + issue_type = "Issue" + closed_status = "Closed" + } + + project { + name = "PRJ2" + project = "456" + issue_type = "Task" + closed_status = "Done" + } +} +``` + + +## Schema + +### Required + +> **NOTE**: [Write-only arguments](https://developer.hashicorp.com/terraform/language/resources/ephemeral#write-only-arguments) are supported in Terraform 1.11 and later. + +- `api_key_wo` (String, Sensitive, [Write-only](https://developer.hashicorp.com/terraform/language/resources/ephemeral#write-only-arguments)) The input value for the API key. +- `api_key_wo_version` (String) The version for the API key. Must be changed to update api_key_wo. +- `user` (String) The Jira instance authentication username. + +### Optional + +- `project` (Block List) Jira project configuration. (see [below for nested schema](#nestedblock--project)) +- `url` (String) The Jira instance URL. + +### Read-Only + +- `api_key` (String) The encrypted value for the API key, returned by the API. +- `id` (String) The GraphQL Node ID of the configuration profile. +- `profile` (String) The profile name. + + +### Nested Schema for `project` + +Required: + +- `closed_status` (String) The state for closed tickets. +- `issue_type` (String) The type of issue to use for tickets. +- `name` (String) The name of the project. +- `project` (String) The ID of the project. + +## Import + +Import is supported using the following syntax: + +The [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import) can be used, for example: + +```shell +terraform import stacklet_configuration_profile_jira.example '' # the resource ID is ignored since it's global +``` diff --git a/examples/resources/stacklet_configuration_profile_jira/import.sh b/examples/resources/stacklet_configuration_profile_jira/import.sh new file mode 100644 index 0000000..f455c5a --- /dev/null +++ b/examples/resources/stacklet_configuration_profile_jira/import.sh @@ -0,0 +1 @@ +terraform import stacklet_configuration_profile_jira.example '' # the resource ID is ignored since it's global diff --git a/examples/resources/stacklet_configuration_profile_jira/resource.tf b/examples/resources/stacklet_configuration_profile_jira/resource.tf new file mode 100644 index 0000000..b86a53b --- /dev/null +++ b/examples/resources/stacklet_configuration_profile_jira/resource.tf @@ -0,0 +1,21 @@ +resource "stacklet_configuration_profile_jira" "jira" { + url = "https://example.com/jira" + user = "username" + + api_key_wo = "seKret" + api_key_wo_version = "1" + + project { + name = "PRJ1" + project = "123" + issue_type = "Issue" + closed_status = "Closed" + } + + project { + name = "PRJ2" + project = "456" + issue_type = "Task" + closed_status = "Done" + } +} diff --git a/internal/acceptance_tests/configuration_profile_jira_data_source_test.go b/internal/acceptance_tests/configuration_profile_jira_data_source_test.go new file mode 100644 index 0000000..c3c5af4 --- /dev/null +++ b/internal/acceptance_tests/configuration_profile_jira_data_source_test.go @@ -0,0 +1,47 @@ +// Copyright (c) 2025 - Stacklet, Inc. + +package acceptance_tests + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccConfigurationProfileJiraDataSource(t *testing.T) { + steps := []resource.TestStep{ + { + Config: ` + resource "stacklet_configuration_profile_jira" "test" { + url = "https://example.atlassian.net" + user = "test@example.com" + api_key_wo = "test-api-key" + api_key_wo_version = "1" + + project { + name = "Test Project" + project = "TEST" + issue_type = "Task" + closed_status = "Done" + } + } + + data "stacklet_configuration_profile_jira" "test" { + depends_on = [stacklet_configuration_profile_jira.test] + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrPair("stacklet_configuration_profile_jira.test", "id", "data.stacklet_configuration_profile_jira.test", "id"), + resource.TestCheckResourceAttrPair("stacklet_configuration_profile_jira.test", "profile", "data.stacklet_configuration_profile_jira.test", "profile"), + resource.TestCheckResourceAttr("data.stacklet_configuration_profile_jira.test", "url", "https://example.atlassian.net"), + resource.TestCheckResourceAttr("data.stacklet_configuration_profile_jira.test", "user", "test@example.com"), + resource.TestCheckResourceAttr("data.stacklet_configuration_profile_jira.test", "project.#", "1"), + resource.TestCheckResourceAttr("data.stacklet_configuration_profile_jira.test", "project.0.name", "Test Project"), + resource.TestCheckResourceAttr("data.stacklet_configuration_profile_jira.test", "project.0.project", "TEST"), + resource.TestCheckResourceAttr("data.stacklet_configuration_profile_jira.test", "project.0.issue_type", "Task"), + resource.TestCheckResourceAttr("data.stacklet_configuration_profile_jira.test", "project.0.closed_status", "Done"), + ), + }, + } + runRecordedAccTest(t, "TestAccConfigurationProfileJiraDataSource", steps) +} diff --git a/internal/acceptance_tests/configuration_profile_jira_resource_test.go b/internal/acceptance_tests/configuration_profile_jira_resource_test.go new file mode 100644 index 0000000..342a90a --- /dev/null +++ b/internal/acceptance_tests/configuration_profile_jira_resource_test.go @@ -0,0 +1,171 @@ +// Copyright (c) 2025 - Stacklet, Inc. + +package acceptance_tests + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccConfigurationProfileJiraResource(t *testing.T) { + steps := []resource.TestStep{ + // Create and Read testing + { + Config: ` + resource "stacklet_configuration_profile_jira" "test" { + url = "https://example.atlassian.net" + user = "test@example.com" + api_key_wo = "initial-api-key" + api_key_wo_version = "1" + + project { + name = "Test Project" + project = "TEST" + issue_type = "Task" + closed_status = "Done" + } + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("stacklet_configuration_profile_jira.test", "id"), + resource.TestCheckResourceAttrSet("stacklet_configuration_profile_jira.test", "profile"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "url", "https://example.atlassian.net"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "user", "test@example.com"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "api_key_wo_version", "1"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.#", "1"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.0.name", "Test Project"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.0.project", "TEST"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.0.issue_type", "Task"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.0.closed_status", "Done"), + ), + }, + // ImportState testing + { + ResourceName: "stacklet_configuration_profile_jira.test", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"api_key_wo", "api_key_wo_version"}, + }, + // Update and Read testing + { + Config: ` + resource "stacklet_configuration_profile_jira" "test" { + url = "https://updated.atlassian.net" + user = "updated@example.com" + api_key_wo = "updated-api-key" + api_key_wo_version = "1" + + project { + name = "Updated Project" + project = "UPD" + issue_type = "Bug" + closed_status = "Closed" + } + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "url", "https://updated.atlassian.net"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "user", "updated@example.com"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "api_key_wo_version", "1"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.#", "1"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.0.name", "Updated Project"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.0.project", "UPD"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.0.issue_type", "Bug"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "project.0.closed_status", "Closed"), + ), + }, + } + runRecordedAccTest(t, "TestAccConfigurationProfileJiraResource", steps) +} + +func TestAccConfigurationProfileJiraResource_APIKeyChange(t *testing.T) { + var returnedAPIKey string + + steps := []resource.TestStep{ + // Initial API key setup + { + Config: ` + resource "stacklet_configuration_profile_jira" "test" { + url = "https://example.atlassian.net" + user = "test@example.com" + api_key_wo = "initial-api-key" + api_key_wo_version = "1" + + project { + name = "Test Project" + project = "TEST" + issue_type = "Task" + closed_status = "Done" + } + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrSet("stacklet_configuration_profile_jira.test", "id"), + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "api_key_wo_version", "1"), + resource.TestCheckResourceAttrSet("stacklet_configuration_profile_jira.test", "api_key"), + resource.TestCheckResourceAttrWith("stacklet_configuration_profile_jira.test", "api_key", func(value string) error { + returnedAPIKey = value + return nil + }), + ), + }, + // Same version, API key should remain the same + { + Config: ` + resource "stacklet_configuration_profile_jira" "test" { + url = "https://example.atlassian.net" + user = "test@example.com" + api_key_wo = "changed-api-key-but-same-version" + api_key_wo_version = "1" + + project { + name = "Test Project" + project = "TEST" + issue_type = "Task" + closed_status = "Done" + } + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "api_key_wo_version", "1"), + resource.TestCheckResourceAttrWith("stacklet_configuration_profile_jira.test", "api_key", func(value string) error { + if value != returnedAPIKey { + return fmt.Errorf("api_key should not have changed, was %s, now: %s", returnedAPIKey, value) + } + returnedAPIKey = value + return nil + }), + ), + }, + // Version changed, API key should change + { + Config: ` + resource "stacklet_configuration_profile_jira" "test" { + url = "https://example.atlassian.net" + user = "test@example.com" + api_key_wo = "updated-api-key" + api_key_wo_version = "2" + + project { + name = "Test Project" + project = "TEST" + issue_type = "Task" + closed_status = "Done" + } + } + `, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("stacklet_configuration_profile_jira.test", "api_key_wo_version", "2"), + resource.TestCheckResourceAttrWith("stacklet_configuration_profile_jira.test", "api_key", func(value string) error { + if value == returnedAPIKey { + return fmt.Errorf("api_key should have changed") + } + return nil + }), + ), + }, + } + runRecordedAccTest(t, "TestAccConfigurationProfileJiraResource_APIKeyChange", steps) +} diff --git a/internal/acceptance_tests/recordings/TestAccConfigurationProfileAccountOwnersDataSource.json b/internal/acceptance_tests/recordings/TestAccConfigurationProfileAccountOwnersDataSource.json index 2844aca..9b3dfd9 100644 --- a/internal/acceptance_tests/recordings/TestAccConfigurationProfileAccountOwnersDataSource.json +++ b/internal/acceptance_tests/recordings/TestAccConfigurationProfileAccountOwnersDataSource.json @@ -1,8 +1,8 @@ { - "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[{\"account\":\"123456789012\",\"owners\":[\"owner1@example.com\",\"owner2@example.com\"]}],\"name\":\"account_owners\",\"orgDomain\":\"example.com\",\"orgDomainTag\":null,\"scope\":\"0\",\"tags\":[\"owner\",\"team\"]}}": [ + "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[{\"account\":\"123456789012\",\"owners\":[\"owner1@example.com\",\"owner2@example.com\"]}],\"name\":\"account_owners\",\"orgDomain\":\"example.com\",\"orgDomainTag\":null,\"scope\":\"0\",\"tags\":[\"owner\",\"team\"]}}": [ { "request": { - "query": "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "query": "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", "variables": { "input": { "default": [ @@ -71,10 +71,10 @@ } } ], - "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"account_owners\",\"scope\":\"0\"}": [ + "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"account_owners\",\"scope\":\"0\"}": [ { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" @@ -109,7 +109,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" @@ -144,7 +144,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" @@ -179,7 +179,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" diff --git a/internal/acceptance_tests/recordings/TestAccConfigurationProfileAccountOwnersResource.json b/internal/acceptance_tests/recordings/TestAccConfigurationProfileAccountOwnersResource.json index ab2ac99..3be4fcc 100644 --- a/internal/acceptance_tests/recordings/TestAccConfigurationProfileAccountOwnersResource.json +++ b/internal/acceptance_tests/recordings/TestAccConfigurationProfileAccountOwnersResource.json @@ -1,8 +1,8 @@ { - "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[],\"name\":\"account_owners\",\"orgDomain\":null,\"orgDomainTag\":null,\"scope\":\"0\",\"tags\":[]}}": [ + "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[],\"name\":\"account_owners\",\"orgDomain\":null,\"orgDomainTag\":null,\"scope\":\"0\",\"tags\":[]}}": [ { "request": { - "query": "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "query": "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", "variables": { "input": { "default": [], @@ -33,10 +33,10 @@ } } ], - "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[{\"account\":\"123456789012\",\"owners\":[\"owner1@example.com\",\"owner2@example.com\"]}],\"name\":\"account_owners\",\"orgDomain\":\"example.com\",\"orgDomainTag\":\"domain\",\"scope\":\"0\",\"tags\":[\"owner\",\"team\"]}}": [ + "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[{\"account\":\"123456789012\",\"owners\":[\"owner1@example.com\",\"owner2@example.com\"]}],\"name\":\"account_owners\",\"orgDomain\":\"example.com\",\"orgDomainTag\":\"domain\",\"scope\":\"0\",\"tags\":[\"owner\",\"team\"]}}": [ { "request": { - "query": "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "query": "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", "variables": { "input": { "default": [ @@ -89,10 +89,10 @@ } } ], - "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[{\"account\":\"123456789012\",\"owners\":[\"owner1@example.com\"]},{\"account\":\"210987654321\",\"owners\":[\"owner3@example.com\",\"owner4@example.com\"]}],\"name\":\"account_owners\",\"orgDomain\":\"updated.com\",\"orgDomainTag\":\"domain_tag\",\"scope\":\"0\",\"tags\":[\"updated_owner\",\"updated_team\",\"department\"]}}": [ + "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[{\"account\":\"123456789012\",\"owners\":[\"owner1@example.com\"]},{\"account\":\"210987654321\",\"owners\":[\"owner3@example.com\",\"owner4@example.com\"]}],\"name\":\"account_owners\",\"orgDomain\":\"updated.com\",\"orgDomainTag\":\"domain_tag\",\"scope\":\"0\",\"tags\":[\"updated_owner\",\"updated_team\",\"department\"]}}": [ { "request": { - "query": "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "query": "mutation ($input:AccountOwnersConfigurationInput!){addAccountOwnersProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", "variables": { "input": { "default": [ @@ -175,10 +175,10 @@ } } ], - "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"account_owners\",\"scope\":\"0\"}": [ + "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"account_owners\",\"scope\":\"0\"}": [ { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" @@ -202,7 +202,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" @@ -226,7 +226,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" @@ -261,7 +261,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" @@ -296,7 +296,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" @@ -331,7 +331,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "account_owners", "scope": "0" diff --git a/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraDataSource.json b/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraDataSource.json new file mode 100644 index 0000000..bd5fd0f --- /dev/null +++ b/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraDataSource.json @@ -0,0 +1,192 @@ +{ + "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"apiKey\":\"test-api-key\",\"name\":\"jira\",\"projects\":[{\"closedStatus\":\"Done\",\"issueType\":\"Task\",\"name\":\"Test Project\",\"project\":\"TEST\"}],\"scope\":\"0\",\"url\":\"https://example.atlassian.net\",\"user\":\"test@example.com\"}}": [ + { + "request": { + "query": "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "variables": { + "input": { + "apiKey": "test-api-key", + "name": "jira", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "scope": "0", + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + }, + "response": { + "data": { + "addJiraProfile": { + "configuration": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQEv5nNW6Mndv5RuF58WFk82AAAAajBoBgkqhkiG9w0BBwagWzBZAgEAMFQGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMKUryoyo1Rsi4hti2AgEQgCccx6F+czsnV8t2Y3tHSR9RhF0URatZLl43PNQN73fVUr6vRR5nPh0=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + } + } + ], + "mutation ($name:String!$scope:String!){removeProfile(scope: $scope, name: $name)}:{\"name\":\"jira\",\"scope\":\"0\"}": [ + { + "request": { + "query": "mutation ($name:String!$scope:String!){removeProfile(scope: $scope, name: $name)}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "removeProfile": "WyJjb25mIiwgIjAiLCAiamlyYSJd" + } + } + } + ], + "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"jira\",\"scope\":\"0\"}": [ + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQEv5nNW6Mndv5RuF58WFk82AAAAajBoBgkqhkiG9w0BBwagWzBZAgEAMFQGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMKUryoyo1Rsi4hti2AgEQgCccx6F+czsnV8t2Y3tHSR9RhF0URatZLl43PNQN73fVUr6vRR5nPh0=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQEv5nNW6Mndv5RuF58WFk82AAAAajBoBgkqhkiG9w0BBwagWzBZAgEAMFQGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMKUryoyo1Rsi4hti2AgEQgCccx6F+czsnV8t2Y3tHSR9RhF0URatZLl43PNQN73fVUr6vRR5nPh0=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQEv5nNW6Mndv5RuF58WFk82AAAAajBoBgkqhkiG9w0BBwagWzBZAgEAMFQGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMKUryoyo1Rsi4hti2AgEQgCccx6F+czsnV8t2Y3tHSR9RhF0URatZLl43PNQN73fVUr6vRR5nPh0=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQEv5nNW6Mndv5RuF58WFk82AAAAajBoBgkqhkiG9w0BBwagWzBZAgEAMFQGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMKUryoyo1Rsi4hti2AgEQgCccx6F+czsnV8t2Y3tHSR9RhF0URatZLl43PNQN73fVUr6vRR5nPh0=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraResource.json b/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraResource.json new file mode 100644 index 0000000..e895071 --- /dev/null +++ b/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraResource.json @@ -0,0 +1,240 @@ +{ + "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"apiKey\":\"_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF5oAmJkd2B6qZijP9hpSwpAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfmlWyOxxUm/tfrmQAgEQgCpoQ8odKmZ7DKKmqP3MQtdnapwKif3ZBIziKP+GRndc72rjw6jd7unuo3Y=\",\"name\":\"jira\",\"projects\":[{\"closedStatus\":\"Closed\",\"issueType\":\"Bug\",\"name\":\"Updated Project\",\"project\":\"UPD\"}],\"scope\":\"0\",\"url\":\"https://updated.atlassian.net\",\"user\":\"updated@example.com\"}}": [ + { + "request": { + "query": "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "variables": { + "input": { + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF5oAmJkd2B6qZijP9hpSwpAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfmlWyOxxUm/tfrmQAgEQgCpoQ8odKmZ7DKKmqP3MQtdnapwKif3ZBIziKP+GRndc72rjw6jd7unuo3Y=", + "name": "jira", + "projects": [ + { + "closedStatus": "Closed", + "issueType": "Bug", + "name": "Updated Project", + "project": "UPD" + } + ], + "scope": "0", + "url": "https://updated.atlassian.net", + "user": "updated@example.com" + } + } + }, + "response": { + "data": { + "addJiraProfile": { + "configuration": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF5oAmJkd2B6qZijP9hpSwpAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfmlWyOxxUm/tfrmQAgEQgCpoQ8odKmZ7DKKmqP3MQtdnapwKif3ZBIziKP+GRndc72rjw6jd7unuo3Y=", + "projects": [ + { + "closedStatus": "Closed", + "issueType": "Bug", + "name": "Updated Project", + "project": "UPD" + } + ], + "url": "https://updated.atlassian.net", + "user": "updated@example.com" + } + } + } + } + } + } + ], + "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"apiKey\":\"initial-api-key\",\"name\":\"jira\",\"projects\":[{\"closedStatus\":\"Done\",\"issueType\":\"Task\",\"name\":\"Test Project\",\"project\":\"TEST\"}],\"scope\":\"0\",\"url\":\"https://example.atlassian.net\",\"user\":\"test@example.com\"}}": [ + { + "request": { + "query": "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "variables": { + "input": { + "apiKey": "initial-api-key", + "name": "jira", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "scope": "0", + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + }, + "response": { + "data": { + "addJiraProfile": { + "configuration": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF5oAmJkd2B6qZijP9hpSwpAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfmlWyOxxUm/tfrmQAgEQgCpoQ8odKmZ7DKKmqP3MQtdnapwKif3ZBIziKP+GRndc72rjw6jd7unuo3Y=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + } + } + ], + "mutation ($name:String!$scope:String!){removeProfile(scope: $scope, name: $name)}:{\"name\":\"jira\",\"scope\":\"0\"}": [ + { + "request": { + "query": "mutation ($name:String!$scope:String!){removeProfile(scope: $scope, name: $name)}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "removeProfile": "WyJjb25mIiwgIjAiLCAiamlyYSJd" + } + } + } + ], + "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"jira\",\"scope\":\"0\"}": [ + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF5oAmJkd2B6qZijP9hpSwpAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfmlWyOxxUm/tfrmQAgEQgCpoQ8odKmZ7DKKmqP3MQtdnapwKif3ZBIziKP+GRndc72rjw6jd7unuo3Y=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF5oAmJkd2B6qZijP9hpSwpAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfmlWyOxxUm/tfrmQAgEQgCpoQ8odKmZ7DKKmqP3MQtdnapwKif3ZBIziKP+GRndc72rjw6jd7unuo3Y=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF5oAmJkd2B6qZijP9hpSwpAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfmlWyOxxUm/tfrmQAgEQgCpoQ8odKmZ7DKKmqP3MQtdnapwKif3ZBIziKP+GRndc72rjw6jd7unuo3Y=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF5oAmJkd2B6qZijP9hpSwpAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfmlWyOxxUm/tfrmQAgEQgCpoQ8odKmZ7DKKmqP3MQtdnapwKif3ZBIziKP+GRndc72rjw6jd7unuo3Y=", + "projects": [ + { + "closedStatus": "Closed", + "issueType": "Bug", + "name": "Updated Project", + "project": "UPD" + } + ], + "url": "https://updated.atlassian.net", + "user": "updated@example.com" + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraResource_APIKeyChange.json b/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraResource_APIKeyChange.json new file mode 100644 index 0000000..9d398fc --- /dev/null +++ b/internal/acceptance_tests/recordings/TestAccConfigurationProfileJiraResource_APIKeyChange.json @@ -0,0 +1,271 @@ +{ + "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"apiKey\":\"initial-api-key\",\"name\":\"jira\",\"projects\":[{\"closedStatus\":\"Done\",\"issueType\":\"Task\",\"name\":\"Test Project\",\"project\":\"TEST\"}],\"scope\":\"0\",\"url\":\"https://example.atlassian.net\",\"user\":\"test@example.com\"}}": [ + { + "request": { + "query": "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "variables": { + "input": { + "apiKey": "initial-api-key", + "name": "jira", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "scope": "0", + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + }, + "response": { + "data": { + "addJiraProfile": { + "configuration": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF+SIuNTQM2MNcfAG+3byJ3AAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMktN7F9rj+b9z6qwrAgEQgCoYmPh4AwgeHVXUS0hcXmLOEUeLv/57Y/WSCR3igCIjTmueF000wQ6Yh9w=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + } + } + ], + "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"apiKey\":\"updated-api-key\",\"name\":\"jira\",\"projects\":[{\"closedStatus\":\"Done\",\"issueType\":\"Task\",\"name\":\"Test Project\",\"project\":\"TEST\"}],\"scope\":\"0\",\"url\":\"https://example.atlassian.net\",\"user\":\"test@example.com\"}}": [ + { + "request": { + "query": "mutation ($input:JiraConfigurationInput!){addJiraProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "variables": { + "input": { + "apiKey": "updated-api-key", + "name": "jira", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "scope": "0", + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + }, + "response": { + "data": { + "addJiraProfile": { + "configuration": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQGHhHizisaVyjWG7kBvPbbiAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM1M6VXDDA5cpuifvXAgEQgCo2H+EcjoN5BMTxyXZWzifs35RHD3xSfGnvBPKBM1Z4zw66xyHnwuKhjRc=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + } + } + ], + "mutation ($name:String!$scope:String!){removeProfile(scope: $scope, name: $name)}:{\"name\":\"jira\",\"scope\":\"0\"}": [ + { + "request": { + "query": "mutation ($name:String!$scope:String!){removeProfile(scope: $scope, name: $name)}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "removeProfile": "WyJjb25mIiwgIjAiLCAiamlyYSJd" + } + } + } + ], + "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"jira\",\"scope\":\"0\"}": [ + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF+SIuNTQM2MNcfAG+3byJ3AAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMktN7F9rj+b9z6qwrAgEQgCoYmPh4AwgeHVXUS0hcXmLOEUeLv/57Y/WSCR3igCIjTmueF000wQ6Yh9w=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF+SIuNTQM2MNcfAG+3byJ3AAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMktN7F9rj+b9z6qwrAgEQgCoYmPh4AwgeHVXUS0hcXmLOEUeLv/57Y/WSCR3igCIjTmueF000wQ6Yh9w=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF+SIuNTQM2MNcfAG+3byJ3AAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMktN7F9rj+b9z6qwrAgEQgCoYmPh4AwgeHVXUS0hcXmLOEUeLv/57Y/WSCR3igCIjTmueF000wQ6Yh9w=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQF+SIuNTQM2MNcfAG+3byJ3AAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMktN7F9rj+b9z6qwrAgEQgCoYmPh4AwgeHVXUS0hcXmLOEUeLv/57Y/WSCR3igCIjTmueF000wQ6Yh9w=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + }, + { + "request": { + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "variables": { + "name": "jira", + "scope": "0" + } + }, + "response": { + "data": { + "profile": { + "id": "WyJjb25mIiwgIjAiLCAiamlyYSJd", + "profile": "jira", + "record": { + "__typename": "JiraConfiguration", + "apiKey": "_encrypted:AQICAHh4ux78bAs/X3yYBg/TwgPXGB46MhYMn/VlwsH+BGTJoQGHhHizisaVyjWG7kBvPbbiAAAAbTBrBgkqhkiG9w0BBwagXjBcAgEAMFcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM1M6VXDDA5cpuifvXAgEQgCo2H+EcjoN5BMTxyXZWzifs35RHD3xSfGnvBPKBM1Z4zw66xyHnwuKhjRc=", + "projects": [ + { + "closedStatus": "Done", + "issueType": "Task", + "name": "Test Project", + "project": "TEST" + } + ], + "url": "https://example.atlassian.net", + "user": "test@example.com" + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/internal/acceptance_tests/recordings/TestAccConfigurationProfileResourceOwnerDataSource.json b/internal/acceptance_tests/recordings/TestAccConfigurationProfileResourceOwnerDataSource.json index 5c0f160..9b1d6df 100644 --- a/internal/acceptance_tests/recordings/TestAccConfigurationProfileResourceOwnerDataSource.json +++ b/internal/acceptance_tests/recordings/TestAccConfigurationProfileResourceOwnerDataSource.json @@ -1,8 +1,8 @@ { - "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[\"owner1@example.com\",\"owner2@example.com\"],\"name\":\"resource_owner\",\"orgDomain\":\"example.com\",\"orgDomainTag\":null,\"scope\":\"0\",\"tags\":[\"owner\",\"team\"]}}": [ + "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[\"owner1@example.com\",\"owner2@example.com\"],\"name\":\"resource_owner\",\"orgDomain\":\"example.com\",\"orgDomainTag\":null,\"scope\":\"0\",\"tags\":[\"owner\",\"team\"]}}": [ { "request": { - "query": "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "query": "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", "variables": { "input": { "default": [ @@ -61,10 +61,10 @@ } } ], - "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"resource_owner\",\"scope\":\"0\"}": [ + "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"resource_owner\",\"scope\":\"0\"}": [ { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" @@ -94,7 +94,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" @@ -124,7 +124,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" @@ -154,7 +154,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" diff --git a/internal/acceptance_tests/recordings/TestAccConfigurationProfileResourceOwnerResource.json b/internal/acceptance_tests/recordings/TestAccConfigurationProfileResourceOwnerResource.json index 45d25d1..d443c90 100644 --- a/internal/acceptance_tests/recordings/TestAccConfigurationProfileResourceOwnerResource.json +++ b/internal/acceptance_tests/recordings/TestAccConfigurationProfileResourceOwnerResource.json @@ -1,8 +1,8 @@ { - "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[\"owner1@example.com\",\"owner2@example.com\"],\"name\":\"resource_owner\",\"orgDomain\":\"example.com\",\"orgDomainTag\":\"domain\",\"scope\":\"0\",\"tags\":[\"owner\",\"team\"]}}": [ + "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[\"owner1@example.com\",\"owner2@example.com\"],\"name\":\"resource_owner\",\"orgDomain\":\"example.com\",\"orgDomainTag\":\"domain\",\"scope\":\"0\",\"tags\":[\"owner\",\"team\"]}}": [ { "request": { - "query": "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "query": "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", "variables": { "input": { "default": [ @@ -45,10 +45,10 @@ } } ], - "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[\"owner3@example.com\",\"owner4@example.com\",\"owner5@example.com\"],\"name\":\"resource_owner\",\"orgDomain\":\"updated.com\",\"orgDomainTag\":\"domain_tag\",\"scope\":\"0\",\"tags\":[\"updated_owner\",\"updated_team\",\"department\"]}}": [ + "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[\"owner3@example.com\",\"owner4@example.com\",\"owner5@example.com\"],\"name\":\"resource_owner\",\"orgDomain\":\"updated.com\",\"orgDomainTag\":\"domain_tag\",\"scope\":\"0\",\"tags\":[\"updated_owner\",\"updated_team\",\"department\"]}}": [ { "request": { - "query": "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "query": "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", "variables": { "input": { "default": [ @@ -95,10 +95,10 @@ } } ], - "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[],\"name\":\"resource_owner\",\"orgDomain\":null,\"orgDomainTag\":null,\"scope\":\"0\",\"tags\":[]}}": [ + "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}:{\"input\":{\"default\":[],\"name\":\"resource_owner\",\"orgDomain\":null,\"orgDomainTag\":null,\"scope\":\"0\",\"tags\":[]}}": [ { "request": { - "query": "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", + "query": "mutation ($input:ResourceOwnerConfigurationInput!){addResourceOwnerProfile(input: $input){configuration{id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}}", "variables": { "input": { "default": [], @@ -145,10 +145,10 @@ } } ], - "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"resource_owner\",\"scope\":\"0\"}": [ + "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}:{\"name\":\"resource_owner\",\"scope\":\"0\"}": [ { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" @@ -172,7 +172,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" @@ -196,7 +196,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" @@ -226,7 +226,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" @@ -256,7 +256,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" @@ -286,7 +286,7 @@ }, { "request": { - "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", + "query": "query ($name:String!$scope:String!){profile(name: $name, scope: $scope){id,profile,record{__typename,... on EmailConfiguration{fromEmail,sesRegion,smtp{server,port,ssl,username}},... on ServiceNowConfiguration{endpoint,user,issueType,closedState},... on SlackConfiguration{userFields,webhooks{name,url}},... on SymphonyConfiguration{agentDomain,serviceAccount},... on TeamsConfiguration{webhooks{name,url}},... on JiraConfiguration{url,projects{closedStatus,issueType,name,project},user,apiKey},... on ResourceOwnerConfiguration{resourceOwnerDefault: default,orgDomain,orgDomainTag,tags},... on AccountOwnersConfiguration{accountOwnersDefault: default{account,owners},orgDomain,orgDomainTag,tags}}}}", "variables": { "name": "resource_owner", "scope": "0" diff --git a/internal/api/configuration_profile.go b/internal/api/configuration_profile.go index 50bbae5..2292f43 100644 --- a/internal/api/configuration_profile.go +++ b/internal/api/configuration_profile.go @@ -79,17 +79,29 @@ type TeamsWebhook struct { // JiraConfiguation is the configuration for Jira profiles. type JiraConfiguration struct { - URL *string `graphql:"url"` - Projects []JiraProject - User string + URL *string `graphql:"url" json:"url"` + Projects []JiraProject `json:"projects"` + User string `json:"user"` + APIKey string `json:"apiKey"` } // JiraPorject is the configuration for a Jira project. type JiraProject struct { - ClosedStatus string - IssueType string - Name string - Project string + ClosedStatus string `json:"closedStatus"` + IssueType string `json:"issueType"` + Name string `json:"name"` + Project string `json:"project"` +} + +type jiraConfigurationInput struct { + JiraConfiguration + + Name string `json:"name"` + Scope string `json:"scope"` +} + +func (i jiraConfigurationInput) GetGraphQLType() string { + return "JiraConfigurationInput" } // ResourceOwnerConfiguration is the configuation for resource owner. @@ -204,6 +216,32 @@ func (a configurationProfileAPI) ReadResourceOwner(ctx context.Context) (*Config return a.Read(ctx, ConfigurationProfileResourceOwner) } +// Upsert the Jira configuration profile. +func (a configurationProfileAPI) UpsertJira(ctx context.Context, input JiraConfiguration) (*ConfigurationProfile, error) { + var mutation struct { + Payload struct { + Configuration ConfigurationProfile + } `graphql:"addJiraProfile(input: $input)"` + } + variables := map[string]any{ + "input": jiraConfigurationInput{ + JiraConfiguration: input, + Name: string(ConfigurationProfileJira), + Scope: configurationScopeGlobal, + }, + } + + if err := a.c.Mutate(ctx, &mutation, variables); err != nil { + return nil, NewAPIError(err) + } + + if mutation.Payload.Configuration.ID == "" { + return nil, NotFound{"Configuration profile not found after upsert"} + } + + return &mutation.Payload.Configuration, nil +} + // Upsert the account owners configuration profile. func (a configurationProfileAPI) UpsertAccountOwners(ctx context.Context, input AccountOwnersConfiguration) (*ConfigurationProfile, error) { var mutation struct { @@ -269,6 +307,11 @@ func (a configurationProfileAPI) Delete(ctx context.Context, name ConfigurationP return nil } +// DeleteJira deletes the Jira configuration profile. +func (a configurationProfileAPI) DeleteJira(ctx context.Context) error { + return a.Delete(ctx, ConfigurationProfileJira) +} + // DeleteAccountOwners deletes the account owners configuration profile. func (a configurationProfileAPI) DeleteAccountOwners(ctx context.Context) error { return a.Delete(ctx, ConfigurationProfileAccountOwners) diff --git a/internal/datasources/configuration_profile_jira.go b/internal/datasources/configuration_profile_jira.go index 4233432..088d120 100644 --- a/internal/datasources/configuration_profile_jira.go +++ b/internal/datasources/configuration_profile_jira.go @@ -52,6 +52,10 @@ func (d *configurationProfileJiraDataSource) Schema(_ context.Context, _ datasou Description: "The Jira instance authentication username.", Computed: true, }, + "api_key": schema.StringAttribute{ + Description: "The encrypted value for the API key.", + Computed: true, + }, }, Blocks: map[string]schema.Block{ "project": schema.ListNestedBlock{ @@ -106,6 +110,7 @@ func (d *configurationProfileJiraDataSource) Read(ctx context.Context, req datas data.Profile = types.StringValue(config.Profile) data.URL = types.StringPointerValue(config.Record.JiraConfiguration.URL) data.User = types.StringValue(config.Record.JiraConfiguration.User) + data.APIKey = types.StringValue(config.Record.JiraConfiguration.APIKey) updater := modelupdate.NewConfigurationProfileUpdater(*config) projects, diags := updater.JiraProjects() diff --git a/internal/models/configuration_profile_jira.go b/internal/models/configuration_profile_jira.go index 1daaf2b..8b8df57 100644 --- a/internal/models/configuration_profile_jira.go +++ b/internal/models/configuration_profile_jira.go @@ -14,6 +14,7 @@ type ConfigurationProfileJiraDataSource struct { URL types.String `tfsdk:"url"` Projects types.List `tfsdk:"project"` User types.String `tfsdk:"user"` + APIKey types.String `tfsdk:"api_key"` } // JiraProject is the model for a Jira project. @@ -32,3 +33,11 @@ func (p JiraProject) AttributeTypes() map[string]attr.Type { "project": types.StringType, } } + +// ConfigurationProfileJiraResource is the model for Jira configuration profile resources. +type ConfigurationProfileJiraResource struct { + ConfigurationProfileJiraDataSource + + APIKeyWO types.String `tfsdk:"api_key_wo"` + APIKeyWOVersion types.String `tfsdk:"api_key_wo_version"` +} diff --git a/internal/models/configuration_profile_slack.go b/internal/models/configuration_profile_slack.go index 68aff30..d1cc32a 100644 --- a/internal/models/configuration_profile_slack.go +++ b/internal/models/configuration_profile_slack.go @@ -15,7 +15,7 @@ type ConfigurationProfileSlackDataSource struct { Webhooks types.List `tfsdk:"webhook"` } -// SlackWebhook is the model for a Microsoft Slack webhook. +// SlackWebhook is the model for a Slack webhook. type SlackWebhook struct { Name types.String `tfsdk:"name"` URL types.String `tfsdk:"url"` diff --git a/internal/resources/configuration_profile_jira.go b/internal/resources/configuration_profile_jira.go new file mode 100644 index 0000000..d4947e4 --- /dev/null +++ b/internal/resources/configuration_profile_jira.go @@ -0,0 +1,288 @@ +// Copyright (c) 2025 - Stacklet, Inc. + +package resources + +import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + + "github.com/stacklet/terraform-provider-stacklet/internal/api" + "github.com/stacklet/terraform-provider-stacklet/internal/errors" + "github.com/stacklet/terraform-provider-stacklet/internal/models" + "github.com/stacklet/terraform-provider-stacklet/internal/modelupdate" + "github.com/stacklet/terraform-provider-stacklet/internal/providerdata" +) + +var ( + _ resource.Resource = &configurationProfileJiraResource{} + _ resource.ResourceWithConfigure = &configurationProfileJiraResource{} + _ resource.ResourceWithImportState = &configurationProfileJiraResource{} +) + +func NewConfigurationProfileJiraResource() resource.Resource { + return &configurationProfileJiraResource{} +} + +type configurationProfileJiraResource struct { + api *api.API +} + +func (r *configurationProfileJiraResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_configuration_profile_jira" +} + +func (r *configurationProfileJiraResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Description: `Manage the Jira configuration profile. + +The profile is global, adding multiple resources of this kind will cause them to override each other. +`, + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Description: "The GraphQL Node ID of the configuration profile.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "profile": schema.StringAttribute{ + Description: "The profile name.", + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "url": schema.StringAttribute{ + Description: "The Jira instance URL.", + Optional: true, + }, + "user": schema.StringAttribute{ + Description: "The Jira instance authentication username.", + Required: true, + }, + "api_key": schema.StringAttribute{ + Description: "The encrypted value for the API key, returned by the API.", + Computed: true, + }, + "api_key_wo": schema.StringAttribute{ + Description: "The input value for the API key.", + Required: true, + Sensitive: true, + WriteOnly: true, + }, + "api_key_wo_version": schema.StringAttribute{ + Description: "The version for the API key. Must be changed to update api_key_wo.", + Required: true, + }, + }, + Blocks: map[string]schema.Block{ + "project": schema.ListNestedBlock{ + Description: "Jira project configuration.", + Validators: []validator.List{ + listvalidator.SizeAtLeast(1), + listvalidator.IsRequired(), + }, + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "closed_status": schema.StringAttribute{ + Description: "The state for closed tickets.", + Required: true, + }, + "issue_type": schema.StringAttribute{ + Description: "The type of issue to use for tickets.", + Required: true, + }, + "name": schema.StringAttribute{ + Description: "The name of the project.", + Required: true, + }, + "project": schema.StringAttribute{ + Description: "The ID of the project.", + Required: true, + }, + }, + }, + }, + }, + } +} + +func (r *configurationProfileJiraResource) Configure(_ context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + if pd, err := providerdata.GetResourceProviderData(req); err != nil { + errors.AddDiagError(&resp.Diagnostics, err) + } else if pd != nil { + r.api = pd.API + } +} + +func (r *configurationProfileJiraResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + var state models.ConfigurationProfileJiraResource + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + config, err := r.api.ConfigurationProfile.ReadJira(ctx) + if err != nil { + handleAPIError(ctx, &resp.State, &resp.Diagnostics, err) + return + } + + resp.Diagnostics.Append(r.updateJiraModel(&state, config)...) + if resp.Diagnostics.HasError() { + return + } + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *configurationProfileJiraResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var plan, config models.ConfigurationProfileJiraResource + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + resp.Diagnostics.Append(req.Config.Get(ctx, &config)...) + if resp.Diagnostics.HasError() { + return + } + + projects, diags := r.getProjects(ctx, plan) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + input := api.JiraConfiguration{ + URL: plan.URL.ValueStringPointer(), + Projects: projects, + User: plan.User.ValueString(), + APIKey: config.APIKeyWO.ValueString(), + } + jiraConfig, err := r.api.ConfigurationProfile.UpsertJira(ctx, input) + if err != nil { + errors.AddDiagError(&resp.Diagnostics, err) + return + } + + resp.Diagnostics.Append(r.updateJiraModel(&plan, jiraConfig)...) + resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) +} + +func (r *configurationProfileJiraResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var plan, state, config models.ConfigurationProfileJiraResource + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + resp.Diagnostics.Append(req.Config.Get(ctx, &config)...) + if resp.Diagnostics.HasError() { + return + } + + var apiKey string + if state.APIKeyWOVersion == plan.APIKeyWOVersion { + apiKey = state.APIKey.ValueString() // send back the previous encrypted value + } else { + apiKey = config.APIKeyWO.ValueString() // send the new value from the config + } + + projects, diags := r.getProjects(ctx, plan) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + input := api.JiraConfiguration{ + URL: plan.URL.ValueStringPointer(), + Projects: projects, + User: plan.User.ValueString(), + APIKey: apiKey, + } + profileConfig, err := r.api.ConfigurationProfile.UpsertJira(ctx, input) + if err != nil { + errors.AddDiagError(&resp.Diagnostics, err) + return + } + + resp.Diagnostics.Append(r.updateJiraModel(&plan, profileConfig)...) + resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) +} + +func (r *configurationProfileJiraResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + var state models.ConfigurationProfileJiraResource + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + if err := r.api.ConfigurationProfile.DeleteJira(ctx); err != nil { + errors.AddDiagError(&resp.Diagnostics, err) + return + } +} + +func (r *configurationProfileJiraResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("profile"), string(api.ConfigurationProfileJira))...) +} + +func (r configurationProfileJiraResource) updateJiraModel(m *models.ConfigurationProfileJiraResource, config *api.ConfigurationProfile) diag.Diagnostics { + var diags diag.Diagnostics + + jiraConfig := config.Record.JiraConfiguration + + m.ID = types.StringValue(config.ID) + m.Profile = types.StringValue(config.Profile) + m.URL = types.StringPointerValue(jiraConfig.URL) + m.User = types.StringValue(jiraConfig.User) + m.APIKey = types.StringValue(jiraConfig.APIKey) + + updater := modelupdate.NewConfigurationProfileUpdater(*config) + projects, diags := updater.JiraProjects() + if diags.HasError() { + return diags + } + m.Projects = projects + return diags +} + +func (r configurationProfileJiraResource) getProjects(ctx context.Context, m models.ConfigurationProfileJiraResource) ([]api.JiraProject, diag.Diagnostics) { + if m.Projects.IsNull() { + return nil, nil + } + + var diags diag.Diagnostics + + projects := []api.JiraProject{} + for i, elem := range m.Projects.Elements() { + block, ok := elem.(basetypes.ObjectValue) + if !ok { + diags.AddAttributeError( + path.Root(fmt.Sprintf("project.%d", i)), + "Invalid project configuration", + "Project configuration block is invalid.", + ) + return nil, diags + } + var p models.JiraProject + if diags := block.As(ctx, &p, basetypes.ObjectAsOptions{}); diags.HasError() { + return nil, diags + } + + projects = append( + projects, + api.JiraProject{ + ClosedStatus: p.ClosedStatus.ValueString(), + IssueType: p.IssueType.ValueString(), + Name: p.Name.ValueString(), + Project: p.Project.ValueString(), + }, + ) + } + return projects, diags +} diff --git a/internal/resources/resources.go b/internal/resources/resources.go index 90c76e5..16af6dd 100644 --- a/internal/resources/resources.go +++ b/internal/resources/resources.go @@ -15,6 +15,7 @@ var RESOURCES = []func() resource.Resource{ NewAccountResource, NewBindingResource, NewConfigurationProfileAccountOwnersResource, + NewConfigurationProfileJiraResource, NewConfigurationProfileResourceOwnerResource, NewNotificationTemplateResource, NewPolicyCollectionMappingResource,