Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up .NET
uses: actions/setup-dotnet@v3
Expand All @@ -39,7 +39,7 @@ jobs:
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up .NET
uses: actions/setup-dotnet@v3
Expand All @@ -55,7 +55,7 @@ jobs:
runs-on: ${{ github.repository == 'stainless-sdks/courier-csharp' && 'depot-windows-2022' || 'windows-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up .NET
uses: actions/setup-dotnet@v5
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "5.2.0"
".": "5.3.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 78
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier%2Fcourier-e3e54d99e2a73fd87519270f2685131050d342e86a4e96130247b854deae5c20.yml
openapi_spec_hash: 897a3fbee24f24d021d6af0df480220c
config_hash: 66a5c28bb74d78454456d9ce7d1c0a0c
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier%2Fcourier-9a543994a29d199daec5228c34a90caf017db9a1084289f58645c6849b606940.yml
openapi_spec_hash: f2f64858daadb0a1978b0e4a4d8ed149
config_hash: ba6cf7f4dbdf6b9d03c6962dd1770569
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## 5.3.0 (2026-01-17)

Full Changelog: [v5.2.0...v5.3.0](https://github.com/trycourier/courier-csharp/compare/v5.2.0...v5.3.0)

### Features

* **client:** add `ToString` to `ApiEnum` ([afae7cb](https://github.com/trycourier/courier-csharp/commit/afae7cbcdd55579b25181b4a18b219516df860ac))
* **client:** add Equals and ToString to params ([111ddf3](https://github.com/trycourier/courier-csharp/commit/111ddf3b539a5019db0ec88157585dd8fbdc4389))


### Bug Fixes

* **ci:** don't throw an error about missing lsof ([1677a29](https://github.com/trycourier/courier-csharp/commit/1677a29c8ca275b6a612623e9a709acbd28f29cb))


### Chores

* **internal:** simplify imports ([85e6232](https://github.com/trycourier/courier-csharp/commit/85e6232e04704906c159b7ef8f121d032a7ced57))
* **internal:** update `actions/checkout` version ([853c44c](https://github.com/trycourier/courier-csharp/commit/853c44cf00ccd9a0731569edd1386b6e7c6936ce))

## 5.2.0 (2026-01-14)

Full Changelog: [v5.1.0...v5.2.0](https://github.com/trycourier/courier-csharp/compare/v5.1.0...v5.2.0)
Expand Down
4 changes: 4 additions & 0 deletions scripts/test
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ function prism_is_running() {
}

kill_server_on_port() {
if [ ! "$(which lsof)" ]; then
echo "Warning: lsof not found. Prism will not be killed."
return 0
fi
pids=$(lsof -t -i tcp:"$1" || echo "")
if [ "$pids" != "" ]; then
kill "$pids"
Expand Down
10 changes: 10 additions & 0 deletions src/Courier.Tests/Models/Audiences/AudienceDeleteParamsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,14 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/audiences/audience_id"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new AudienceDeleteParams { AudienceID = "audience_id" };

AudienceDeleteParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,18 @@ public void Url_Works()
url
);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new AudienceListMembersParams
{
AudienceID = "audience_id",
Cursor = "cursor",
};

AudienceListMembersParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}
10 changes: 10 additions & 0 deletions src/Courier.Tests/Models/Audiences/AudienceListParamsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,14 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/audiences?cursor=cursor"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new AudienceListParams { Cursor = "cursor" };

AudienceListParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}
10 changes: 10 additions & 0 deletions src/Courier.Tests/Models/Audiences/AudienceRetrieveParamsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,14 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/audiences/audience_id"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new AudienceRetrieveParams { AudienceID = "audience_id" };

AudienceRetrieveParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}
27 changes: 27 additions & 0 deletions src/Courier.Tests/Models/Audiences/AudienceUpdateParamsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,33 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/audiences/audience_id"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new AudienceUpdateParams
{
AudienceID = "audience_id",
Description = "description",
Filter = new(
[
new()
{
Operator = "operator",
Filters = [],
Path = "path",
Value = "value",
},
]
),
Name = "name",
Operator = Operator.And,
};

AudienceUpdateParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}

public class OperatorTest : TestBase
Expand Down
10 changes: 10 additions & 0 deletions src/Courier.Tests/Models/AuditEvents/AuditEventListParamsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,14 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/audit-events?cursor=cursor"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new AuditEventListParams { Cursor = "cursor" };

AuditEventListParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,14 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/audit-events/audit-event-id"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new AuditEventRetrieveParams { AuditEventID = "audit-event-id" };

AuditEventRetrieveParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}
15 changes: 15 additions & 0 deletions src/Courier.Tests/Models/Auth/AuthIssueTokenParamsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,19 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/auth/issue-token"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new AuthIssueTokenParams
{
ExpiresIn = "$YOUR_NUMBER days",
Scope =
"user_id:$YOUR_USER_ID write:user-tokens inbox:read:messages inbox:write:events read:preferences write:preferences read:brands",
};

AuthIssueTokenParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}
14 changes: 14 additions & 0 deletions src/Courier.Tests/Models/Automations/AutomationListParamsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,20 @@ public void Url_Works()
url
);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new Automations::AutomationListParams
{
Cursor = "cursor",
Version = Automations::Version.Published,
};

Automations::AutomationListParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}

public class VersionTest : TestBase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,57 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/automations/invoke"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new Invoke::InvokeInvokeAdHocParams
{
Automation = new()
{
Steps =
[
new Invoke::AutomationDelayStep()
{
Action = Invoke::Action.Delay,
Duration = "duration",
Until = "20240408T080910.123",
},
new Invoke::AutomationSendStep()
{
Action = Invoke::AutomationSendStepAction.Send,
Brand = "brand",
Data = new Dictionary<string, JsonElement>()
{
{ "foo", JsonSerializer.SerializeToElement("bar") },
},
Profile = new Dictionary<string, JsonElement>()
{
{ "foo", JsonSerializer.SerializeToElement("bar") },
},
Recipient = "recipient",
Template = "64TP5HKPFTM8VTK1Y75SJDQX9JK0",
},
],
CancelationToken = "delay-send--user-yes--abc-123",
},
Brand = "brand",
Data = new Dictionary<string, JsonElement>()
{
{ "name", JsonSerializer.SerializeToElement("bar") },
},
Profile = new Dictionary<string, JsonElement>()
{
{ "tenant_id", JsonSerializer.SerializeToElement("bar") },
},
Recipient = "user-yes",
Template = "template",
};

Invoke::InvokeInvokeAdHocParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}

public class AutomationTest : TestBase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,28 @@ public void Url_Works()

Assert.Equal(new Uri("https://api.courier.com/automations/templateId/invoke"), url);
}

[Fact]
public void CopyConstructor_Works()
{
var parameters = new InvokeInvokeByTemplateParams
{
TemplateID = "templateId",
Recipient = "recipient",
Brand = "brand",
Data = new Dictionary<string, JsonElement>()
{
{ "foo", JsonSerializer.SerializeToElement("bar") },
},
Profile = new Dictionary<string, JsonElement>()
{
{ "foo", JsonSerializer.SerializeToElement("bar") },
},
Template = "template",
};

InvokeInvokeByTemplateParams copied = new(parameters);

Assert.Equal(parameters, copied);
}
}
Loading