Repository navigation
Add a page for the derived property element - #315
Merged
Merged
Conversation
Says what the element is, which properties it gives and from which elements, what a property with no value says, how the Pipeline is checked, how scripts are configured, and how to add it in .NET, PHP and Rust, with links to each package, its source and the .NET example. The API features index lists the page.
Contributor
The pipeline API documentation reads the .NET examples again, so the page grabs the DerivedProperty example as the agent signature page grabs its own.
Go has the element on its rc from 51degrees-go#132. The Go tab uses IsGdpr with the IP Intelligence cloud engine, because the Go on-premise engines do not run in a Pipeline yet and Go has no Device Detection cloud engine. The configuration section says how Go builds it from a file.
…pt needs, and link the Rust example The no-value message example named two of HumanConfidence's source properties. It now uses IsGdpr, whose one source, the country code, its own definition names. The table's column says which engines to add rather than what each script reads, and the Rust tab links the derived-property example that 51degrees-rust#419 added.
jwrosewell
marked this pull request as ready for review
November 15, 2026 00:33
This was referenced Nov 15, 2026
jwrosewell
added a commit
that referenced
this pull request
Nov 15, 2026
The derived property page, added by [#315](#315) and merged into `rc` on 15 November, links the Rust example but not Go's, because Go's was still a draft when the page was written. [51degrees-go#137](51Degrees/51degrees-go#137) merged it into Go's `rc` at 00:32 UTC on 15 November.
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.
Problem
No page in the documentation covers the derived property element. .NET and Rust have released it, PHP has it on
rcfrom 51degrees-php#89, Go has it onrcfrom 51degrees-go#132, and the cloud uses the same element to givederived.HumanConfidenceandderived.IsGdpr. A reader of the Pipeline API features has no way to find it.What the specification says
The Derived Property Element specification at c8128ca4 defines it as follows (lines 3 to 6).
The page follows the specification's sections.
derived, one property per script (lines 223 to 225).What the page says about each language
DerivedPropertyElementBuilder.cslines 85, 138 and 219 forAddScript(BuiltInScript),AddScriptFileandAddScript(name, text),IDerivedPropertyData.csline 36, and the DerivedProperty example with its configuration fileelements/derivedpropertypackage of thegithub.com/51Degrees/51degrees-go/pipeline/v4module, taggedpipeline/v4.x.ylike the module's releases so far (pipeline/v4.5.173is the newest)builder.golines 56, 62, 76 and 97 forNewBuilder,AddBuiltInScript,AddScriptFileandAddScript, lines 211 to 219 forBuilderNameandNewFromConfiguration,core/config.golines 78 and 95 forRegisterandBuildFromConfiguration,element.golines 44 and 73 forDataKeyandGetAs, andengines/aspectdata.golines 175 and 192 forValueandNoValueMessage. The tab usesIsGdpr(builtin.goline 50, aboolin its script) with the IP Intelligence cloud engine, built as the cloud example, lines 127 to 150 builds it, because Go'sdevice-detectionhas no cloud engine and its on-premise engines are not flow elements (51degrees-go#30). The Pipeline check takes a cloud engine whose properties are not loaded yet as supplying them (element.golines 283 to 288), so the Pipeline builds.51degrees/fiftyone.pipeline.derivedproperty, not on Packagist (https://repo.packagist.org/p2/51degrees/fiftyone.pipeline.derivedproperty.jsonanswered 404 on 14 November)DerivedPropertyElementBuilder.phplines 47, 59 and 70, and the code and configuration file in the package readmeelement.rslines 154, 352, 364 and 388 forbuilder,add_built_in,add_scriptandadd_script_file, and the code in the crate readme, lines 44 to 79. The tab links the derived-property example, which 51degrees-rust#419 merged into Rust'srcat 23:02 UTC on 14 November. It holds a script in the code (line 318), reads one from a file (line 315), builds the same Pipeline from an options file (lines 263 to 271) and shows a property with no value (lines 284 to 291 and 412).The scripts table names the two scripts in derived-properties,
HumanConfidenceandIsGdpr. It says which engines each one needs in the Pipeline, and quotes the definitionIsGdprcarries in its ownOutputblock. It does not describe howHumanConfidenceis worked out, because that belongs to the script, which the table links, and to the Human Confidence overview. For the same reason the example of a no-value message is forIsGdpr, whose one source, the country codeip.CountryCode, its own definition names, in the singular form the specification gives at lines 168 to 170 ("1 source property was not available").Files
src/pipelineapi/features/derivedproperties.md, the new page,PipelineApi_Features_DerivedProperties. Its last section grabs the .NET example,DerivedProperty/Program.cs, from the published pipeline API documentation, as the agent signature page grabs its own. 51degrees-dotnet#199, onrcfor the Monday release, puts the .NET examples back into that documentation, so the example appears once that release reachesmain.src/pipelineapi/features/index.md, which lists the page between custom elements and error handling.The feature matrix links the page from its new derived properties row in the matrix draft, documentation#314, so this draft merges first.
When this merges
After the Monday 16 November releases reach
main, because the PHP tab linkstree/main/pipeline/derivedproperty, the Go tabtree/main/pipeline/elements/derivedpropertyand the Rust tabblob/main/examples/pipeline-examples/src/bin/derived-property.rs, which are on each repository'srcuntil then.What remains
rcfrom 51degrees-rust#419, which the Rust tab now links. Go's is an open draft, 51degrees-go#137, and the Go tab gets its link once that merges. PHP shows the element only in its readme, which is for that repository.Build
Checks on the head, d7e909e, all green.
derivedproperties.mdorfeatures/index.md..utm-lint.json({ "mode": "forbid" }) requires.