TechStrap.Contracts 0.4.6

dotnet add package TechStrap.Contracts --version 0.4.6
                    
NuGet\Install-Package TechStrap.Contracts -Version 0.4.6
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TechStrap.Contracts" Version="0.4.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TechStrap.Contracts" Version="0.4.6" />
                    
Directory.Packages.props
<PackageReference Include="TechStrap.Contracts" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TechStrap.Contracts --version 0.4.6
                    
#r "nuget: TechStrap.Contracts, 0.4.6"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TechStrap.Contracts@0.4.6
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TechStrap.Contracts&version=0.4.6
                    
Install as a Cake Addin
#tool nuget:?package=TechStrap.Contracts&version=0.4.6
                    
Install as a Cake Tool

TechStrap.Contracts

The wire contracts of TechStrap, the self-hosted support desk: the request and response types, header names, route constants and size limits that the intake API and its clients share. It has no dependencies, so any .NET client can reference it.

What it contains

  • SubmitTicketRequest and SubmitTicketResponse, the JSON bodies of POST /api/intake/tickets.
  • HeaderNames: the X-Api-Key, X-Ticket-Token and Idempotency-Key header names.
  • IntakeRoutes: the intake route constants.
  • IntakeLimits: the size limits the API enforces (subject, body, metadata keys and values, idempotency key length).
  • TicketMetadataKeys: the well-known metadata keys (app.version, os.platform and the rest) that device-aware clients fill in.

Stability

The package follows semantic versioning, scoped as follows. v1.0.0 locks the SDK-facing surface of TechStrap.Contracts: the TechStrap.Contracts.Intake namespace (SubmitTicketRequest, SubmitTicketResponse, IntakeLimits, IntakeRoutes, IntakeWarnings, TicketMetadataKeys) and TechStrap.Contracts.Http.HeaderNames. The other namespaces (Admin, Agents, ApiKeys, Kb, Live, AdminEvents, Tickets and so on) are TechStrap's own app wire shapes, shared with its Admin and Portal, and may change in minor versions. Before 1.0.0 (the 0.x versions, starting with 0.1.0), the SDK-facing surface can still change in a minor version; after it, a breaking change there ships only in a new major version. Package validation is enabled; its baseline comparison against the previous release starts after 1.0.0. Changes since 0.1.0 are additive in source; the 0.2.0, 0.3.0 and 0.4.0 notes below name the binary breaks (positional parameters) that a recompile resolves.

Attachment intake (PHASE-11d)

IntakeRoutes.TicketsWithAttachments names the API-key multipart route. Request/response DTOs and JSON wire shapes are unchanged. Stream sources live in TechStrap.Client, and the MAUI adapter lives in TechStrap.Client.Maui; Contracts gains no dependency. Deploy an attachment-capable server before using it. No version is published by this change.

Version notes

Unreleased — feature requests

SubmitTicketRequest gains optional trailing Type; omitted or null means Support, and FeatureRequest identifies a private feature request. JSON and multipart intake reject unknown types. Ticket summaries, details, and mutation state now include Type and nullable FeatureId, and the list accepts a type filter. Existing queues include both types. The new Features namespace defines curated board management and public projection contracts; public feature data is separate from private ticket data. Recompile positional record consumers after upgrading because constructor and deconstruction signatures change. Wire callers omitting type remain compatible.

0.4.0

Trailing optional Skin parameters (type TechStrap.Contracts.Skins.ProductSkin, null means no skin) were added to ProductDto, CreateProductRequest, UpdateProductRequest, PublicProductDto and PublicProductSummaryDto; null on UpdateProductRequest leaves the stored skin unchanged, and an all-null ProductSkin clears it. This is source-compatible but changes the constructor and Deconstruct signatures: recompile consumers built against 0.3.0. New types: the TechStrap.Contracts.Skins namespace, SiteSettingsDto, UpdateSiteSettingsRequest, PublicSiteDto. ProductAccent.ReadableOn is new. The wire values AdminEventTypes.SiteSettingsUpdated and AdminSubjectTypes.SiteSettings are new: a consumer that switches on these values will see values it did not know. TechStrap.Client and TechStrap.Client.Maui move with it.

0.3.0

Trailing optional parameters were added to the positional records ProductBrandingDto (Tagline, UploadedLogoUrl), ProductBrandingRequest (Tagline), ProductDto (ListedOnLanding, default true), CreateProductRequest (ListedOnLanding, null means true), UpdateProductRequest (ListedOnLanding, null means unchanged), PublicProductDto (Tagline) and PublicProductSummaryDto (Tagline, LogoUrl, AccentColour, ListedOnLanding). This is source-compatible but changes their constructor and Deconstruct signatures: recompile consumers built against 0.2.0. A client that does not send Tagline (any 0.2.0 client) clears a product's tagline when it saves, because branding is replaced whole, exactly as LogoPath already behaves; ListedOnLanding and the uploaded logo are kept. LogoPath on PublicProductDto and LogoUrl on PublicProductSummaryDto now carry the effective logo: the uploaded logo when a product has one, else the linked address. ProductLogoLimits and ProductLogoName are new. TechStrap.Client and TechStrap.Client.Maui move with it.

0.2.0

The positional records ProductDto, CreateProductRequest, UpdateProductRequest, PublicProductDto and PublicProductSummaryDto gained a trailing string? PortalHost = null parameter since 0.1.0. This is source-compatible but changes their constructor and Deconstruct signatures: recompile consumers built against 0.1.0. UpdateProductRequest.PortalHost is new in 0.2.0: null leaves the stored host unchanged, an empty or whitespace string clears it, and any other value is normalized, validated and set. A 0.1.0 client that saves a product therefore leaves its host as it is. TechStrap.Client and TechStrap.Client.Maui move with it.

Using it

You normally get this package through TechStrap.Client, which wraps these contracts in a typed HTTP client with retries and typed errors. Reference TechStrap.Contracts directly only if you write your own client.

More: https://github.com/Syntax-Circus/techstrap/blob/main/docs/development/CLIENT-SDK.md

Source and issues: https://github.com/Syntax-Circus/techstrap

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on TechStrap.Contracts:

Package Downloads
TechStrap.Client

Client SDK for TechStrap: submit support tickets to a TechStrap API from any .NET app, with an API key, retries and typed errors.

TechStrap.Client.Maui

Device and app metadata capture and a submit-ticket helper for MAUI apps, on top of TechStrap.Client.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.6 0 10/18/2026
0.4.5 45 10/16/2026
0.4.4 44 10/16/2026
0.4.3 53 10/16/2026
0.4.2 105 10/10/2026
0.4.1 98 10/10/2026
0.4.0 100 10/10/2026
0.3.0-rc.1 65 10/10/2026
0.2.2 106 10/10/2026
0.2.1 99 10/9/2026
0.2.0 108 10/8/2026
0.1.0 103 10/8/2026