This file is the human-readable integration guide for AI/code agents working in this repository. It summarizes verified specification coverage, highlights known parity gaps, and defines a safe workflow for implementing missing IPP/PWG features.
- Primary runtime API surface:
SharpIpp/ISharpIppClient.csandSharpIpp/ISharpIppServer.cs - Operation identifiers:
SharpIpp/Protocol/Models/IppOperation.cs - Request/response wiring:
SharpIpp/Mapping/Profiles/RequestsandSharpIpp/Mapping/Profiles/Responses - Server dispatch:
SharpIpp/SharpIppServer.cs - Validation tests:
- unit:
SharpIpp.Tests.Unit - integration:
SharpIpp.Tests.Integration
- unit:
- Specification document corpus:
docs/Content/Specification(includes RFCs and PWG specs through 5100.22-2025)
- Legacy baseline remains RFC 2911 + CUPS operations (see
README.md). - Expanded spec corpus is present under DocFX, including:
- RFC 2911, RFC 8010, RFC 8011
- PWG 5100.x families including 5100.5, 5100.7, 5100.18, and 5100.22
- IPP System Service support from PWG 5100.22-2025 is broadly implemented in client models and mappings.
Implemented and wired in the client contract include System Service operations such as:
AllocatePrinterResourcesAsync,DeallocatePrinterResourcesAsyncCreatePrinterAsync,DeletePrinterAsync,GetPrintersAsync,GetPrinterResourcesAsyncGetSystemAttributesAsync,GetSystemSupportedValuesAsync,SetSystemAttributesAsyncDisableAllPrintersAsync,EnableAllPrintersAsync,PauseAllPrintersAsync,ResumeAllPrintersAsyncShutdownOnePrinterAsync,StartupOnePrinterAsync,ShutdownAllPrintersAsync,StartupAllPrintersAsyncRestartSystemAsync,RestartOnePrinterAsyncRegisterOutputDeviceAsync- System/resource subscription operations (
CreateSystemSubscriptionsAsync,CreateResourceSubscriptionsAsync, etc.)
Additional 5100.22 model/mapping support verified:
ResourceStatusAttributes.ResourceUuid- strong typed collections for system/resource and power-policy/state objects
- collection mapping in
CollectionProfilesand related response profiles
When adding or correcting a spec operation/attribute, treat parity as end-to-end:
- Add/confirm operation id in
IppOperation. - Add request/response model types.
- Add client contract method in
ISharpIppClientand implementation inSharpIppClient.*.cs. - Add request/response profile wiring.
- Add server dispatch mapping in
SharpIppServer.ReceiveRequestAsync. - Add or update protocol attribute/profile mappings for any new fields.
- Add tests:
- unit mapping tests
- unit client request-operation mapping tests
- integration request/response roundtrip tests
- Update docs:
docs/Content/Client/Operations.md- any relevant specification or API pages
- Prefer small, focused patches and keep naming aligned with existing IPP operation style.
- Preserve bidirectional mapping symmetry for new attributes.
- For enum arrays in IPP attributes, ensure both read and write mapping paths are covered.
- Do not assume DocFX pages are fully current; verify behavior from code + tests first.