{"api":"v1","generated_at":"2026-09-16T05:24:48.248Z","licence":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/","attribution":"TOLL, with a link to the page cited"},"page":"https://tollindex.com/e/tools-halowerk-com-v1-telemetry-normalize-c9e7d9","pinned_page":"https://tollindex.com/e/tools-halowerk-com-v1-telemetry-normalize-c9e7d9/at/2026-09-16T04-48Z","pinned":false,"method":"https://tollindex.com/ledger/method","snapshot_at":"2026-09-16T04:48:25.992Z","snapshot_stamp":"2026-09-16T04-48Z","endpoint":{"slug":"tools-halowerk-com-v1-telemetry-normalize-c9e7d9","canonical_url":"https://tools.halowerk.com/v1/telemetry/normalize","resource":"https://tools.halowerk.com/v1/telemetry/normalize","http_method":"POST","type":"http","x402_version":2,"registries":["cdp"],"primary_registry":"cdp","curated_by_coinbase":false,"description":"Turns SenML (JSON or CBOR) and LwM2M TLV into one record shape: resolved name, unit, absolute timestamp, typed value. Optionally puts every series on a shared time axis with a chosen interval and fill rule (last value, bucket mean, linear). Works only on the payload you pass: no device is contacted, nothing is stored, the same request returns the same bytes. TLV carries no type on the wire; unmapped resource ids come back as opaque base64 with a warning instead of a guess.","service_name":"Netzhandwerker Agent Tools","declared_category":null,"declared_tags":["x402","agent-tools","data","telemetry_normalize"],"route_template":null,"registry_updated":"2026-08-19T15:03:45.674Z"},"derived":{"note":"fields no registry supplies; TOLL derives them and marks them derived on the page","title":"telemetry normalize","category":"storage","first_observed_by_toll":"2026-09-10T19:08:24.178Z","last_observed_by_toll":"2026-09-16T04:48:25.991Z","observation_began":"2026-09-10"},"presence":{"listed_now":true,"first_absent_at":null,"delisting_confirmed_at":null,"events":[{"registry":"cdp","at":"2026-09-10T19:08:24.178Z","event":"listed"}]},"accepts":[{"registry":"cdp","ordinal":0,"network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","asset_name":"USD Coin","symbol":"USDC","decimals":6,"amount_display":"0.002 USDC","amount_units":0.002,"decimals_known":true,"pay_to":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","scheme":"exact"}],"counters":{"observed_at":"2026-09-16T04:48:25.992Z","calls_30d":1,"unique_payers_30d":1,"last_called_at":"2026-08-19T15:03:45.191Z"},"validation":{"latest":{"observed_at":"2026-09-15T06:32:12.455Z","state":"pass","failed_checks":[],"endpoint_http_status":402,"run_id":"daily-2026-09-15"},"uptime":[{"days":7,"observed":5,"passed":5,"ratio":1},{"days":30,"observed":5,"passed":5,"ratio":1},{"days":90,"observed":5,"passed":5,"ratio":1}],"history_90d":[{"observed_at":"2026-09-15T06:32:12.455Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-15","state_changed":false},{"observed_at":"2026-09-14T06:01:09.718Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-14","state_changed":false},{"observed_at":"2026-09-13T05:53:06.695Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-13","state_changed":false},{"observed_at":"2026-09-12T08:10:20.477Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-12","state_changed":false},{"observed_at":"2026-09-11T12:08:46.372Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-11","state_changed":true}]},"seller":{"wallet":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","page":"https://tollindex.com/seller/0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","endpoints":1553,"hosts":67},"reports":0,"registry_record":{"cdp":[{"tags":["x402","agent-tools","data","telemetry_normalize"],"type":"http","accepts":[{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"name":"USD Coin","asset":"USDC","version":"2","decimals":6,"eip712Domain":{"name":"USD Coin","chainId":8453,"version":"2","verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"network_name":"Base Mainnet","assetTransferMethod":"eip3009"},"payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","amount":"2000","scheme":"exact","network":"eip155:8453","maxTimeoutSeconds":300}],"quality":{"lastCalledAt":"2026-08-19T15:03:45.191Z","l30DaysTotalCalls":1,"l30DaysUniquePayers":1},"resource":"https://tools.halowerk.com/v1/telemetry/normalize","extensions":{"bazaar":{"info":{"input":{"body":{"align":true,"format":"senml_json","payload":[{"n":"temp","v":21.3,"bn":"urn:dev:ow:10e2073a:","bt":1786000000,"bu":"Cel"},{"n":"temp","t":60,"v":21.9},{"n":"hum","t":60,"u":"%RH","v":48}],"interval_s":60,"align_method":"last"},"type":"http","method":"POST","bodyType":"json"},"output":{"type":"json","example":{"format":"senml_json","series":[{"max":48,"min":48,"mean":48,"name":"urn:dev:ow:10e2073a:hum","unit":"%RH","count":1,"numeric_count":1,"last_time_unix_s":1786000060,"first_time_unix_s":1786000060},{"max":21.9,"min":21.3,"mean":21.6,"name":"urn:dev:ow:10e2073a:temp","unit":"Cel","count":2,"numeric_count":2,"last_time_unix_s":1786000060,"first_time_unix_s":1786000000}],"aligned":{"method":"last","points":[{"time":"2026-08-06T07:06:40.000Z","values":{"urn:dev:ow:10e2073a:hum":null,"urn:dev:ow:10e2073a:temp":21.3},"time_unix_s":1786000000},{"time":"2026-08-06T07:07:40.000Z","values":{"urn:dev:ow:10e2073a:hum":48,"urn:dev:ow:10e2073a:temp":21.9},"time_unix_s":1786000060}],"end_unix_s":1786000060,"interval_s":60,"point_count":2,"tolerance_s":0,"series_names":["urn:dev:ow:10e2073a:hum","urn:dev:ow:10e2073a:temp"],"start_unix_s":1786000000,"values_filled":3,"values_missing":1},"records":[{"name":"urn:dev:ow:10e2073a:temp","time":"2026-08-06T07:06:40.000Z","unit":"Cel","value":21.3,"value_type":"number","time_unix_s":1786000000},{"name":"urn:dev:ow:10e2073a:temp","time":"2026-08-06T07:07:40.000Z","unit":"Cel","value":21.9,"value_type":"number","time_unix_s":1786000060},{"name":"urn:dev:ow:10e2073a:hum","time":"2026-08-06T07:07:40.000Z","unit":"%RH","value":48,"value_type":"number","time_unix_s":1786000060}],"warnings":[],"stateless":true,"align_note":null,"record_count":3}}},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","required":["format","payload"],"properties":{"align":{"type":"boolean","default":false,"description":"Also return every numeric series on one shared time grid."},"format":{"enum":["senml_json","senml_cbor","lwm2m_tlv"],"type":"string","description":"Wire format of payload. senml_cbor and lwm2m_tlv expect base64."},"payload":{"description":"SenML records as a JSON array (or a JSON string holding one), or base64 for senml_cbor and lwm2m_tlv. At most 1000000 bytes after decoding; the service caps the whole request body at 256 KB."},"base_name":{"type":"string","maxLength":200,"description":"Prefix put in front of every resolved record name. For lwm2m_tlv this is where the device identity goes."},"interval_s":{"type":"number","default":60,"maximum":86400,"minimum":0.001,"description":"Grid spacing in seconds. The grid may not exceed 10000 points."},"max_records":{"type":"integer","default":5000,"maximum":20000,"minimum":1,"description":"Upper bound on records taken from the payload."},"tolerance_s":{"type":"number","default":0,"maximum":86400,"minimum":0,"description":"align_method=last only: how stale the carried value may be before the grid point is left empty. 0 means no limit."},"value_types":{"type":"object","description":"lwm2m_tlv only: resource id as key, one of integer, float, boolean, string, time, opaque as value. Ids left out come back as opaque base64 with a warning instead of a guessed type."},"align_method":{"enum":["last","mean","linear"],"type":"string","default":"last","description":"How a grid point is filled: last value at or before the point, mean over the bucket, or linear interpolation between neighbours."},"base_time_unix_s":{"type":"number","description":"Anchor in seconds since 1970 for records that carry no absolute time. SenML calls times below 2^28 relative to now; this endpoint is stateless and will not invent a now."}}},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}}}},"description":"Turns SenML (JSON or CBOR) and LwM2M TLV into one record shape: resolved name, unit, absolute timestamp, typed value. Optionally puts every series on a shared time axis with a chosen interval and fill rule (last value, bucket mean, linear). Works only on the payload you pass: no device is contacted, nothing is stored, the same request returns the same bytes. TLV carries no type on the wire; unmapped resource ids come back as opaque base64 with a warning instead of a guess.","lastUpdated":"2026-08-19T15:03:45.674Z","serviceName":"Netzhandwerker Agent Tools","x402Version":2}]}}