{"slug":"api-zfinia-com-x402-v1-span-attribute-contract-audit-7fdc6f","title":"Hold spans to an attribute convention the caller states, including per span kind","host":"api.zfinia.com","method":"POST","resource":"https://api.zfinia.com/x402/v1/span-attribute-contract-audit","category":"code","description":"Hold spans to an attribute convention the caller states, including per span kind. The finding that matters most: a span name embedding an identifier. The name is the aggregation key, so a name per call means every call is its own operation and no latency distribution exists for it; identifiers belon","price_listed":0.16,"price_asked":0.16,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":6287,"reported_calls_30d":1,"reported_payers_30d":1,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"contract":{"forbid_high_cardinality_names":true,"forbidden_attributes":["http.request.header.authorization"],"require_known_kind":true,"required_attributes":["service.name"],"required_by_kind":{"SPAN_KIND_CLIENT":["db.system"],"SPAN_KIND_SERVER":["http.request.method","http.route"]}},"spans":"[\n {\n  \"trace_id\": \"t1\",\n  \"span_id\": \"a\",\n  \"name\": \"GET /orders\",\n  \"kind\": \"SPAN_KIND_SERVER\",\n  \"start_time\": \"2026-10-02T12:00:00.000Z\",\n  \"end_time\": \"2026-10-02T12:00:00.500Z\",\n  \"attributes\": {\n   \"http.request.method\": \"GET\",\n   \"http.route\": \"/orders\"\n  }\n },\n {\n  \"trace_id\": \"t1\",\n  \"span_id\": \"b\",\n  \"parent_span_id\": \"a\",\n  \"name\": \"SELECT orders\",\n  \"kind\": \"SPAN_KIND_CLIENT\",\n  \"start_time\": \"2026-10-02T11:59:59.960Z\",\n  \"end_time\": \"2026-10-02T12:00:00.200Z\",\n  \"attributes\": {}\n },\n {\n  \"trace_id\": \"t1\",\n  \"span_id\": \"c\",\n  \"parent_span_id\": \"zz\",\n  \"name\": \"cache.get\",\n  \"start_time\": \"2026-10-02T12:00:00.100Z\",\n  \"end_time\": \"2026-10-02T12:00:00.110Z\",\n  \"attributes\": {}\n },\n {\n  \"trace_id\": \"t2\",\n  \"span_id\": \"d\",\n  \"name\": \"GET /orders/8827341/items\",\n  \"kind\": \"HTTP_SERVER\",\n  \"start_time\": \"2026-10-02T12:00:01.000\",\n  \"end_time\": \"2026-10-02T12:00:01.300Z\",\n  \"attributes\": {\n   \"http.request.method\": \"GET\"\n  }\n }\n]"},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"properties":{"contract":{"additionalProperties":false,"properties":{"forbid_high_cardinality_names":{"type":"boolean"},"forbidden_attributes":{"items":{"maxLength":256,"type":"string"},"maxItems":200,"minItems":1,"type":"array"},"require_known_kind":{"type":"boolean"},"required_attributes":{"items":{"maxLength":256,"type":"string"},"maxItems":200,"minItems":1,"type":"array"},"required_by_kind":{"type":"object"}},"type":"object"},"spans":{"maxLength":2097152,"type":"string"}},"required":["spans","contract"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-10-04","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.16,"price_match":true,"latency_ms":6287,"error":null}],"description_full":"Hold spans to an attribute convention the caller states, including per span kind. The finding that matters most: a span name embedding an identifier. The name is the aggregation key, so a name per call means every call is its own operation and no latency distribution exists for it; identifiers belong in attributes. Also reports a required attribute absent, an attribute the contract forbids, reported by key and never by value, and an unrecognised span kind.","last_updated":"2026-10-04T08:34:34.149Z","schemes":["exact"]}