{"openapi":"3.0.1","info":{"title":"MNTN AI OPS REPORTING API","description":"## Overview\n\nThe MNTN AI OPS API provides programmatic access to MNTN AI Operations Teams Reporting needs.\nIt enables partners and customers to retrieve performance data, metrics, and insights through a RESTful API interface.\n\n## Key Features\n\n- **Self-service reporting**: Access and customize MNTN reporting data programmatically\n- **Multiple data formats**: Support for JSON, CSV, Excel, and human-readable formats\n- **Flexible filtering**: Advanced filtering capabilities for precise data retrieval\n- **Real-time data access**: Get up-to-date AI operations performance metrics\n\n## Table Types\n\nThe API provides access to two distinct types of data tables:\n\n### 📊 Info Tables\n**Dimensions and metadata for your AI operations setup**\n- Tables end with \"Info\" in their name\n- Used to define dimensions for grouping data\n- Examples: `CampaignInfo`, `StateInfo`\n\n### 📈 Summary Tables\n**Performance metrics and calculated values**\n- Contains numeric data: predictions, processing time, accuracy scores\n- Includes calculated metrics: error rates, efficiency scores, model performance\n- Data is grouped by day and can be joined with any Info table\n- Primary table: `Graph`\n\n## Available Endpoints\n\n### `/aiops/list`\nReturns a comprehensive list of all available tables and columns with descriptions.\n\n**Example Request:**\n```\nGET /aiops/list?format=json&nodatatiercheck=<<YOUR KEY>>\n```\n\n### `/aiops/data`\nRetrieves actual data based on your query parameters.\n\n**Example Request:**\n```json\n{\n  \"aid\": [\"30506\"],\n  \"data\": [\"campaigninfo.name\",\"graph.impressions\"],\n  \"filter\": {\n    \"campaigninfo.status\": {\"equals\": \"Live\"}\n  },\n  \"begin\": \"2025-07-01\",\n  \"end\": \"2025-07-31\",\n  \"format\": \"json\",\n  \"fullname\": true,\n  \"includeToday\": false\n}\n```\nPlease pass in \"nodatatiercheck\": \"<<YOUR KEY>>\" if you need admin level data\n## Request Parameters\n\n### Required Parameters\n\n| Parameter | Description | Example |\n|-----------|-------------|---------|\n| `aid` | Account ID(s) | 100 |\n| `begin` | Start date (YYYY-MM-DD) or predefined range | `2024-01-01` or `mtd` |\n| `data` | Comma-separated list of columns to retrieve | `campaigninfo.name,graph.conversions` |\n\n### Optional Parameters\n\n| Parameter | Description | Example |\n|-----------|-------------|---------|\n| `end` | End date (YYYY-MM-DD) | `2024-01-31` |\n| `filter` | Filter constraints | `{\"campaigninfo.status\": {\"equals\": \"Live\"}}` |\n| `sum` | Columns to group by | `[\"campaigninfo.name\"]` |\n| `format` | Response format (json, csv, excel, human) | `json` |\n| `sort` | Sort column and direction | `graph.impressions desc` |\n| `limit` | Maximum rows to return | `1000` |\n| `offset` | Starting row for pagination | `100` |\n| `nodatatiercheck` | the key that you will pass to get all the metrics (including admin metrics) | <<YOUR KEY>> |\n\n## Rate Limits & Best Practices\n\n- CSV/Excel exports limited to 65,535 rows\n- Use pagination (`limit` and `offset`) for large datasets\n- Cache frequently accessed data when possible\n- Use specific date ranges to reduce data volume\n","version":"3.9.0"},"servers":[{"url":"https://api3.mountain.com","description":"Generated server url"}],"tags":[{"name":"API","description":"Public metadata list (`/apilist`)"},{"name":"Batch","description":"Async CSV exports under **`/batch`…** (submit, poll status, signed download URLs)"},{"name":"API","description":"Public reporting data (`/apidata`)"}],"paths":{"/batch":{"get":{"tags":["Batch"],"summary":"List export jobs","description":"Returns a page of batch jobs for the authenticated advertiser. Optional `status` filters to comma-separated values: QUEUED, PROCESSING, SUCCEEDED, FAILED.","operationId":"listExports","parameters":[{"name":"status","in":"query","description":"Comma-separated status filter (QUEUED, PROCESSING, SUCCEEDED, FAILED)","required":false,"schema":{"type":"string"}},{"name":"key","in":"query","description":"API key","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"offset","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32","default":0}}],"responses":{"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Invalid query parameters (for example malformed `status`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"Paged list of exports","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportListResponse"}}}}}},"post":{"tags":["Batch"],"summary":"Submit an async export job","description":"Queues a CSV export for the authenticated advertiser. Returns **202 Accepted** with a `batchId` and initial status; poll `GET /batch/{batchId}` until `SUCCEEDED`, then use the signed `downloadUrl`.","operationId":"submitExport","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"}}},"required":true},"responses":{"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Validation or invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"202":{"description":"Job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportResponse"}}}}}}},"/batch/{batchId}/regenerate-url":{"post":{"tags":["Batch"],"summary":"Issue a freshly-signed download URL for a SUCCEEDED batch","description":"Returns a new signed URL for the result file without re-executing the query. Effect is equivalent to re-calling GET /batch/{batchId}, but the response carries only the URL fields — no other batch metadata.","operationId":"regenerateUrl","parameters":[{"name":"batchId","in":"path","description":"Batch job identifier.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"key","in":"query","description":"Advertiser API key.","required":true,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Batch not found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Batch is queued or processing","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Batch is in a terminal non-downloadable state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateUrlResponse"}}}},"200":{"description":"Fresh signed URL issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateUrlResponse"}}}},"410":{"description":"Result is permanently unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateUrlResponse"}}}},"503":{"description":"Signing subsystem temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateUrlResponse"}}}}}}},"/apidata":{"get":{"tags":["API"],"summary":"Run a reporting query (GET)","description":"Validates the API `key`, resolves the advertiser, and executes a reporting query. Prefer **POST /apidata** when sending a large **`filter`** object.","operationId":"getData","parameters":[{"name":"query","in":"query","required":true,"schema":{"$ref":"#/components/schemas/GetRequest"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests. See [Batch docs](https://api3.mountain.com/docs#batch/description/overview).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"Report data in the requested format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonDataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/CsvDataResponse"},"examples":{"CSV data":{"description":"CSV data","value":"Day,Sold Impressions,Remaining Impressions,Sales\n2025-07-01,1500000,500000,25000.50\n2025-07-02,1750000,250000,28500.75\n2025-07-03,1600000,400000,26200.00"}}},"text/plain":{"schema":{"$ref":"#/components/schemas/HumanDataResponse"},"examples":{"Human-readable data":{"description":"Human-readable data","value":"             Day Sold Impressions Remaining Impressions      Sales\n1:    2025-07-01          1500000                500000   25000.50\n2:    2025-07-02          1750000                250000   28500.75\n3:    2025-07-03          1600000                400000   26200.00"}}}}}}},"post":{"tags":["API"],"summary":"Run a reporting query (POST)","description":"Same semantics as GET, with a JSON body for `filter`, column lists, and pagination. Recommended for non-trivial `filter` payloads.","operationId":"postData","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataRequest"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests. See [Batch docs](https://api3.mountain.com/docs#batch/description/overview).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"Report data in the requested format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonDataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/CsvDataResponse"},"examples":{"CSV data":{"description":"CSV data","value":"Day,Sold Impressions,Remaining Impressions,Sales\n2025-07-01,1500000,500000,25000.50\n2025-07-02,1750000,250000,28500.75\n2025-07-03,1600000,400000,26200.00"}}},"text/plain":{"schema":{"$ref":"#/components/schemas/HumanDataResponse"},"examples":{"Human-readable data":{"description":"Human-readable data","value":"             Day Sold Impressions Remaining Impressions      Sales\n1:    2025-07-01          1500000                500000   25000.50\n2:    2025-07-02          1750000                250000   28500.75\n3:    2025-07-03          1600000                400000   26200.00"}}}}}}}},"/select/apidata":{"get":{"tags":["mss-api-controller"],"summary":"MSS Get Data Query","description":"After validating the user request api key runs a query against the reporting data service","operationId":"getData_1","parameters":[{"name":"query","in":"query","required":true,"schema":{"$ref":"#/components/schemas/MSSGetRequest"}}],"responses":{"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/ping":{"get":{"tags":["ping-controller"],"operationId":"ping","responses":{"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/docs":{"get":{"tags":["scalar-web-mvc-controller"],"operationId":"getDocs","responses":{"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/docs/scalar.js":{"get":{"tags":["scalar-web-mvc-controller"],"operationId":"getScalarJs","responses":{"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}}}}},"/batch/{batchId}":{"get":{"tags":["Batch"],"summary":"Get batch status (includes signed download URL when eligible)","description":"Returns the batch status. When the batch is SUCCEEDED and within retention, a freshly-signed download URL is included in the response. The URL is generated on every call — clients should not treat it as stable.","operationId":"getExportStatus","parameters":[{"name":"batchId","in":"path","description":"Batch job identifier returned from **POST /batch**.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"key","in":"query","description":"Advertiser API key (same as **GET /batch** list).","required":true,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Batch not found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"Batch status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportStatusResponse"}}}},"503":{"description":"Signing subsystem temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportStatusResponse"}}}}}}},"/apilist":{"get":{"tags":["API"],"summary":"List reporting metadata","description":"Returns tables, columns and help text available to the advertiser (same `key` and `format` query parameters as **GET /apidata**). \n The response shape depends on `format`: `json` returns a structured JSON object, while `csv`, `excel`, and `human` return tabular text/binary representations of the same metadata. \n There is **no** `filter` query parameter on this route; call **`/apidata`** to apply **`filter`**. Use **`/apilist`** first to discover column identifiers for `data`, `sum`, and `filter`.","operationId":"list","parameters":[{"name":"key","in":"query","description":"Advertiser API key (required on every request).","required":true,"schema":{"type":"string"},"example":"YOUR_API_KEY"},{"name":"format","in":"query","description":"defines the content type of the response","schema":{"type":"string","enum":["human","json","csv","excel"],"default":"human"}}],"responses":{"500":{"description":"An unexpected error occurred while processing the request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"413":{"description":"Payload Too Large — the query exceeds server memory limits. Use the asynchronous /batch endpoint for large requests.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"504":{"description":"Gateway Timeout — the query exceeded the synchronous request time limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"200":{"description":"Metadata payload in the requested format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMetadataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/CsvListResponse"},"examples":{"CSV metadata":{"description":"CSV metadata","value":"Inventory.Day,The date of the data,\nInventory.SoldImpressions,Number of impressions sold,\nInventory.RemainingImpressions,Number of impressions remaining,\nDealInfo.DealId,Unique identifier for the deal,\nDealInfo.DealName,Name of the deal,"}}},"text/plain":{"schema":{"$ref":"#/components/schemas/HumanListResponse"},"examples":{"Human-readable metadata":{"description":"Human-readable metadata","value":"Inventory\n  Day                    The date of the data\n  SoldImpressions        Number of impressions sold\n  RemainingImpressions   Number of impressions remaining\n\nDealInfo\n  DealId                 Unique identifier for the deal\n  DealName               Name of the deal"}}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"$ref":"#/components/schemas/ExcelListResponse"}}}}}}}},"components":{"schemas":{"JsonDataResponse":{"title":"JSON Data Response","type":"object","properties":{"report-name":{"type":"string","description":"Name of the report","example":"Report"},"publisher-name":{"type":"string","description":"Name of the advertiser or 'Grouped Advertisers'","example":"Example Advertiser"},"begin":{"type":"string","description":"Start date/time of the data range","example":"2025-07-01T00:00:00"},"end":{"type":"string","description":"End date/time of the data range","example":"2025-08-15T23:59:59"},"columns":{"type":"array","description":"Metadata about each column in the response","items":{"type":"object","properties":{"table":{"type":"string","description":"Table name in lowercase","example":"inventory"},"name":{"type":"string","description":"Column name in lowercase","example":"day"},"friendly":{"type":"string","description":"User-friendly column name","example":"Day"},"alias":{"type":"string","description":"Column alias (if applicable)","example":"Day"},"help":{"type":"string","description":"Column description","example":"The date of the data"},"format":{"type":"string","description":"Data format type (date, number, text, percentage, etc.)","example":"date"},"icon":{"type":"string","description":"Icon type for UI display","example":"calendar"},"friendly-suffix":{"type":"string","description":"Suffix for display (e.g., '%' for percentages)","example":""},"target_direction_negative":{"description":"Whether lower values are better","example":false}}}},"rows":{"type":"array","description":"Array of data rows, each containing column name-value pairs","items":{"type":"object","description":"Each row contains key-value pairs where keys are column names","example":"{Day=2025-07-01, SoldImpressions=1500000, RemainingImpressions=500000, Sales=25000.50}"}}},"description":"Response format when format=json is specified","example":"{report-name=Report, advertiser-name=Example Publisher, begin=2025-07-01T00:00:00, end=2025-08-15T23:59:59, columns=[{table=inventory, name=day, friendly=Day, alias=Day, help=The date of the data, format=date, icon=calendar, friendly-suffix=}, {table=inventory, name=soldimpressions, friendly=Sold Impressions, alias=SoldImpressions, help=Number of impressions sold, format=number, icon=chart, friendly-suffix=}, {table=inventory, name=remainingimpressions, friendly=Remaining Impressions, alias=RemainingImpressions, help=Number of impressions remaining, format=number, icon=chart, friendly-suffix=}, {table=inventory, name=sales, friendly=Sales, alias=Sales, help=Total sales amount, format=currency, icon=dollar, friendly-suffix=$}], rows=[{Day=2025-07-01, SoldImpressions=1500000, RemainingImpressions=500000, Sales=25000.50}, {Day=2025-07-02, SoldImpressions=1750000, RemainingImpressions=250000, Sales=28500.75}, {Day=2025-07-03, SoldImpressions=1600000, RemainingImpressions=400000, Sales=26200.00}]}"},"CsvDataResponse":{"title":"CSV Data Response","type":"string","description":"Response format when format=csv is specified. Returns data in CSV format with headers.","example":"Day,Sold Impressions,Remaining Impressions,Sales\n2025-07-01,1500000,500000,25000.50\n2025-07-02,1750000,250000,28500.75\n2025-07-03,1600000,400000,26200.00"},"HumanDataResponse":{"title":"Human-Readable Data Response","type":"string","description":"Response format when format=human is specified (default). Returns data in a formatted text table.","example":"             Day Sold Impressions Remaining Impressions      Sales\n1:    2025-07-01          1500000                500000   25000.50\n2:    2025-07-02          1750000                250000   28500.75\n3:    2025-07-03          1600000                400000   26200.00"},"ProblemDetail":{"title":"Problem Detail (RFC 9457)","type":"object","properties":{"type":{"type":"string","description":"A URI reference that identifies the problem type","example":"https://api3.mntn.com/problems/query-timeout"},"title":{"type":"string","description":"A short, human-readable summary of the problem type (stable across occurrences)","example":"Gateway Timeout"},"status":{"type":"integer","description":"The HTTP status code","format":"int32","example":504},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"Gateway Timeout"},"instance":{"type":"string","description":"A URI reference that identifies the specific occurrence of the problem (request path)","example":"/data?aid=12345"},"timestamp":{"type":"string","description":"ISO 8601 timestamp when the error occurred","example":"2026-01-08T17:21:59.445461Z"},"errorCode":{"type":"string","description":"Internal error code for support reference","example":"QUERY_TIMEOUT"},"traceId":{"type":"string","description":"OpenTelemetry trace ID for debugging and support","example":"64a8b3c2d1e0f9876543210abcdef123"},"errors":{"type":"array","description":"Array of validation errors (for 400 Bad Request responses)","items":{"type":"object","properties":{"field":{"type":"string","description":"Field name that failed validation","example":"aid"},"message":{"type":"string","description":"Error message","example":"Advertiser ID is required"}}}}},"description":"Standard error response format following RFC 9457 (Problem Details for HTTP APIs).\n\nAll error responses include machine-readable problem types and human-readable details.\nSee: https://www.rfc-editor.org/rfc/rfc9457.html","example":"{Invalid API Key (401)={type=https://api3.mntn.com/problems/authorization-error, title=Invalid API Key, status=401, detail=The provided API key 'abc123...' is not valid, instance=/apidata, timestamp=2026-01-08T17:21:59.445461Z, errorCode=INVALID_API_KEY, traceId=64a8b3c2d1e0f9876543210abcdef123}, Validation Error (400)={type=https://api3.mntn.com/problems/general-request-error, title=Bad Request, status=400, detail=Request validation failed, instance=/apidata, timestamp=2026-01-08T17:21:59.445461Z, errorCode=GENERAL_REQUEST_ERROR, errors=[{field=aid, message=Advertiser ID is required}, {field=begin, message=Start date is required}]}, Metadata Error (400)={type=https://api3.mntn.com/problems/metadata-error, title=Metadata Error, status=400, detail=Table 'Inventory1' does not exist, instance=/apidata?aid=12345, timestamp=2026-01-08T17:21:59.445461Z, errorCode=METADATA_ERROR, traceId=64a8b3c2d1e0f9876543210abcdef123}, Query Timeout (504)={type=https://api3.mntn.com/problems/query-timeout, title=Gateway Timeout, status=504, detail=Gateway Timeout, instance=/apidata?aid=12345&begin=2020-01-01&end=2025-12-31, timestamp=2026-01-08T17:21:59.445461Z, traceId=64a8b3c2d1e0f9876543210abcdef123}, Resource Limit Exceeded (400)={type=https://api3.mntn.com/problems/resource-limit-exceeded, title=Resource Limit Exceeded, status=400, detail=Query returned too many rows. Please narrow your date range or refine `filter`., instance=/data?aid=12345&begin=2020-01-01&end=2025-12-31, timestamp=2026-01-08T17:21:59.445461Z, errorCode=RESOURCE_LIMIT_EXCEEDED, traceId=64a8b3c2d1e0f9876543210abcdef123}, Internal Server Error (500)={type=https://api3.mntn.com/problems/internal-error, title=Internal Server Error, status=500, detail=An unexpected error occurred while processing the request, instance=/apidata, timestamp=2026-01-08T17:21:59.445461Z, errorCode=NA, traceId=64a8b3c2d1e0f9876543210abcdef123}}"},"ErrorResponse":{"description":"HTTP error / validation payload (RFC 9457); same schema as ProblemDetail","allOf":[{"$ref":"#/components/schemas/ProblemDetail"}]},"ValidationError":{"title":"Validation Error","type":"object","properties":{"field":{"type":"string","description":"Field name that failed validation","example":"aid"},"message":{"type":"string","description":"Error message","example":"Advertiser ID is required"}},"description":"Individual validation error detail"},"ListMetadataResponse":{"title":"List Metadata Response","type":"object","properties":{"tables":{"type":"array","description":"List of available tables","items":{"type":"object","properties":{"name":{"type":"string","description":"Table name","example":"Inventory"},"friendly":{"type":"string","description":"User-friendly table name","example":"Inventory Data"},"help":{"type":"string","description":"Table description","example":"Contains inventory information"},"columns":{"type":"array","description":"List of columns in this table","items":{"type":"object","properties":{"name":{"type":"string","description":"Column name","example":"Day"},"friendly":{"type":"string","description":"User-friendly column name","example":"Day"},"help":{"type":"string","description":"Column description","example":"The date of the data"},"format":{"type":"string","description":"Data format type","example":"date"},"icon":{"type":"string","description":"Icon type for UI","example":"calendar"},"table":{"type":"string","description":"Parent table name","example":"Inventory"},"fully_qualified_name":{"type":"string","description":"Full column path","example":"Inventory.Day"}}}}}}}},"description":"Response containing available tables and columns metadata","example":"{tables=[{name=Inventory, friendly=Inventory Data, help=Contains inventory and impressions data, columns=[{name=Day, friendly=Day, help=The date of the data, format=date, icon=calendar, table=Inventory, fully_qualified_name=Inventory.Day}, {name=SoldImpressions, friendly=Sold Impressions, help=Number of impressions sold, format=number, icon=chart, table=Inventory, fully_qualified_name=Inventory.SoldImpressions}, {name=RemainingImpressions, friendly=Remaining Impressions, help=Number of impressions remaining, format=number, icon=chart, table=Inventory, fully_qualified_name=Inventory.RemainingImpressions}]}, {name=DealInfo, friendly=Deal Information, help=Contains deal and pricing information, columns=[{name=DealId, friendly=Deal ID, help=Unique identifier for the deal, format=text, icon=key, table=DealInfo, fully_qualified_name=DealInfo.DealId}, {name=DealName, friendly=Deal Name, help=Name of the deal, format=text, icon=text, table=DealInfo, fully_qualified_name=DealInfo.DealName}]}]}"},"CsvListResponse":{"title":"CSV Metadata Response","type":"string","description":"Response format when format=csv is specified. Returns one row per column with no header row. Note: this output is comma-delimited but fields are not CSV-escaped (help text and tags may contain commas); use format=json for machine parsing.","example":"Inventory.Day,The date of the data,\nInventory.SoldImpressions,Number of impressions sold,\nInventory.RemainingImpressions,Number of impressions remaining,\nDealInfo.DealId,Unique identifier for the deal,\nDealInfo.DealName,Name of the deal,"},"HumanListResponse":{"title":"Human-Readable Metadata Response","type":"string","description":"Response format when format=human is specified (default). Returns a formatted text table: each table name followed by its indented columns, column help text, and optional [tags].","example":"Inventory\n  Day                    The date of the data\n  SoldImpressions        Number of impressions sold\n  RemainingImpressions   Number of impressions remaining\n\nDealInfo\n  DealId                 Unique identifier for the deal\n  DealName               Name of the deal"},"ExcelListResponse":{"title":"Excel Metadata Response","type":"string","description":"Response format when format=excel is specified. Returns a downloadable attachment with .xlsx filename; for `/apilist` this currently contains the same CSV rows as format=csv (not a native XLSX workbook).","format":"binary"},"And":{"type":"object","allOf":[{"$ref":"#/components/schemas/Filter"}]},"DataColumn":{"required":["type"],"type":"object","properties":{"alias":{"type":"string"},"friendly":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}},"description":"List of data columns to query","discriminator":{"propertyName":"type"}},"ExportRequest":{"title":"Batch Request","required":["begin","data","key"],"type":"object","properties":{"key":{"type":"string","description":"API Key"},"data":{"type":"array","description":"List of data columns to query","items":{"oneOf":[{"$ref":"#/components/schemas/FilteredColumn"},{"$ref":"#/components/schemas/SimpleColumn"}]}},"begin":{"type":"string","description":"Start date (YYYY-MM-DD) or keyword"},"end":{"type":"string","description":"End date (YYYY-MM-DD); required when begin is an explicit date and ignored for keyword begin"},"format":{"type":"string","description":"Output format","enum":["csv"],"default":"csv"},"fullname":{"type":"boolean","description":"Include table prefix in column names","default":false},"includetoday":{"type":"boolean","description":"Include current day's partial data","default":false},"limit":{"type":"integer","description":"Max rows returned; defaults to the configured export maximum when omitted","format":"int32"},"offset":{"type":"integer","description":"Row offset for pagination","format":"int32","default":0},"sort":{"type":"array","description":"Sort order (column direction)","items":{"type":"string","description":"Sort order (column direction)"}},"sum":{"type":"array","description":"Group-by columns","items":{"type":"string","description":"Group-by columns"}},"reportName":{"type":"string","description":"Optional report name for identification"},"filter":{"$ref":"#/components/schemas/Filter"},"allownull":{"type":"boolean"},"formatdata":{"type":"boolean"},"nodatatiercheck":{"type":"string"},"period":{"type":"string"},"dataColumns":{"type":"array","items":{"type":"string"}}},"description":"Batch Request"},"Filter":{"title":"Filter","type":"object","additionalProperties":true,"description":"Optional JSON **object** that restricts which rows are returned. Use the same shape for **POST** `filter` and **GET** `filter` (URL-encoded).\n\n**Filter types — column predicates:** Each property key is a column identifier (`table.column`). The value can be:\n- **Operator object:** keys are operator names and values are comparison values (for example `{\"equals\": \"Live\"}`, `{\"in\": [\"a\",\"b\"]}`).\n- **Scalar** (string or number): shorthand for `equals`.\n- **Array:** shorthand for membership (`in`).\n\n**Filter types — logical groups:** Properties named `AND`, `OR`, or `NOT` hold a nested object that follows the same rules (more column predicates and/or nested `AND` / `OR` / `NOT`).\n\n**Operator keys** (allowed keys inside an operator object): `equals`, `not`, `in`, `notIn`, `lt`, `lte`, `gt`, `gte`, `contains`, `notContains`, `startsWith`, `endsWith`, `hasAny`.\n\nUse **GET /apilist** to discover valid column identifiers (for `data`, `sum`, and `filter`).","example":"{\"campaigninfo.id\":{\"in\":[\"28915\"]},\"OR\":{\"campaigninfo.status\":{\"equals\":\"Live\"},\"graph.impressions\":{\"gte\":1000}}}"},"FilteredColumn":{"type":"object","allOf":[{"$ref":"#/components/schemas/DataColumn"},{"type":"object","properties":{"filter":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/And"},{"$ref":"#/components/schemas/Not"},{"$ref":"#/components/schemas/Or"},{"$ref":"#/components/schemas/Value"}]}},"nullReplacement":{"type":"object"}}}]},"Not":{"type":"object","allOf":[{"$ref":"#/components/schemas/Filter"}]},"Or":{"type":"object","allOf":[{"$ref":"#/components/schemas/Filter"}]},"SimpleColumn":{"type":"object","allOf":[{"$ref":"#/components/schemas/DataColumn"}]},"Value":{"type":"object","allOf":[{"$ref":"#/components/schemas/Filter"},{"type":"object","properties":{"field":{"type":"string"},"operator":{"type":"string","enum":["EQUALS","NOT","IN","NOT_IN","LT","LTE","GT","GTE","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","HAS_ANY"]},"value":{"type":"object"}}}]},"ExportResponse":{"type":"object","properties":{"batchId":{"type":"integer","format":"int64"},"status":{"type":"string"},"submittedAt":{"type":"string"},"reportName":{"type":"string"}}},"RegenerateUrlResponse":{"type":"object","properties":{"downloadUrl":{"type":"string"},"downloadExpiresAt":{"type":"string"}}},"DataRequest":{"title":"Data Request (POST)","required":["begin","data","key"],"type":"object","properties":{"key":{"type":"string","description":"Advertiser API key (required on every request).","example":"YOUR_API_KEY"},"data":{"type":"array","description":"Columns to return. Each item is either a column identifier string or a filtered column object. Use **GET /apilist** to discover valid column identifiers (for `data`, `sum`, and `filter`).","example":["graph.impressions","graph.conversions"],"items":{"oneOf":[{"$ref":"#/components/schemas/FilteredColumn"},{"$ref":"#/components/schemas/SimpleColumn"}]}},"sum":{"type":"array","items":{"type":"string","description":"Optional grouping columns (same identifier style as `data`). Use **GET /apilist** to discover valid column identifiers (for `data`, `sum`, and `filter`).","example":"campaigninfo.name"}},"filter":{"$ref":"#/components/schemas/Filter"},"begin":{"type":"string","description":"start date of the query","example":"2020-01-01"},"end":{"type":"string","description":"end date of the query","example":"2023-12-31"},"format":{"type":"string","description":"defines the content type of the response","enum":["human","json","csv","excel"],"default":"human"},"formatdata":{"type":"boolean","description":"when set to true, the values in the response data will be each be formatted","example":true,"default":false},"fullname":{"type":"boolean"},"limit":{"type":"integer","description":"when set, the number of rows returned will be limited to this number","format":"int32","example":50},"offset":{"type":"integer","description":"when set, the query will skip this number of rows. Used for pagination","format":"int32","example":50},"sort":{"pattern":"^(\\w|\\d|\\.)+ (asc|desc)$","type":"array","description":"when set, data will be returned sorted by this column and direction","example":"impressions desc","items":{"pattern":"^(\\w|\\d|\\.)+ (asc|desc)$","type":"string","description":"when set, data will be returned sorted by this column and direction","example":"impressions desc"}},"dataColumns":{"type":"array","items":{"type":"string"}}},"description":"POST /apidata JSON body. Use **GET /apilist** to discover valid column identifiers (for `data`, `sum`, and `filter`).","example":{"key":"YOUR_API_KEY","data":["graph.day","graph.impressions","graph.conversions"],"begin":"2025-05-01","end":"2025-05-21","sum":["campaigninfo.name"],"filter":{"campaigninfo.id":{"in":["28915"]}}}},"MSSGetRequest":{"title":"Data Request","required":["begin","data","oid"],"type":"object","properties":{"key":{"type":"string","description":"API Key","example":"key","default":"null"},"allownull":{"type":"boolean","description":"column to group by","example":false,"default":false},"data":{"type":"array","items":{"$ref":"#/components/schemas/ColumnNames"}},"sum":{"type":"array","items":{"$ref":"#/components/schemas/ColumnNames"}},"filter":{"type":"string","description":"Optional filter as a URL-encoded JSON object using the same filter types as the **POST** body `filter` field.\n\nOptional JSON **object** that restricts which rows are returned. Use the same shape for **POST** `filter` and **GET** `filter` (URL-encoded).\n\n**Filter types — column predicates:** Each property key is a column identifier (`table.column`). The value can be:\n- **Operator object:** keys are operator names and values are comparison values (for example `{\"equals\": \"Live\"}`, `{\"in\": [\"a\",\"b\"]}`).\n- **Scalar** (string or number): shorthand for `equals`.\n- **Array:** shorthand for membership (`in`).\n\n**Filter types — logical groups:** Properties named `AND`, `OR`, or `NOT` hold a nested object that follows the same rules (more column predicates and/or nested `AND` / `OR` / `NOT`).\n\n**Operator keys** (allowed keys inside an operator object): `equals`, `not`, `in`, `notIn`, `lt`, `lte`, `gt`, `gte`, `contains`, `notContains`, `startsWith`, `endsWith`, `hasAny`.\n\nUse **GET /apilist** to discover valid column identifiers (for `data`, `sum`, and `filter`)."},"begin":{"type":"string","description":"start date of the query","example":"2020-01-01"},"end":{"type":"string","description":"end date of the query","example":"2023-12-31"},"oid":{"type":"array","description":"list of advertiser ids to query","example":[20,39,47],"items":{"type":"integer","description":"list of advertiser ids to query","format":"int32"}},"format":{"type":"string","description":"defines the content type of the response","enum":["human","json","csv","excel"],"default":"human"},"formatdata":{"type":"boolean","description":"when set to true, the values in the response data will be each be formatted","example":true,"default":false},"fullname":{"type":"boolean"},"includetoday":{"type":"boolean","description":"when set to true, the response will include the current day's data","example":true,"default":false},"period":{"type":"string","description":"when set, the response will group the data by the input period","enum":["day","week","month","year"],"default":"day"},"limit":{"type":"integer","description":"when set, the number of rows returned will be limited to this number","format":"int32","example":50},"offset":{"type":"integer","description":"when set, the query will skip this number of rows. Used for pagination","format":"int32","example":50},"sort":{"pattern":"^(\\w|\\d|\\.)+ (asc|desc)$","type":"array","description":"when set, data will be returned sorted by this column and direction","example":"impressions desc","items":{"pattern":"^(\\w|\\d|\\.)+ (asc|desc)$","type":"string","description":"when set, data will be returned sorted by this column and direction","example":"impressions desc"}},"accounttypes":{"type":"array","description":"List of account type IDs","example":1,"items":{"type":"integer","description":"List of account type IDs","format":"int32","example":1,"enum":[1,2,3,4,5,6,7]},"enum":["1","2","3","4","5","6","7"]},"dataColumns":{"type":"array","items":{"type":"string"}}},"description":"Data Request","example":{"data":["impressions","visits","conversions"],"aid":[22920],"begin":"2022-10-01","end":"2022-11-01","sum":["campaigngroupid"]}},"ExportErrorDetail":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"}}},"ExportListResponse":{"type":"object","properties":{"batches":{"type":"array","items":{"$ref":"#/components/schemas/ExportStatusResponse"}},"total":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"offset":{"type":"integer","format":"int32"}}},"ExportStatusResponse":{"type":"object","properties":{"batchId":{"type":"integer","format":"int64"},"status":{"type":"string"},"submittedAt":{"type":"string"},"reportName":{"type":"string"},"requestParams":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"downloadUrl":{"type":"string"},"downloadExpiresAt":{"type":"string"},"error":{"$ref":"#/components/schemas/ExportErrorDetail"}}},"GetRequest":{"title":"Data Request (GET)","required":["begin","data","key"],"type":"object","properties":{"key":{"type":"string","description":"Advertiser API key (required on every request).","example":"YOUR_API_KEY"},"data":{"type":"string","description":"Column selection: comma-separated identifiers **or** a JSON array string whose elements use the same shapes as **POST /apidata** `data`. Use **GET /apilist** to discover valid column identifiers (for `data`, `sum`, and `filter`).","example":"graph.day,graph.impressions"},"sum":{"type":"array","items":{"type":"string","description":"Optional grouping columns (same identifier style as `data`). Use **GET /apilist** to discover valid column identifiers (for `data`, `sum`, and `filter`).","example":"campaigninfo.name"}},"filter":{"$ref":"#/components/schemas/Filter"},"begin":{"type":"string","description":"start date of the query","example":"2020-01-01"},"end":{"type":"string","description":"end date of the query","example":"2023-12-31"},"format":{"type":"string","description":"defines the content type of the response","enum":["human","json","csv","excel"],"default":"human"},"formatdata":{"type":"boolean","description":"when set to true, the values in the response data will be each be formatted","example":true,"default":false},"fullname":{"type":"boolean"},"limit":{"type":"integer","description":"when set, the number of rows returned will be limited to this number","format":"int32","example":50},"offset":{"type":"integer","description":"when set, the query will skip this number of rows. Used for pagination","format":"int32","example":50},"sort":{"pattern":"^(\\w|\\d|\\.)+ (asc|desc)$","type":"array","description":"when set, data will be returned sorted by this column and direction","example":"impressions desc","items":{"pattern":"^(\\w|\\d|\\.)+ (asc|desc)$","type":"string","description":"when set, data will be returned sorted by this column and direction","example":"impressions desc"}},"accountTypes":{"type":"array","items":{"type":"integer","format":"int32"}},"filters":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/And"},{"$ref":"#/components/schemas/Not"},{"$ref":"#/components/schemas/Or"},{"$ref":"#/components/schemas/Value"}]}},"ids":{"type":"array","items":{"type":"integer","format":"int32"}}},"description":"GET /apidata query parameters. Use **GET /apilist** to discover valid column identifiers (for `data`, `sum`, and `filter`)."},"ColumnNames":{"type":"string","example":"day","enum":["DealInfo.AvailabilityEndDate","DealInfo.AvailabilityEndTime","DealInfo.AvailabilityStartDate","DealInfo.AvailabilityStartTime","DealInfo.CPM","DealInfo.CreateDate","DealInfo.CreateTime","DealInfo.DeleteTime","DealInfo.FlashSale","DealInfo.ID","DealInfo.Impressions","DealInfo.IsPublished","DealInfo.Listed","DealInfo.Name","DealInfo.OfferingID","DealInfo.ProgramCount","DealInfo.RunEndTime","DealInfo.RunStartTime","DealInfo.Status","DealInfo.UpdateTime","Engagement.Day","Engagement.DealId","Engagement.Month","Engagement.OfferingPageViews","Engagement.ProgramId","Engagement.ProgramPageViews","Engagement.Quarter","Engagement.SearchedTerm","Engagement.SearchResultClicks","Engagement.SearchResultViews","Engagement.SearchTermCTR","Engagement.Week","Engagement.Year","Filters.DealName","Filters.FormatName","Filters.Genre","Filters.OfferingID","Filters.ProgramCount","Filters.ProgramGenreID","Filters.ProgramID","Filters.ProgramName","Filters.ProgramRating","Filters.ProgramRatingID","Inventory.AverageDealsSold","Inventory.AverageInventorySold","Inventory.AverageSales","Inventory.AverageSellThroughRate","Inventory.BuyerCount","Inventory.Day","Inventory.DealCount","Inventory.DealId","Inventory.Impressions","Inventory.Month","Inventory.Quarter","Inventory.RemainingImpressions","Inventory.RemainingImpressionsRate","Inventory.RevenuePerBuyer","Inventory.Sales","Inventory.SellThroughRate","Inventory.SoldImpressions","Inventory.Week","Inventory.Year","ProgramGenreInfo.Name","ProgramGenreInfo.ProgramGenreID","ProgramInfo.CreateTime","ProgramInfo.DefaultCPM","ProgramInfo.DeleteTime","ProgramInfo.IsPublished","ProgramInfo.Name","ProgramInfo.NetworkID","ProgramInfo.NumberOfSeasons","ProgramInfo.ProgramFormat","ProgramInfo.ProgramGenre","ProgramInfo.ProgramGenreID","ProgramInfo.ProgramID","ProgramInfo.ProgramRating","ProgramInfo.ProgramRatingID","ProgramInfo.UpdateTime","ProgramRatingInfo.Name","ProgramRatingInfo.ProgramFormat","ProgramRatingInfo.ProgramRatingID","Purchase.Day","Purchase.Month","Purchase.PurchaseConversionRate","Purchase.Quarter","Purchase.Week","Purchase.Year","Sales.CreateTime","Sales.Day","Sales.DealId","Sales.DealOrderValue","Sales.FlightEndTime","Sales.FlightStartTime","Sales.Impressions","Sales.Month","Sales.PublisherId","Sales.Quarter","Sales.Week","Sales.Year","SellerNetworkInfo.Description","SellerNetworkInfo.Network","SellerNetworkInfo.NetworkID","SellerNetworkInfo.PublisherID"]},"ChangeEventColumnNames":{"type":"string","example":"day","enum":["ChangeTimeLine.AdvertiserID","ChangeTimeLine.CampaignGroupID","ChangeTimeLine.Change","ChangeTimeLine.ChangeID","ChangeTimeLine.CurrentValue","ChangeTimeLine.Entity","ChangeTimeLine.EntityType","ChangeTimeLine.EventTime","ChangeTimeLine.PriorValue","ChangeTimeLine.User","ChangeTimeLine.UserID","ChangeTimeLineSummary.AdvertiserID","ChangeTimeLineSummary.CampaignGroupID","ChangeTimeLineSummary.Change","ChangeTimeLineSummary.ChangeID","ChangeTimeLineSummary.Day","ChangeTimeLineSummary.EventCount","ChangeTimeLineSummary.Month","ChangeTimeLineSummary.Quarter","ChangeTimeLineSummary.Week","ChangeTimeLineSummary.Year"]}},"securitySchemes":{"API Key":{"type":"apiKey","description":"MNTN-issued advertiser API key. Available in Account Settings.","name":"key","in":"query"}}}}