# Promotion Observations — Duplicate Key Report + Missing-Value Fill

> Promotion Observations — Duplicate Key Report + Missing-Value Fill is a paid API for AI agents from market.datapackvibe.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-22).

Analyzes up to 200 promotion observation rows to produce a duplicate key report and fill missing values in discount_amount or units_sold fields using zero, mean, or median imputation.

## Facts

- Endpoint: POST https://market.datapackvibe.com/x402/assistant-ib26-retail-05-070?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-22
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/promotion-observations-duplicate-key-report-missing-value-fill-15a95d8d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_edQ-P2rUKGmFU3J4UlQ9G

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability promotion-observations-duplicate-key-report-missing-value-fill-15a95d8d -d '<json body>'
```

Example prompt: Can you check my promotion observations for duplicate row IDs and also fill in any missing discount_amount values using the median — I have about 50 rows with store_group, date, and units_sold fields?

## When to prefer this

Use this endpoint when you have promotion observation data (up to 200 rows) that needs simultaneous duplicate key detection and missing-value imputation in a single paid call. It is ideal for retail data preparation workflows where both data integrity checks and null handling are needed before downstream analysis, without requiring any external lookups or predictions.

## Known failure modes

- Input array exceeds 200 rows — request rejected
- Invalid date format (not YYYY-MM-DD) — schema validation error
- Unknown imputation method outside zero/mean/median enum — rejected
- Empty rows array — minimum 1 row required
- Field value outside allowed numeric range — schema rejection
- Payment not fulfilled — x402 payment required response

## How this service works

Promotion observations — Duplicate key report + Explicit missing-value fill: Duplicate key report + Explicit missing-value fill for supplied promotion observations records (discount_amount, units_sold). Up to 200 rows; 2 independent reports using shared local analytical engines. No live lookup, prediction, professional assessment or external action. 0.01 USDC includes 2 supplied-data reports for up to 200 rows.

## Output

Returns two independent reports: (1) a duplicate key report identifying rows with repeated row_id values, and (2) an explicit missing-value fill report showing the target field (discount_amount or units_sold) with nulls replaced by the chosen method (zero, mean, or median). Both reports are computed locally without any external data lookups.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "rows": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "row_id",
     "store_group",
     "date",
     "discount_amount",
     "units_sold"
    ],
    "properties": {
     "date": {
      "type": "string",
      "default": "",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "maxLength": 10
     },
     "row_id": {
      "type": "string",
      "default": "",
      "maxLength": 80,
      "minLength": 1
     },
     "units_sold": {
      "type": [
       "number",
       "null"
      ],
      "maximum": 1000000000000,
      "minimum": -1000000000000
     },
     "store_group": {
      "type": "string",
      "default": "",
      "maxLength": 80
     },
     "discount_amount": {
      "type": [
       "number",
       "null"
      ],
      "maximum": 1000000000000,
      "minimum": -1000000000000
     }
    },
    "additionalProperties": false
   },
   "default": [
    {
     "date": "2026-10-01",
     "row_id": "row-1",
     "units_sold": 1,
     "store_group": "group-a",
     "discount_amount": 10
    },
    {
     "date": "2026-10-02",
     "row_id": "row-2",
     "units_sold": 2,
     "store_group": "group-b",
     "discount_amount": 20
    },
    {
     "date": "2026-10-03",
     "row_id": "row-3",
     "units_sold": 3,
     "store_group": "group-a",
     "discount_amount": 15
    },
    {
     "date": "2026-10-04",
     "row_id": "row-4",
     "units_sold": 4,
     "store_group": "group-b",
     "discount_amount": 30
    }
   ],
   "maxItems": 200,
   "minItems": 1
  },
  "field": {
   "enum": [
    "discount_amount",
    "units_sold"
   ],
   "type": "string",
   "default": "discount_amount"
  },
  "method": {
   "enum": [
    "zero",
    "mean",
    "median"
   ],
   "type": "string",
   "default": "median"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/promotion-observations-duplicate-key-report-missing-value-fill-15a95d8d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from market.datapackvibe.com](https://www.zero.xyz/host/market.datapackvibe.com/llms.txt)
