feat(wave-6): Files & Master Data — 53 endpoints across 14 services#102
Merged
Conversation
Introduces the Files domain folder with a FileService exposing all 9 Bexio v3.0 /files endpoints: Get, GetById, Download, Preview, Usage, Upload (FileInfo and MemoryStream overloads), Search, Patch, Delete. Download and Preview return ApiResult<byte[]> via GetBinaryAsync; Upload uses PostMultiPartFileAsync; Patch uses PatchAsync with a FilePatch view. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ce (issue #94) Adds two GET-only connectors under the new Files domain: - DocumentSettingService (v2.0, /kb_item_setting) — lists KbItemSetting entries. - DocumentTemplateService (v3.0, /document_templates) — lists document templates with their default document types. Both services follow the canonical ConnectorService pattern with ApiVersion + EndpointRoot constants in sibling Configuration classes and are wired into IBexioApiClient, BexioApiClient, BexioServiceCollection, and the E2E test base. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
) Adds full CRUD + Search connector for the v2.0 country endpoint under the new MasterData domain folder. Update uses PUT per the epic blueprint. - sealed record Country + CountryCreate/CountryUpdate views with snake_case JSON mapping (name, name_short, iso3166_alpha2). - ICountryService interface + CountryService implementation with canonical Get/FetchAll pagination, PostSearchAsync search, and PutAsync update. - QueryParameterCountry for pagination (limit, offset). - Exposed as IBexioApiClient.Countries with DI registration and wire-up test assertion. - 11 offline unit tests (NSubstitute) covering verb, route, payload, and cancellation-token forwarding for each method. - 6 WireMock integration tests covering CRUD + Search round-trip. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ssue #96) Adds a new MasterData domain folder hosting a full-CRUD + Search SalutationService covering all 6 endpoints documented under the Bexio Salutations tag (Get, GetById, Create, Search, Update, Delete). Wires the connector into IBexioApiClient, BexioApiClient, BexioServiceCollection and the wire-up + E2E test bases. Update uses PutAsync (mirroring the established UnitService convention for 2.0 edit endpoints) and Search routes through PostSearchAsync. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add TitleService with full CRUD + Search against the Bexio v2.0 /title route (Get, GetById, Create, Search, Update via PUT, Delete). Introduces the new MasterData domain folder and wires the connector as IBexioApiClient.Titles. Also upgrade WireMock.Net 2.2.0 -> 2.4.0 in IntegrationTests to pull in OpenTelemetry 1.15.3 transitives and clear pre-existing NU1902 vulnerability warnings, enabling dotnet build /warnaserror to pass clean. Verification: 0 warnings / 0 errors; 492 unit tests pass (11 new Title tests covering verb + route + payload for every method); 277 integration tests pass.
…le, Permission services (issue #98) Adds four read-only lookup connector services to the MasterData domain (8 endpoints total). Each service follows the established ConnectorService pattern with ApiVersion/EndpointRoot constants and ApiResult<T> returns. - LanguageService (v2.0): Get (with pagination), Search (PostSearchAsync) - CommunicationTypeService (v2.0, communication_kind route): Get, Search - CompanyProfileService (v2.0): Get (list), GetById (verified against OpenAPI spec) - PermissionService (v3.0): Get singleton for caller's permission set Wires the four new connectors into IBexioApiClient, BexioApiClient, BexioServiceCollection and BexioE2eTestBase, and extends the wire-up unit test to cover the new properties. Adds 12 new unit tests verifying verb + route composition for each method.
…v3.0 (issue #99) Adds the v3.0 user management connectors under a new MasterData namespace: UserService exposes GetAll (paginated /3.0/users), GetMe (singleton /3.0/users/me) and GetById; FictionalUserService exposes Get, GetById, Create, Patch and Delete against /3.0/fictional_users. The Patch path uses ConnectionHandler.PatchAsync with a FictionalUserPatch view whose nullable + JsonIgnore(WhenWritingNull) properties guarantee partial updates serialize only the caller-supplied fields. Both connectors are registered via DI and exposed on IBexioApiClient as Users and FictionalUsers. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… (issue #100) Introduces the MasterData domain folder and the NoteService connector covering all 6 Bexio Notes endpoints: Get (with pagination), GetById, Create, Search, Update (PUT) and Delete. Wires the service into IBexioApiClient.Notes and the AspNetCore DI registration; extends the wire-up test and E2E test base. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ocument_type (issue #101) Adds Get, GetById, Create endpoints for document comments (offers/orders/invoices) under /2.0/{kb_document_type}/{document_id}/comment. The discriminator is a URL-level enum, not a JSON-body field, so no DiscriminatedJsonConverter is required. KbDocumentType enum values are validated against bexio-v3.json: kb_offer, kb_order, kb_invoice. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… (2 endpoints)
…ProfileService+PermissionService (8 endpoints)
…itive merge resolution (issue #29)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Wave 6 of the 100% API Coverage Roadmap (#22), adding 53 new endpoints across 14 services in two categories: Files & Documents and Master Data.
All 9 sub-issues were implemented in parallel by individual Docker agents, each individually verified (APPROVED), then merged into this integration branch. A final integration verification confirmed the full solution builds clean and all unit tests pass.
Sub-Issues Completed
Total: 53 endpoints, 14 services
Key Implementation Notes
FileService.DownloadandFileService.Previewreturnbyte[]viaApiResult<byte[]>FileService.Uploaduses multipart/form-dataCommentServiceuses{kb_document_type}/{document_id}route pattern with a typedKbDocumentTypeenum2.2.0 → 2.4.0(clears pre-existing NU1902 advisories in IntegrationTests)Verification
dotnet build /warnaserror: ✅ clean (NU1902 pre-existing advisories on IntegrationTests are exempt)dotnet test --filter TestCategory=Unit: ✅ all greenTest plan
IBexioApiClient,BexioApiClient,BexioServiceCollection) for all 14 new service registrationsFileServiceTests.cs,CountryServiceTests.cs) for coverage qualityFileServiceCommentServicepolymorphic route constructionCloses #29
🤖 Generated with Claude Code