Problem
The OpsLevel GraphQL API exposes full campaign mutation support (campaignCreate, campaignUpdate, campaignDelete, campaignScheduleUpdate, campaignUnschedule, campaignEnd) plus checksCopyToCampaign for associating checks, but the Go SDK only has a ListCampaigns query. There are no client methods for creating, reading, updating, deleting, or scheduling campaigns — which blocks the Terraform provider from managing campaigns as code.
Proposed Solution
Add the following client methods and supporting types:
Client Methods
| Method |
GraphQL Operation |
Description |
GetCampaign(id) |
account.campaign(id:) |
Read a single campaign by ID |
CreateCampaign(input) |
campaignCreate |
Create a draft campaign |
UpdateCampaign(input) |
campaignUpdate |
Update campaign fields |
DeleteCampaign(id) |
campaignDelete |
Delete a campaign |
ScheduleCampaign(input) |
campaignScheduleUpdate |
Set start and target dates |
UnscheduleCampaign(id) |
campaignUnschedule |
Revert to draft |
EndCampaign(input) |
campaignEnd |
End campaign, optionally promote checks |
CopyChecksToCampaign(input) |
checksCopyToCampaign |
Copy rubric checks into a campaign |
ListCampaignChecks(id) |
account.campaign.checks |
List checks belonging to a campaign (paginated) |
Input Types
CampaignCreateInput, CampaignUpdateInput, CampaignScheduleUpdateInput, CampaignEndInput, CampaignUnscheduleInput
CampaignReminderInput, ChecksCopyToCampaignInput
Additional Types
CampaignCheckNode (id + name) for the ListCampaignChecks response
- Payload types for each mutation
All methods follow the existing SDK patterns (client.Mutate / client.Query + HandleErrors).
Context
This is needed to support opslevel_campaign as a Terraform resource (see OpsLevel/terraform-provider-opslevel for the companion PR).
Problem
The OpsLevel GraphQL API exposes full campaign mutation support (
campaignCreate,campaignUpdate,campaignDelete,campaignScheduleUpdate,campaignUnschedule,campaignEnd) pluschecksCopyToCampaignfor associating checks, but the Go SDK only has aListCampaignsquery. There are no client methods for creating, reading, updating, deleting, or scheduling campaigns — which blocks the Terraform provider from managing campaigns as code.Proposed Solution
Add the following client methods and supporting types:
Client Methods
GetCampaign(id)account.campaign(id:)CreateCampaign(input)campaignCreateUpdateCampaign(input)campaignUpdateDeleteCampaign(id)campaignDeleteScheduleCampaign(input)campaignScheduleUpdateUnscheduleCampaign(id)campaignUnscheduleEndCampaign(input)campaignEndCopyChecksToCampaign(input)checksCopyToCampaignListCampaignChecks(id)account.campaign.checksInput Types
CampaignCreateInput,CampaignUpdateInput,CampaignScheduleUpdateInput,CampaignEndInput,CampaignUnscheduleInputCampaignReminderInput,ChecksCopyToCampaignInputAdditional Types
CampaignCheckNode(id + name) for theListCampaignChecksresponseAll methods follow the existing SDK patterns (
client.Mutate/client.Query+HandleErrors).Context
This is needed to support
opslevel_campaignas a Terraform resource (see OpsLevel/terraform-provider-opslevel for the companion PR).