{"api":"v1","generated_at":"2026-11-01T17:54:02.014Z","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/api-zfinia-com-x402-v1-log-schema-contract-audit-cba489","pinned_page":"https://tollindex.com/e/api-zfinia-com-x402-v1-log-schema-contract-audit-cba489/at/2026-11-01T13-19Z","pinned":false,"method":"https://tollindex.com/ledger/method","snapshot_at":"2026-11-01T13:19:08.063Z","snapshot_stamp":"2026-11-01T13-19Z","endpoint":{"slug":"api-zfinia-com-x402-v1-log-schema-contract-audit-cba489","canonical_url":"https://api.zfinia.com/x402/v1/log-schema-contract-audit","resource":"https://api.zfinia.com/x402/v1/log-schema-contract-audit","http_method":"POST","type":"http","x402_version":2,"registries":[],"primary_registry":"cdp","curated_by_coinbase":false,"description":"Audit newline-delimited JSON logs against a contract, and across the whole set. The two findings that need every line at once: a field whose type varies between lines, so an index either rejects the minority or coerces them silently; and a message field with nearly as many distinct values as lines, which is interpolated rather than templated so nothing groups and cost scales with volume. Also reports absent required fields, a level differing only in case, and a timestamp with no offset.","service_name":"Log Schema Audit","declared_category":null,"declared_tags":["structured logging","data quality","observability","cost control","developer tooling"],"route_template":null,"registry_updated":"2026-10-04T08:33:15.895Z"},"derived":{"note":"fields no registry supplies; TOLL derives them and marks them derived on the page","title":"log schema contract audit","category":"communications","first_observed_by_toll":"2026-10-04T12:19:28.655Z","last_observed_by_toll":"2026-10-04T21:22:41.206Z","observation_began":"2026-09-10"},"presence":{"listed_now":false,"first_absent_at":"2026-10-05T05:36:47.069Z","delisting_confirmed_at":"2026-10-05T14:34:15.385Z","events":[{"registry":"cdp","at":"2026-10-04T12:19:28.656Z","event":"listed"},{"registry":"cdp","at":"2026-10-05T05:36:47.069Z","event":"delisted"},{"registry":"cdp","at":"2026-10-05T14:34:15.385Z","event":"delisting_confirmed"}]},"accepts":[{"registry":"cdp","ordinal":0,"network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","asset_name":"USD Coin","symbol":"USDC","decimals":6,"amount_display":"0.19 USDC","amount_units":0.19,"decimals_known":true,"pay_to":"0x25e8245f07d5e4873987293dad666afbe56a9608","scheme":"exact"}],"counters":{"observed_at":"2026-10-04T21:22:41.206Z","calls_30d":1,"unique_payers_30d":1,"last_called_at":"2026-10-04T08:33:09.402Z"},"validation":{"latest":{"observed_at":"2026-10-04T14:13:07.741Z","state":"pass","failed_checks":[],"endpoint_http_status":402,"run_id":"daily-2026-10-04"},"uptime":[{"days":7,"observed":0,"passed":0,"ratio":null},{"days":30,"observed":2,"passed":1,"ratio":0.5},{"days":90,"observed":2,"passed":1,"ratio":0.5}],"history_90d":[{"observed_at":"2026-10-04T14:13:07.741Z","state":"pass","failed_checks":[],"run_id":"daily-2026-10-04","state_changed":true},{"observed_at":"2026-10-04T12:48:35.547Z","state":"fail","failed_checks":["endpoint_reachable"],"run_id":"new-after-daily-2026-10-04","state_changed":true}]},"seller":{"wallet":"0x25e8245f07d5e4873987293dad666afbe56a9608","page":"https://tollindex.com/seller/0x25e8245f07d5e4873987293dad666afbe56a9608","endpoints":179,"hosts":5},"reports":0,"registry_record":{"cdp":[{"tags":["structured logging","data quality","observability","cost control","developer tooling"],"type":"http","accepts":[{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"name":"USD Coin","version":"2"},"payTo":"0x25e8245f07d5e4873987293dad666afbe56a9608","amount":"190000","scheme":"exact","network":"eip155:8453","maxTimeoutSeconds":60}],"quality":{"lastCalledAt":"2026-10-04T08:33:09.402Z","l30DaysTotalCalls":1,"l30DaysUniquePayers":1},"resource":"https://api.zfinia.com/x402/v1/log-schema-contract-audit","extensions":{"bazaar":{"info":{"input":{"body":{"logs":"{\"timestamp\":\"2026-10-02T12:00:00.000Z\",\"level\":\"info\",\"message\":\"request completed\",\"status\":200,\"duration_ms\":12}\n{\"timestamp\":\"2026-10-02T12:00:01.000Z\",\"level\":\"ERROR\",\"message\":\"request failed for order 8827341 after 3 retries\",\"status\":500,\"duration_ms\":\"940\"}\n{\"timestamp\":\"2026-10-02T12:00:02.000Z\",\"level\":\"info\",\"message\":\"request failed for order 8827342 after 1 retries\",\"status\":500,\"duration_ms\":880}\n{\"timestamp\":\"2026-10-02 12:00:03.000\",\"level\":\"warn\",\"message\":\"request failed for order 8827343 after 2 retries\",\"status\":503}\n{\"timestamp\":\"2026-10-02T12:00:04.000Z\",\"level\":\"info\",\"message\":\"request failed for order 8827344 after 1 retries\",\"status\":500,\"duration_ms\":790}\n{\"level\":\"info\",\"message\":\"request failed for order 8827345 after 4 retries\",\"status\":500,\"duration_ms\":1200}\n{\"timestamp\":\"2026-10-02T12:00:06.000Z\",\"level\":\"info\",\"message\":\"request failed for order 8827346 after 2 retries\",\"status\":500,\"duration_ms\":810}\n{\"timestamp\":\"2026-10-02T12:00:07.000Z\",\"level\":\"info\",\"message\":\"request failed for order 8827347 after 1 retries\",\"status\":500,\"duration_ms\":760}\n{\"timestamp\":\"2026-10-02T12:00:08.000Z\",\"level\":\"info\",\"message\":\"request failed for order 8827348 after 3 retries\",\"status\":500,\"duration_ms\":920}\n{\"timestamp\":\"2026-10-02T12:00:09.000Z\",\"level\":\"info\",\"message\":\"request failed for order 8827349 after 1 retries\",\"status\":500,\"duration_ms\":700}\n{not json at all","contract":{"field_types":{"status":"number","duration_ms":"number"},"required_fields":["timestamp","level","message","service"],"permitted_levels":["debug","info","warn","error"],"require_timestamp_offset":true}},"type":"http","method":"POST","bodyType":"json"},"output":{"type":"json","example":{"fields":[{"field":"timestamp","types":{"string":9}},{"field":"level","types":{"string":10}},{"field":"message","types":{"string":10}}],"limits":{"maxLines":20000,"maxSpans":10000,"maxFields":500,"maxSamples":20000,"maxFindings":500,"maxJsonBytes":2097152},"passed":false,"checked":{"field_types":2,"required_fields":4,"permitted_levels":4,"timestamp_offset":true},"complete":true,"findings":[{"code":"LINE_NOT_VALID_JSON","line":11,"detail":"Line 11 is not valid JSON: Expected property name or '}' in JSON at position 1 (line 1 column 2). Whatever ships this line is dropped by the collector."},{"code":"REQUIRED_FIELD_ABSENT","line":1,"field":"service","detail":"Line 1 is missing service, so whatever filters on it drops this line."},{"code":"REQUIRED_FIELD_ABSENT","line":2,"field":"service","detail":"Line 2 is missing service, so whatever filters on it drops this line."}],"conformant":false,"line_count":10,"request_id":"example-request","service_id":"log_schema_contract_audit","assumptions":["No log value is ever returned, only field names, types and counts. A log line is the one place a credential or a customer record is most likely to be, so echoing values back would be the problem rathe...","A field whose type varies between lines is reported because it is only visible across the whole set, and because an index either rejects the minority or coerces them without saying so.","A message field with nearly as many distinct values as lines is reported as interpolated rather than templated: the message is the grouping key, so cost then scales with volume instead of with distinc..."],"field_count":5,"limitations":["The lines supplied against the contract supplied. What a particular backend does with them, and whether the values are true, are outside this.","conformant is true only when every line parsed and every check that ran found nothing."],"observed_at":"2026-10-02T00:00:00.000Z","not_examined":[],"finding_count":18,"service_version":"1.0.0","findings_by_code":{"TIMESTAMP_ABSENT":1,"LEVEL_CASE_DIFFERS":1,"FIELD_TYPE_MISMATCH":1,"LINE_NOT_VALID_JSON":1,"REQUIRED_FIELD_ABSENT":11,"TIMESTAMP_WITHOUT_OFFSET":1,"FIELD_TYPE_VARIES_BETWEEN_LINES":1,"MESSAGE_IS_INTERPOLATED_NOT_TEMPLATED":1},"with_timestamp_count":9,"distinct_message_count":10}}},"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":["logs","contract"],"properties":{"logs":{"type":"string","maxLength":2097152},"contract":{"type":"object","properties":{"field_types":{"type":"object"},"level_field":{"type":"string","maxLength":128},"message_field":{"type":"string","maxLength":128},"required_fields":{"type":"array","items":{"type":"string","maxLength":256},"maxItems":500,"minItems":1},"timestamp_field":{"type":"string","maxLength":128},"permitted_levels":{"type":"array","items":{"type":"string"},"maxItems":50,"minItems":1},"require_timestamp_offset":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"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":"Audit newline-delimited JSON logs against a contract, and across the whole set. The two findings that need every line at once: a field whose type varies between lines, so an index either rejects the minority or coerces them silently; and a message field with nearly as many distinct values as lines, which is interpolated rather than templated so nothing groups and cost scales with volume. Also reports absent required fields, a level differing only in case, and a timestamp with no offset.","lastUpdated":"2026-10-04T08:33:15.895Z","serviceName":"Log Schema Audit","x402Version":2}]}}