Skip to content

Commit eb40436

Browse files
committed
Fix stale documentation now that 0.1.0 is published
- README/CONTRIBUTING: drop "not yet published"/"environment needs to be created" framing now that the package is live and the environment is already set up; document the publish job's permissions gotcha (job-level permissions replace, not merge with, workflow-level ones). - SECURITY.md: remove the "community-maintained, unofficial" framing - this is now Monnify's own repo and package. - CHANGELOG: move the accumulated Unreleased entries under a real [0.1.0] - 2026-06-29 release, merge a duplicated Fixed header, and open a fresh Unreleased section for future work. - IntegrationTests README: corrected how CI actually skips sandbox tests (no --filter flag - it relies on SkippableFact plus the runner never having sandbox credentials).
1 parent 0d3271f commit eb40436

5 files changed

Lines changed: 26 additions & 27 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,20 @@ own version is independent of Monnify's API versioning.
1111

1212
## [Unreleased]
1313

14+
## [0.1.0] - 2026-06-29
15+
1416
### Fixed
1517
- Error responses that don't match Monnify's standard envelope (a gateway-level rejection, an
1618
HTTP error page, or any 401/403 returned because a feature like Disbursements isn't activated
1719
for the merchant yet) now surface a clear fallback message instead of an empty
1820
`responseCode`/`responseMessage`. The envelope's string fields were defaulting to `""` rather
1921
than `null`, which silently defeated the fallback logic in both `MonnifyHttpClientBase` and
2022
`MonnifyTokenProvider`.
23+
- `SECURITY.md` still described the webhook signature scheme as plain
24+
`SHA-512(secretKey + rawBody)` from before that was corrected to
25+
`HMAC-SHA512` earlier in this project - updated to match what
26+
`MonnifyWebhookValidator` actually implements, plus a note that sandbox
27+
sends no signature header at all.
2128

2229
### Added
2330
- Initial repository scaffolding: solution layout, Central Package Management,
@@ -145,10 +152,3 @@ own version is independent of Monnify's API versioning.
145152
`config.yml` redirecting security reports to private vulnerability
146153
reporting) and `.github/PULL_REQUEST_TEMPLATE.md` matching the checklist
147154
already documented in `CONTRIBUTING.md`.
148-
149-
### Fixed
150-
- `SECURITY.md` still described the webhook signature scheme as plain
151-
`SHA-512(secretKey + rawBody)` from before that was corrected to
152-
`HMAC-SHA512` earlier in this project - updated to match what
153-
`MonnifyWebhookValidator` actually implements, plus a note that sandbox
154-
sends no signature header at all.

CONTRIBUTING.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,21 @@ bump.
4141

4242
Pushing a `vX.Y.Z` tag triggers [release.yml](.github/workflows/release.yml),
4343
which builds, tests, and packs, then **requires manual approval** before
44-
publishing: the publish job runs under a `nuget-release` GitHub Environment.
45-
Before the first release, that environment needs to be created (Settings →
46-
Environments) with required reviewers.
44+
publishing: the publish job runs under a `nuget-release` GitHub Environment
45+
(already configured with required reviewers).
4746

4847
Publishing itself uses [NuGet Trusted Publishing](https://learn.microsoft.com/en-us/nuget/nuget-org/trusted-publishing)
4948
(OIDC) rather than a stored API key — the workflow exchanges a short-lived
5049
GitHub token for a temporary (~1hr) NuGet API key at publish time, so there's
51-
no long-lived secret to leak or rotate. This requires a matching policy on
52-
nuget.org (your account → Trusted Publishing) with Repository Owner=`Monnify`,
50+
no long-lived secret to leak or rotate. The matching policy on nuget.org
51+
(account → Trusted Publishing) has Repository Owner=`Monnify`,
5352
Repository=`monnify-dotnet-lib`, Workflow File=`release.yml`,
5453
Environment=`nuget-release` — the environment restriction means a token is
5554
only trusted if it came from a run that passed through that approval gate.
56-
The only secret still needed is `NUGET_USER` (the nuget.org profile username,
57-
not the account email), scoped to the `nuget-release` environment. Until the
58-
environment and the nuget.org policy both exist, the publish job has no
59-
reviewers and nothing will publish, which is the intended state until this is
60-
deliberately set up.
55+
The only secret involved is `NUGET_USER` (the nuget.org profile username,
56+
not the account email), scoped to the `nuget-release` environment.
57+
58+
Both the `id-token: write` (OIDC) and `contents: write` (creating the GitHub
59+
Release) permissions need to be listed explicitly on the `publish` job —
60+
job-level `permissions:` replaces the workflow-level block entirely for that
61+
job rather than adding to it, so listing only one silently drops the other.

README.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
An idiomatic .NET SDK for the [Monnify](https://developers.monnify.com)
77
payment gateway API, targeting `netstandard2.0` and `net8.0`.
88

9-
> **Status: pre-release.** Not yet published to NuGet.org. See
9+
> **Status: early release (pre-1.0).** Published on NuGet.org starting with
10+
> `0.1.0` — the public API may still change before a stable `1.0`. See
1011
> [docs/COMPATIBILITY.md](docs/COMPATIBILITY.md) for every endpoint this SDK
1112
> calls and how it was verified.
1213
@@ -27,11 +28,8 @@ payment gateway API, targeting `netstandard2.0` and `net8.0`.
2728

2829
## Install
2930

30-
Not yet published to NuGet.org (see Status above). Until then, reference the
31-
project directly or build the `.nupkg` locally:
32-
3331
```bash
34-
dotnet pack src/Monnify/Monnify.csproj -c Release
32+
dotnet add package Monnify
3533
```
3634

3735
## Configure

SECURITY.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
## Reporting a Vulnerability
44

5-
This is a community-maintained, unofficial SDK for the Monnify payment gateway
6-
API. If you discover a security vulnerability in this SDK (not in Monnify's
7-
own platform), please report it privately via GitHub's
5+
If you discover a security vulnerability in this SDK (not in Monnify's own
6+
platform), please report it privately via GitHub's
87
[private vulnerability reporting](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)
98
feature on this repository rather than opening a public issue.
109

tests/Monnify.IntegrationTests/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ alongside the mocked unit tests in `Monnify.Tests` (see
77

88
They're tagged `[Trait("Category", "Sandbox")]` and use `[SkippableFact]`
99
(`Xunit.SkippableFact`) so they **skip silently rather than fail** when
10-
credentials aren't available — CI never has sandbox credentials and excludes
11-
this category entirely via `--filter "Category!=Sandbox"`.
10+
credentials aren't available — CI runs `dotnet test` with no filter, but
11+
since it never has sandbox credentials configured, `SandboxCredentials.IsAvailable`
12+
is `false` and every test in this project reports as `Skipped`, not `Failed`.
1213

1314
## Running locally
1415

0 commit comments

Comments
 (0)