Update mutation for HttpIntegrations should not remove payloadAttributeMappings if arg is excluded
Summary
Modifying an alert integration via GraphQL API & the custom mappings argument is left off, the update operation removes the custom mapping. It should not remove custom mappings, instead leaving them unchanged. The custom mappings should only be wiped out if the argument is included & left blank.
EX) First create the integration
mutation createHttp($input: HttpIntegrationCreateInput!) {
httpIntegrationCreate(input: $input) {
integration {
active
apiUrl
url
token
name
id
}
errors
}
}
{
"input": {
"projectPath": "<PROJECT-PATH>",
"name": "Testing the custom mapping",
"active": true,
"payloadExample": "{\"alert\":{\"name\":\"Example\",\"desc\":\"An alert example\"},\"started_at\":\"2021-01-06T04:09:16Z\"}",
"payloadAttributeMappings": [
{ "fieldName": "TITLE", "path": ["alert", "name"], "type": "STRING", "label": "Alert title" },
{ "fieldName": "START_TIME", "path": ["started_at"], "type": "DATETIME" }
]
}
}
Then update, while excluding the custom-mapping related attributes:
mutation updateHttp($input: HttpIntegrationUpdateInput!) {
httpIntegrationUpdate(input: $input) {
integration {
active
apiUrl
url
token
name
id
}
errors
}
}
{
"input": {
"id": "gid://gitlab/AlertManagement::HttpIntegration/<INTEGRATION-ID>",
"name": "Testing the custom mapping",
"active": true
}
}
You'll see that payloadAttributeMappings
on the integration is wiped out to {}
.