Skip to content

Releases: prdb-net/prdb-sdk

SDKs 0.24.0: stable Actor and Site public IDs

Choose a tag to compare

@prdb-net prdb-net released this 25 Oct 10:49
v0.24.0
2ceb9c1

Added

  • Stable Actor and Site public IDs. Actor and Site list/detail models,
    nested Video Actor/Site models, favourites, ignored sites and their change
    payloads expose publicId. Video summaries expose sitePublicId alongside
    siteId. Actor IDs use A followed by at least eight decimal digits (for
    example, A00000043); Site IDs use S followed by at least six (for example,
    S000002). Larger numbers grow without truncation. These are strings; retain
    their prefix and leading zeroes.
  • Actor and Site list search parameters accept exact public IDs. Retained
    merged Actor IDs resolve to the active canonical Actor. Existing Actor/Site
    rows are stamped by the migration so their IDs reach change-feed consumers.

Compatibility notes

  • Existing GUID identities, routes, request bodies and status codes remain
    unchanged. Public IDs supplement the GUIDs.
  • SiteChangeSiteDto.publicId is required but nullable: a Site deleted before
    numbering was introduced has no assigned public ID. Other catalogue public
    IDs are non-null in the API contract. The generated SDKs retain Kiota's
    optional model properties, so an older server omitting a field can still be
    read.

Packages: Python prdb-sdk==0.24.0, npm @prdb/sdk@0.24.0, NuGet Prdb.Sdk 0.24.0, Go github.com/prdb-net/prdb-sdk/go@v0.24.0.

Implemented in #71.

SDKs 0.23.0: SiteDateTitle identification rung

Choose a tag to compare

@prdb-net prdb-net released this 24 Oct 15:14
v0.23.0
bb4cc3e

SDK 0.23.0 adds the sixth identification rung to all four SDKs.

  • IdentifyMatchKind (matchedBy on IdentifyVideoResultDto) gains SiteDateTitle (6): the file name carries the site, the release date and the whole title of exactly one of that site's videos released that day. It comes with confidence Probable (2), or Ambiguous (5) with candidates when several videos of that day match.
  • matchedBy stays a plain integer in every SDK, so only its documentation changes; code that handles unknown values keeps working. No field, route or status code changed.
  • Updated published spec, including clarified descriptions of preview images counting as filehash submissions and of filesize and submissionCount on filehash records.

Packages: prdb-sdk==0.23.0, @prdb/sdk@0.23.0, Prdb.Sdk 0.23.0, and Go tag go/v0.23.0. Prdb.Hashing is unchanged and independently versioned.

Implements #67 via #68 and #69.

SDKs 0.22.0: Video baseline and Identification freshness

Choose a tag to compare

@prdb-net prdb-net released this 22 Oct 14:13
v0.22.0
f5bce78

SDK 0.22.0 adds the bounded Video baseline and Identification freshness validation in Python, TypeScript, Go and C#.

  • Full Video baseline documents with a scoped opaque continuation, catch-up watermark and typed 413 recovery.
  • Optional Identify proofs and batched validation with unchanged, identified and reidentify results.
  • Shared contract tests and adoption guidance covering durable checkpoints, tombstones, proof lifecycle, older-server fallback and quota accounting.
  • Updated published spec, including image-upload idempotency/conflict codes and rolling-quota descriptions.

Read sync adoption before using these capabilities. Go date parameters require the tested fresh WithUrl pattern because of a Kiota runtime limitation. TypeScript callers must branch on freshness status rather than testing the nullable result object. Runtime minimums are unchanged.

Packages: prdb-sdk==0.22.0, @prdb/sdk@0.22.0, Prdb.Sdk 0.22.0, and Go tag go/v0.22.0. Prdb.Hashing is unchanged and independently versioned.

Implements #64 and #65 via #66.

SDKs 0.21.0: preview-enrichment eligibility

Choose a tag to compare

@prdb-net prdb-net released this 17 Oct 15:31
v0.21.0
a27d24e

All four SDKs now expose previewEnrichmentEligible on VideoDetailDto (GET /videos/{id}, POST /videos/batch) and VideoChangeVideoDto (GET /videos/changes). The field says whether prdb would welcome a preview image for a video from a client that already holds one of its files. It is a server-side selection hint only, not a download instruction and not evidence that a file belongs to the video. Eligibility can disappear after an image is published, a mapping is withdrawn or the video is deleted. Every change of the value reaches the feed, and tombstones carry false.

The generated property is nullable in every language, so a response from an older server that omits it reads as unknown, never as false or as eligible. When the server rule was widened to version 2 (confirmed creator-handle releases now count as well), existing videos changed value without feed events. Consumers adopting the field should take a full /videos/changes baseline. No other schema or operation changed.

A shared contract fixture backs one test per language. Each test covers true/false/absent values on detail and batch responses, upserts and tombstones across SinceId cursor pages, a later flip to false, and the declared 400/403/404 problems.

Python prdb-sdk, TypeScript @prdb/sdk, Go module github.com/prdb-net/prdb-sdk/go (tag go/v0.21.0) and C# Prdb.Sdk share version 0.21.0. Prdb.Hashing is unchanged.

Upstream: prdbnet/prdb!508 and !509 (PRDB-324). Downstream: porganizer#56 and porganizer#59.

SDKs 0.20.1: release metadata resolution

Choose a tag to compare

@prdb-net prdb-net released this 13 Oct 19:10
v0.20.1
0942a38

All four SDKs now expose read-only release metadata resolution through POST /releases/resolve: ordered single-video identities, Site/Actor context, candidate alternatives, explicit per-entry decisions, nullable dates, opaque versions and recheck times. Packs remain unsupported. Existing file-identification and feed contracts are unchanged.

The new route carries typed validation, authentication, quota, body/media and service problems. Shared contract tests cover all four adapters; C# consumer coverage includes preferences, ownership, unchanged rechecks and Retry-After. Go now sends plain JSON rather than Kiota's default gzip request bodies, matching the API and other SDKs.

Python prdb-sdk, TypeScript @prdb/sdk, Go module github.com/prdb-net/prdb-sdk/go (tag go/v0.20.1) and C# Prdb.Sdk share version 0.20.1. Prdb.Hashing is unchanged. See the release-resolution guide and changelog for safe automatic selection and the distinction from independent file/hash confirmation.

The patch also restores TypeScript API-key binding with both older locked and newer freshly resolved Kiota dependencies for supported base URLs with explicit ports. CI verifies both dependency resolutions; origin validation and cross-origin redirect protection remain enforced.

The API consumer acceptance passed against both Prdb.Sdk 0.20.0 and 0.20.1 downloaded from NuGet. Published Python, TypeScript and Go 0.20.1 packages also passed real HTTP resolution with the synthetic API fixture. No SDK checkout substitutes for the released-package acceptance.

SDK 0.18.0

Choose a tag to compare

@prdb-net prdb-net released this 11 Oct 10:21
v0.18.0
e7c3f81

All four SDKs now expose retained actor identities and actor merge feed metadata.

  • Optional nullable ActorDetailDto.requestedIds maps supplied batch IDs to each canonical result. Batch responses remain arrays and contain each canonical actor once.
  • Optional nullable mergedIntoActorId is available on Actor and favorite-actor change payloads. Source tombstones retain their old IDs. Target updates must be applied independently of source tombstones and page order; a mapping alone does not imply an active favorite.
  • Retained IDs resolve to active actors with HTTP 200 and no redirect; unknown IDs, ordinary deletions and deleted targets keep existing 404/omission behavior. Favorite add/remove operations resolve retained IDs too.

Packages: prdb-sdk==0.18.0 (Python), @prdb/sdk@0.18.0 (npm), Prdb.Sdk 0.18.0 (NuGet), and github.com/prdb-net/prdb-sdk/go@v0.18.0 (Go).

Validated with shared synthetic contract responses in all four SDKs, nullable and omitted metadata, drift checks, Python 42 tests, TypeScript 40 tests on Node 22/24, Go build/vet/tests, and C# 63 SDK tests on each of .NET 8/10. Existing operations, required fields and cursors remain unchanged. Prdb.Hashing is unchanged and separately versioned.

PR: #52

SDK 0.17.0

Choose a tag to compare

@prdb-net prdb-net released this 10 Oct 08:34
v0.17.0
3b31e32

Added

  • Creator platforms and confirmed account relationships. All four SDKs
    now expose GET /platforms, GET /actors/{id}/accounts and
    GET /sites/{id}/owners. Publishing platforms have stable UUIDs, keys and
    titles and are separate from studio-group Networks. Account/owner reads
    return up to 200 confirmed catalogue relationships in deterministic order;
    guest credits do not imply ownership, and private source identities and
    evidence are excluded.
  • Platform metadata throughout the catalogue. Site and Video payloads,
    including nested sites, favorite/ignored sites and current-state change
    feeds, gain nullable platformId, platformKey, platformTitle and
    accountHandle. Classic sites carry null platform metadata. Platform and
    owner changes advance the affected Site, Actor and Video feeds so consumers
    can update existing IDs with their current cursors.
  • Platform filters for Sites and Videos. GET /sites and GET /videos
    accept PlatformId or ClassicOnly=true; combining them returns the
    existing validation problem response. Existing routes, operation IDs,
    response status declarations and change-feed cursor shapes are preserved.

Known limitations

  • Go filtered Video requests require a raw URL. The existing Kiota
    timestamp-query bug also visits unset CreatedAfter and CreatedBefore
    fields, so a typed Video query configuration panics even when only a
    platform filter is set. Use Videos().WithUrl(url).Get(ctx, nil) with
    net/url-encoded filters. The Go README
    includes a compiled example and a regression test covers both filters
    through the authenticated wrapper.

Closes #49 via PR #50. All six CI checks passed, including C# on .NET 8 and .NET 10, TypeScript on Node 22 and 24, and regeneration consistency.

SDK 0.16.1

Choose a tag to compare

@prdb-net prdb-net released this 07 Oct 13:59
v0.16.1
8b5beb4

A regeneration that changes no type, field, method or status code. The API's
change feeds behave differently, and the doc comments in all four languages now
say how.

Documented

  • Every change feed reads two minutes behind the server clock. A page only
    contains rows whose updatedAtUtc is at least two minutes old, and
    serverTimeUtc is the server clock minus that delay, never older than a row
    on the page. The server stamps a row before it commits it, so a feed reading
    up to the present could hand out a cursor beyond a row that was not visible
    yet, and that row was never returned. Changes now reach a consumer up to two
    minutes later; persisting serverTimeUtc as the next since after an empty
    page stays correct. A stored cursor newer than the bound gets empty pages
    until the bound passes it. This applies to all ten /…/changes feeds; see
    Catalogue synchronization.

  • GET /video-user-images/changes no longer exposes hidden images. An image
    that is deleted, or hidden, denied or removed in moderation, is reported with
    eventType: "deleted", an empty url and a null vttUrl; a restored image
    reappears as updated with its URLs. url remains a non-nullable string, so
    the generated types are unchanged; treat "" as "no image".

Closes #47. Issue #35 remains open pending an upstream API extension.

Validation: CI passed for Python, TypeScript (Node 22 and 24), Go, C# (.NET 8 and 10), and generated-code consistency.

SDK 0.16.0

Choose a tag to compare

@prdb-net prdb-net released this 01 Oct 07:20
v0.16.0
7d4c22f

Added

  • Video and Site catalogue change feeds. GET /videos/changes
    (GetVideoChanges) and GET /sites/changes (GetSiteChanges) expose current
    catalogue content and minimal deletion tombstones in all four SDKs. Video
    items include the current detail payload and mergedIntoId for merge
    deletions; Site items include current network and link content. Both feeds
    support a full baseline with Since=0001-01-01T00:00:00Z, accept SinceId
    and PageSize (1–1000), and return hasMore, serverTimeUtc and a nullable
    nextCursor. Tombstones are retained indefinitely, with a guaranteed minimum
    of 90 days. See Catalogue synchronization for paging
    and deletion handling.

Known limitations

  • Go timestamp query configurations require a raw URL. The pinned Kiota
    runtime panics when serializing a typed Since. Call the generated change
    builder's WithUrl method with a query encoded using net/url, then
    Get(ctx, nil). This retains typed responses, authentication and redirect
    protection. The Go README gives a
    baseline example; a regression test covers baselines and resumed UUID cursors
    with fractional seconds. Go remains supported from version 1.23.

Closes #45. Issue #23 was already delivered in 0.9.0 and is now closed. Issue #35 remains open pending an upstream API extension.

Validation: CI passed for Python, TypeScript (Node 22 and 24), Go, C# (.NET 8 and 10), and generated-code consistency.