{"openapi":"3.2.0","info":{"title":"Aurev Publisher API","version":"0.1.0","description":"Read-only API for publisher-scoped reporting data and campaign tracking links. Requests are authenticated with a Publisher-specific Bearer token issued by Aurev. All returned data is scoped to the Publisher associated with that token. Aurev Links identify the Campaign automatically; replace enabled subid1\/subid2\/clickID macros with URL-encoded values. Aurev-managed callbacks require an original clickID. Campaign callback templates accept query-value placeholders {transaction_id} (original click ID), {amount} (exact net USD earnings) and {conversionclickid} (stable logical conversion ID). Aurev sends HTTPS GET. Return 2xx after durable acceptance; duplicate conversion IDs with identical values must not credit earnings twice. One click may produce several distinct conversions. Bounded retries preserve transaction, conversion ID and exact amount; redirects are not followed. Conversions are processed automatically without event approvals. Campaign Links supplies campaign_name; a dedicated Campaign Name tracking parameter is not available in this version."},"servers":[{"url":"\/"}],"paths":{"\/api\/publisher\/v1\/reports":{"get":{"tags":["Publisher API v1"],"summary":"Retrieve publisher campaign reporting","description":"Returns paginated campaign reporting for the Publisher authenticated by the Bearer token. The requested period is defined by from and to, with a maximum of 31 calendar days inclusive. Dates use the UTC reporting calendar. Finalized reads completed reporting data through yesterday, excluding later dates from the effective read window. Live reads only the current reporting day, without historical Finalized fallback. Validation precedes effective-date limits; from\/to echo the validated request, while reporting.dates identifies the effective dates. Official Live Date does not gate earnings. campaign_search matches campaign names or your literal Bad Identity values. bad_companies=1 selects only your owned, credited Bad Identity rows; 0 includes normal and bad rows. Rows contain impressions, paid clicks, CTR, EPI, EPC and Publisher earnings in USD. Bad Identity earnings allocates the existing rounded daily payout; unavailable ratios remain null. Verified SUBID children are observed detail with partial coverage; they can differ from Campaign totals. Never add parent and child amounts. date_grouping defaults to no_date; date groups both by UTC day. page and per_page paginate rows; totals cover all matching rows in the effective period, independently of the page. Rows use bytewise campaign_name order; campaign ties use campaign_id, Bad Identity ties use date descending then row_id. Rows, totals, counts and availability share one read snapshot; separate HTTP pages do not. No matching campaigns returns rows=[], zero totals and total_items=total_pages=0. An out-of-range page returns rows=[] while preserving totals and counts. Inspect reporting_status and reporting.dates for completeness; empty rows alone do not indicate complete data. Only the documented query parameters are accepted; request bodies and additional filters return invalid_request (422). All responses are no-store\/private.","operationId":"getPublisherApiReports","parameters":[{"name":"page","in":"query","description":"Strict positive integer syntax; beyond-page returns an empty collection.","schema":{"type":"integer","default":1,"minimum":1}},{"name":"per_page","in":"query","description":"Strict positive integer; values above 200 are rejected, never clamped.","schema":{"type":"integer","default":100,"maximum":200,"minimum":1}},{"name":"from","in":"query","description":"Canonical YYYY-MM-DD date. Maximum 31 calendar days inclusive, including from and to.","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","description":"Must not precede from; from through to is at most 31 calendar days inclusive.","required":true,"schema":{"type":"string","format":"date"}},{"name":"report_type","in":"query","schema":{"type":"string","default":"finalized","enum":["finalized","live"]}},{"name":"date_grouping","in":"query","description":"Date or No Date Campaign grouping; child detail follows the same UTC grouping.","schema":{"type":"string","default":"no_date","enum":["date","no_date"]}},{"name":"campaign_search","in":"query","description":"Dashboard-equivalent trimmed, case-insensitive Campaign-name or owned literal Bad Identity substring search; affects rows, counts and totals.","schema":{"type":"string","default":""}},{"name":"bad_companies","in":"query","description":"Bad Identity filter. Zero includes normal and own credited bad rows; one selects only own bad rows. Never expands Publisher ownership.","schema":{"type":"string","default":"0","enum":["0","1"]}}],"responses":{"200":{"description":"Publisher-safe page, full filtered totals and completeness.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiReportsResponse"},"examples":{"success":{"summary":"A completed one-day report (synthetic data)","value":{"rows":[{"row_id":"parent_example","campaign_id":"cmp_example","campaign_name":"Example campaign","subid1":null,"subid2":null,"subid1_state":"not_applicable","subid2_state":"not_applicable","children":[],"impressions":1000,"clicks":25,"ctr":2.5,"epi":0.095,"epc":3.8,"earnings":95,"is_estimate":false,"zero_revenue_flag":false}],"totals":{"impressions":1000,"clicks":25,"ctr":2.5,"epi":0.095,"epc":3.8,"earnings":95,"zero_revenue_rows":0,"row_count":1,"bad_identity_rows":0},"reporting":{"reporting_status":"complete","message":null,"dates":[{"date":"2026-09-01","reporting_status":"complete"}]},"diagnostic_rows":[],"subid_reporting":{"status":"partial","coverage_complete":false,"observed_dates":["2026-09-01"],"notice":"Observed detail may differ from Campaign totals."},"pagination":{"page":1,"per_page":100,"total_items":1,"total_pages":1},"from":"2026-09-01","to":"2026-09-01","report_type":"finalized"}},"empty":{"summary":"No matching campaigns, completed reporting","value":{"rows":[],"totals":{"impressions":0,"clicks":0,"ctr":null,"epi":null,"epc":null,"earnings":0,"zero_revenue_rows":0,"row_count":0,"bad_identity_rows":0},"reporting":{"reporting_status":"complete","message":null,"dates":[{"date":"2026-09-01","reporting_status":"complete"}]},"pagination":{"page":1,"per_page":100,"total_items":0,"total_pages":0},"from":"2026-09-01","to":"2026-09-01","report_type":"finalized"}}}}}},"409":{"description":"Error code reporting_configuration_error. Reporting configuration is incomplete; no partial financial response.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"example":{"error":{"code":"reporting_configuration_error","message":"Reporting configuration is incomplete."}}}}},"401":{"description":"Missing, invalid, revoked credential or disabled Publisher. Error code unauthenticated; WWW-Authenticate Bearer.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"example":{"error":{"code":"unauthenticated","message":"Authentication required."}}}},"headers":{"WWW-Authenticate":{"description":"Bearer authentication is required.","schema":{"type":"string","const":"Bearer"}}}},"422":{"description":"Invalid dates, enums, pagination or unsupported filters.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"example":{"error":{"code":"invalid_request","message":"Invalid request payload."}}}}},"429":{"description":"Error code too_many_requests. Your configured quota is exhausted. Retry with bounded backoff and jitter; honor Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Required positive delay in seconds before retrying. Use bounded backoff with jitter."},"Cache-Control":{"schema":{"type":"string","const":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"example":{"error":{"code":"too_many_requests","message":"Too many requests."}}}}},"503":{"description":"API access is temporarily unavailable or requires operator action. Select an example for its error code and retry guidance. Each retry is a new request.","headers":{"Retry-After":{"description":"Present for retryable temporary capacity limits; positive delay in seconds.","schema":{"type":"integer","minimum":1}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"examples":{"temporarily_unavailable":{"summary":"temporarily_unavailable","description":"Retry with bounded backoff and jitter; honor Retry-After when present.","value":{"error":{"code":"temporarily_unavailable","message":"Service temporarily unavailable."}}},"publisher_api_disabled":{"summary":"publisher_api_disabled","description":"Contact Aurev and wait until API access is restored; do not poll.","value":{"error":{"code":"publisher_api_disabled","message":"Publisher API access is disabled. Contact the operator."}}},"publisher_api_not_configured":{"summary":"publisher_api_not_configured","description":"Contact Aurev to configure API access; do not automatically retry.","value":{"error":{"code":"publisher_api_not_configured","message":"Publisher API access is not configured. Contact the operator."}}},"publisher_api_policy_not_configured":{"summary":"publisher_api_policy_not_configured","description":"Contact Aurev to configure the request policy; do not automatically retry.","value":{"error":{"code":"publisher_api_policy_not_configured","message":"Publisher API request policy is not configured. Contact the operator."}}},"report_budget_exceeded":{"summary":"report_budget_exceeded","description":"Reduce the date range or contact Aurev; do not automatically repeat the identical request.","value":{"error":{"code":"report_budget_exceeded","message":"Report exceeded the processing budget. Reduce the date range before retrying."}}}}}}},"500":{"$ref":"#\/components\/responses\/ApiInternalError"}},"security":[{"PublisherApiBearer":[]}]}},"\/api\/publisher\/v1\/campaign-links":{"get":{"tags":["Publisher API v1"],"summary":"Retrieve active campaign tracking links","description":"Returns active, Publisher-visible tracking links for named campaigns currently owned by the Publisher authenticated by the Bearer token. The response contains campaign identifiers, campaign names and tracking URLs, without underlying provider configuration. URLs match the Publisher Dashboard. page and per_page paginate links in stable campaign_id order. No matching links returns tracking_links=[] and total_items=total_pages=0. An out-of-range page returns tracking_links=[] while preserving counts. Only page and per_page are accepted; request bodies and other parameters return invalid_request (422). All responses are no-store\/private.","operationId":"listPublisherApiCampaignLinks","parameters":[{"name":"page","in":"query","description":"Strict positive integer syntax; beyond-page returns an empty collection.","schema":{"type":"integer","default":1,"minimum":1}},{"name":"per_page","in":"query","description":"Strict positive integer; values above 200 are rejected, never clamped.","schema":{"type":"integer","default":100,"maximum":200,"minimum":1}}],"responses":{"200":{"description":"Bounded page of own tracking links.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiCampaignLinksResponse"},"examples":{"success":{"summary":"A synthetic tracking link","value":{"tracking_links":[{"campaign_id":"cmp_example","campaign_name":"Example campaign","tracking_url":"https:\/\/aurevclk.com\/r\/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA?subid1={subid1}\u0026subid2={subid2}\u0026clickID={clickid}"}],"pagination":{"page":1,"per_page":100,"total_items":1,"total_pages":1}}},"empty":{"summary":"No matching active links","value":{"tracking_links":[],"pagination":{"page":1,"per_page":100,"total_items":0,"total_pages":0}}}}}}},"401":{"description":"Missing, invalid, revoked credential or disabled Publisher. Error code unauthenticated; WWW-Authenticate Bearer.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"example":{"error":{"code":"unauthenticated","message":"Authentication required."}}}},"headers":{"WWW-Authenticate":{"description":"Bearer authentication is required.","schema":{"type":"string","const":"Bearer"}}}},"422":{"description":"Invalid pagination or unsupported request parameters.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"example":{"error":{"code":"invalid_request","message":"Invalid request payload."}}}}},"429":{"description":"Error code too_many_requests. Your configured quota is exhausted. Retry with bounded backoff and jitter; honor Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Required positive delay in seconds before retrying. Use bounded backoff with jitter."},"Cache-Control":{"schema":{"type":"string","const":"no-store, private"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"example":{"error":{"code":"too_many_requests","message":"Too many requests."}}}}},"503":{"description":"API access is temporarily unavailable or requires operator action. Select an example for its error code and retry guidance. Each retry is a new request.","headers":{"Retry-After":{"description":"Present for retryable temporary capacity limits; positive delay in seconds.","schema":{"type":"integer","minimum":1}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"examples":{"temporarily_unavailable":{"summary":"temporarily_unavailable","description":"Retry with bounded backoff and jitter; honor Retry-After when present.","value":{"error":{"code":"temporarily_unavailable","message":"Service temporarily unavailable."}}},"publisher_api_disabled":{"summary":"publisher_api_disabled","description":"Contact Aurev and wait until API access is restored; do not poll.","value":{"error":{"code":"publisher_api_disabled","message":"Publisher API access is disabled. Contact the operator."}}},"publisher_api_not_configured":{"summary":"publisher_api_not_configured","description":"Contact Aurev to configure API access; do not automatically retry.","value":{"error":{"code":"publisher_api_not_configured","message":"Publisher API access is not configured. Contact the operator."}}},"publisher_api_policy_not_configured":{"summary":"publisher_api_policy_not_configured","description":"Contact Aurev to configure the request policy; do not automatically retry.","value":{"error":{"code":"publisher_api_policy_not_configured","message":"Publisher API request policy is not configured. Contact the operator."}}}}}}},"500":{"$ref":"#\/components\/responses\/ApiInternalError"}},"security":[{"PublisherApiBearer":[]}]}}},"components":{"securitySchemes":{"PublisherApiBearer":{"type":"http","description":"Publisher-specific API token issued by Aurev. Enter the token without the Bearer prefix to enable interactive GET requests for both operations. The server validates the token on Execute. Reload clears it and locks interactive requests. Dashboard cookies are not used.","bearerFormat":"opaque","scheme":"bearer"}},"schemas":{"PublisherApiReportsResponse":{"required":["rows","totals","reporting","pagination","from","to","report_type"],"properties":{"rows":{"type":"array","items":{"oneOf":[{"$ref":"#\/components\/schemas\/PublisherCampaignPerformanceRow"},{"$ref":"#\/components\/schemas\/PublisherUnattributedReportRow"}]},"description":"Normal Campaign and owned Bad Identity rows on this page, ordered by campaign_name with stable type-specific ties.","example":[{"row_id":"parent_example","campaign_id":"cmp_example","campaign_name":"Example campaign","subid1":null,"subid2":null,"subid1_state":"not_applicable","subid2_state":"not_applicable","children":[],"impressions":1000,"clicks":25,"ctr":2.5,"epi":0.095,"epc":3.8,"earnings":95,"is_estimate":false,"zero_revenue_flag":false}]},"totals":{"$ref":"#\/components\/schemas\/PublisherCampaignPerformanceTotals","description":"Totals for all matching campaigns across the effective period, independent of pagination.","example":{"impressions":1000,"clicks":25,"ctr":2.5,"epi":0.095,"epc":3.8,"earnings":95,"zero_revenue_rows":0,"row_count":1,"bad_identity_rows":0}},"reporting":{"$ref":"#\/components\/schemas\/PublisherReportingAvailability","description":"Publisher-scoped reporting completeness.","example":{"reporting_status":"complete","message":null,"dates":[{"date":"2026-09-01","reporting_status":"complete"}]}},"diagnostic_rows":{"type":"array","items":{"$ref":"#\/components\/schemas\/PublisherCampaignDetail"},"description":"Only your verified provider-null observed detail without a Campaign; no invented parent or new payment.","example":[]},"subid_reporting":{"$ref":"#\/components\/schemas\/SubidDetailCoverage","description":"Safe observed-detail coverage, separate from canonical Campaign completeness.","example":{"status":"partial","coverage_complete":false,"observed_dates":["2026-09-01"],"notice":"Observed detail may differ from Campaign totals."}},"pagination":{"$ref":"#\/components\/schemas\/PublisherApiPagination","description":"Page selection and full matching collection counts.","example":{"page":1,"per_page":100,"total_items":1,"total_pages":1}},"from":{"description":"Requested inclusive start date, YYYY-MM-DD, in UTC. Echoed unchanged even when the effective read window differs.","type":"string","format":"date","example":"2026-09-01"},"to":{"description":"Requested inclusive end date, YYYY-MM-DD, in UTC. Maximum range: 31 calendar days including both endpoints.","type":"string","format":"date","example":"2026-09-01"},"report_type":{"type":"string","enum":["finalized","live"],"description":"finalized reads completed historical data through yesterday; live reads only the current reporting day with no historical fallback.","example":"finalized"}},"type":"object","additionalProperties":false,"description":"One page of campaign performance with totals across all matching campaigns. Dates use the UTC reporting calendar.","example":{"rows":[{"row_id":"parent_example","campaign_id":"cmp_example","campaign_name":"Example campaign","subid1":null,"subid2":null,"subid1_state":"not_applicable","subid2_state":"not_applicable","children":[],"impressions":1000,"clicks":25,"ctr":2.5,"epi":0.095,"epc":3.8,"earnings":95,"is_estimate":false,"zero_revenue_flag":false}],"totals":{"impressions":1000,"clicks":25,"ctr":2.5,"epi":0.095,"epc":3.8,"earnings":95,"zero_revenue_rows":0,"row_count":1,"bad_identity_rows":0},"reporting":{"reporting_status":"complete","message":null,"dates":[{"date":"2026-09-01","reporting_status":"complete"}]},"diagnostic_rows":[],"subid_reporting":{"status":"partial","coverage_complete":false,"observed_dates":["2026-09-01"],"notice":"Observed detail may differ from Campaign totals."},"pagination":{"page":1,"per_page":100,"total_items":1,"total_pages":1},"from":"2026-09-01","to":"2026-09-01","report_type":"finalized"}},"PublisherCampaignPerformanceRow":{"required":["campaign_id","campaign_name","impressions","clicks","ctr","epi","epc","earnings","is_estimate","zero_revenue_flag"],"properties":{"row_id":{"description":"Opaque stable display row identity.","type":"string","example":"parent_example"},"date":{"description":"UTC reporting calendar date, YYYY-MM-DD, without a time component.","type":"string","format":"date","example":"2026-09-01"},"subid1":{"type":"null","description":"Displayed source or placement identity; a full unexpanded placeholder displays as an em dash.","example":null},"subid2":{"type":"null","description":"Displayed secondary source identity; a missing value or full unexpanded placeholder displays as an em dash.","example":null},"subid1_state":{"type":"string","enum":["not_applicable"],"description":"Typed display state; not_applicable identifies a parent cell.","example":"not_applicable"},"subid2_state":{"type":"string","enum":["not_applicable"],"description":"Typed display state; not_applicable identifies a parent cell.","example":"not_applicable"},"children":{"type":"array","items":{"$ref":"#\/components\/schemas\/PublisherCampaignDetail"},"description":"Verified own observed SUBID detail on the parent page; never add it to parent totals or earnings.","example":[]},"campaign_id":{"description":"Opaque Aurev public campaign identifier. Treat it as a string, not a numeric database ID.","type":"string","example":"cmp_example"},"campaign_name":{"type":"string","description":"Campaign display name.","example":"Example campaign"},"impressions":{"type":"integer","minimum":0,"description":"Total impressions in the effective reporting period.","example":1000},"clicks":{"description":"Total paid clicks in the effective reporting period.","type":"integer","minimum":0,"example":25},"ctr":{"description":"Paid clicks \/ impressions \u00d7 100, rounded HALF_UP to 2 decimal places; null when impressions are zero.","type":["number","null"],"example":2.5},"epi":{"description":"USD earnings \/ impressions, rounded HALF_UP to 4 decimal places; null when impressions are zero.","type":["number","null"],"example":0.095},"epc":{"description":"USD earnings \/ paid clicks, rounded HALF_UP to 3 decimal places; null when paid clicks are zero.","type":["number","null"],"example":3.8},"earnings":{"description":"Sum of daily Publisher earnings in USD, each rounded HALF_UP to 2 decimal places. A JSON number; use decimal arithmetic when processing money.","type":"number","example":95},"is_estimate":{"description":"True for current-day Live estimates; false for Finalized reporting. Finalized data can still be restated.","type":"boolean","example":false},"zero_revenue_flag":{"description":"True when at least one contributing daily row has the reporting quality flag for activity without earnings. This is not inferred from rounded earnings.","type":"boolean","example":false}},"type":"object","additionalProperties":false,"description":"One campaign aggregated across the effective reporting period. Monetary values are USD JSON numbers; trailing zeroes need not be serialized.","example":{"row_id":"parent_example","campaign_id":"cmp_example","campaign_name":"Example campaign","subid1":null,"subid2":null,"subid1_state":"not_applicable","subid2_state":"not_applicable","children":[],"impressions":1000,"clicks":25,"ctr":2.5,"epi":0.095,"epc":3.8,"earnings":95,"is_estimate":false,"zero_revenue_flag":false}},"PublisherCampaignDetail":{"allOf":[{"$ref":"#\/components\/schemas\/CampaignDetailIdentity"},{"properties":{"impressions":{"type":"integer","description":"Total impressions in the effective reporting period.","example":100},"clicks":{"type":"integer","description":"Total paid clicks in the effective reporting period.","example":2},"earnings":{"type":["number","null"],"description":"Sum of daily Publisher earnings in USD, each rounded HALF_UP to 2 decimal places. A JSON number; use decimal arithmetic when processing money.","example":0.95},"ctr":{"type":["number","null"],"description":"Paid clicks \/ impressions \u00d7 100, rounded HALF_UP to 2 decimal places; null when impressions are zero.","example":2},"epi":{"type":["number","null"],"description":"USD earnings \/ impressions, rounded HALF_UP to 4 decimal places; null when impressions are zero.","example":0.0095},"epc":{"type":["number","null"],"description":"USD earnings \/ paid clicks, rounded HALF_UP to 3 decimal places; null when paid clicks are zero.","example":0.475}},"type":"object"}],"description":"Your verified observed SUBID detail. It never adds a payment or changes the parent Campaign totals.","example":{"row_id":"detail_example","row_type":"subid_detail","date":"2026-09-01","campaign_id":"cmp_example","campaign_name":"Example campaign","subid1":"source_123","subid2":"\u2014","subid1_state":"raw","subid2_state":"placeholder","impressions":100,"clicks":2,"earnings":0.95,"ctr":2,"epi":0.0095,"epc":0.475}},"CampaignDetailIdentity":{"properties":{"row_id":{"description":"Opaque stable display row identity.","type":"string","example":"detail_example"},"row_type":{"type":"string","enum":["subid_detail","source_diagnostic"],"description":"subid_detail is verified Campaign detail; source_diagnostic is a verified owner without a Campaign; unattributed is an existing credited Bad Identity.","example":"subid_detail"},"campaign_id":{"type":["string","null"],"description":"Opaque Aurev public campaign identifier. Treat it as a string, not a numeric database ID.","example":"cmp_example"},"campaign_name":{"type":"string","description":"Campaign display name.","example":"Example campaign"},"date":{"description":"UTC reporting calendar date, YYYY-MM-DD, without a time component.","type":"string","format":"date","example":"2026-09-01"},"subid1":{"description":"Displayed source or placement identity; a full unexpanded placeholder displays as an em dash.","type":"string","example":"source_123"},"subid2":{"description":"Displayed secondary source identity; a missing value or full unexpanded placeholder displays as an em dash.","type":"string","example":"\u2014"},"subid1_state":{"type":"string","enum":["empty","missing","placeholder","raw"],"description":"Typed display state; not_applicable identifies a parent cell.","example":"raw"},"subid2_state":{"type":"string","enum":["empty","missing","placeholder","raw"],"description":"Typed display state; not_applicable identifies a parent cell.","example":"placeholder"}},"type":"object","description":"Verified observed child display identity; no private source provenance. Date is omitted in No Date grouping.","example":{"row_id":"detail_example","row_type":"subid_detail","date":"2026-09-01","campaign_id":"cmp_example","campaign_name":"Example campaign","subid1":"source_123","subid2":"\u2014","subid1_state":"raw","subid2_state":"placeholder"}},"PublisherUnattributedReportRow":{"description":"One owned and credited Bad Identity display row with literal identity and allocated Publisher Earnings in USD. Never a synthetic Campaign.","required":["row_type","row_id","date","campaign_id","campaign_name","campaign_id_classification","impressions","clicks","ctr","epi","epc","earnings","zero_revenue_flag","is_estimate"],"properties":{"subid1":{"type":"null","description":"Displayed source or placement identity; a full unexpanded placeholder displays as an em dash.","example":null},"subid2":{"type":"null","description":"Displayed secondary source identity; a missing value or full unexpanded placeholder displays as an em dash.","example":null},"subid1_state":{"type":"string","enum":["not_applicable"],"description":"Typed display state; not_applicable identifies a parent cell.","example":"not_applicable"},"subid2_state":{"type":"string","enum":["not_applicable"],"description":"Typed display state; not_applicable identifies a parent cell.","example":"not_applicable"},"children":{"type":"array","items":{"$ref":"#\/components\/schemas\/PublisherCampaignDetail"},"maxItems":0,"description":"Verified own observed SUBID detail on the parent page; never add it to parent totals or earnings.","example":[]},"row_type":{"type":"string","enum":["unattributed"],"description":"subid_detail is verified Campaign detail; source_diagnostic is a verified owner without a Campaign; unattributed is an existing credited Bad Identity.","example":"unattributed"},"row_id":{"description":"Opaque stable display row identity.","type":"string","example":"bad_example"},"date":{"description":"UTC reporting calendar date, YYYY-MM-DD, without a time component.","type":"string","format":"date","example":"2026-09-01"},"campaign_id":{"type":"null","description":"Null: this display row is not an Aurev Campaign.","example":null},"campaign_name":{"description":"Literal saved Bad Identity, unchanged for display.","type":"string","example":"\\N"},"campaign_id_classification":{"type":"string","enum":["provider_null","malformed_placeholder","unknown_non_null"],"description":"Typed identity classification; not a revenue discrepancy or activity quality flag.","example":"provider_null"},"impressions":{"type":"integer","minimum":0,"description":"Total impressions in the effective reporting period.","example":4},"clicks":{"type":"integer","minimum":0,"description":"Total paid clicks in the effective reporting period.","example":1},"ctr":{"type":"null","description":"Unavailable for this display row; no derived Campaign ratio is inferred.","example":null},"epi":{"type":"null","description":"Unavailable for this display row; no derived Campaign ratio is inferred.","example":null},"epc":{"type":"null","description":"Unavailable for this display row; no derived Campaign ratio is inferred.","example":null},"earnings":{"description":"Allocated part of the already rounded canonical daily Publisher payout in USD; independent of filters and pagination.","type":"number","example":0.63},"zero_revenue_flag":{"type":"boolean","description":"True when at least one contributing daily row has the reporting quality flag for activity without earnings. This is not inferred from rounded earnings.","example":false},"is_estimate":{"type":"boolean","description":"True for current-day Live estimates; false for Finalized reporting. Finalized data can still be restated.","example":false}},"type":"object","additionalProperties":false,"example":{"row_type":"unattributed","row_id":"bad_example","date":"2026-09-01","campaign_id":null,"campaign_name":"\\N","campaign_id_classification":"provider_null","impressions":4,"clicks":1,"ctr":null,"epi":null,"epc":null,"earnings":0.63,"zero_revenue_flag":false,"is_estimate":false,"subid1":null,"subid2":null,"subid1_state":"not_applicable","subid2_state":"not_applicable","children":[]}},"PublisherCampaignPerformanceTotals":{"required":["impressions","clicks","ctr","epi","epc","earnings","zero_revenue_rows","row_count","bad_identity_rows"],"properties":{"row_count":{"description":"Full filtered display row count before pagination.","type":"integer","minimum":0,"example":1},"bad_identity_rows":{"description":"Number of your owned Bad Identity rows in the same filtered scope.","type":"integer","minimum":0,"example":0},"impressions":{"type":"integer","minimum":0,"description":"Total impressions in the effective reporting period.","example":1000},"clicks":{"description":"Total paid clicks in the effective reporting period.","type":"integer","minimum":0,"example":25},"ctr":{"description":"Paid clicks \/ impressions \u00d7 100, rounded HALF_UP to 2 decimal places; null when impressions are zero.","type":["number","null"],"example":2.5},"epi":{"description":"USD earnings \/ impressions, rounded HALF_UP to 4 decimal places; null when impressions are zero.","type":["number","null"],"example":0.095},"epc":{"description":"USD earnings \/ paid clicks, rounded HALF_UP to 3 decimal places; null when paid clicks are zero.","type":["number","null"],"example":3.8},"earnings":{"description":"Sum of daily Publisher earnings in USD, each rounded HALF_UP to 2 decimal places. A JSON number; use decimal arithmetic when processing money.","type":"number","example":95},"zero_revenue_rows":{"description":"Number of contributing daily rows with that reporting quality flag, not the number of campaigns.","type":"integer","minimum":0,"example":0}},"type":"object","additionalProperties":false,"description":"Totals across the entire filtered period, independent of the requested page. Ratios use summed counts and earnings, not averages of row ratios.","example":{"impressions":1000,"clicks":25,"ctr":2.5,"epi":0.095,"epc":3.8,"earnings":95,"zero_revenue_rows":0,"row_count":1,"bad_identity_rows":0}},"PublisherReportingAvailability":{"required":["reporting_status","message","dates"],"properties":{"reporting_status":{"type":"string","enum":["complete","incomplete"],"description":"complete when all required data for this period or date is available; incomplete while reporting is still being completed.","example":"complete"},"message":{"type":["string","null"],"enum":[null,"Reporting data for this period is still being completed."],"description":"Safe explanation of the current status; reporting messages are null when complete.","example":null},"dates":{"type":"array","items":{"required":["date","reporting_status"],"properties":{"date":{"type":"string","format":"date","description":"UTC reporting calendar date, YYYY-MM-DD, without a time component.","example":"2026-09-01"},"reporting_status":{"type":"string","enum":["complete","incomplete"],"description":"complete when all required data for this period or date is available; incomplete while reporting is still being completed.","example":"complete"}},"type":"object","additionalProperties":false},"description":"Effective reporting dates in UTC. Live includes only the current reporting date.","example":[{"date":"2026-09-01","reporting_status":"complete"}]}},"type":"object","additionalProperties":false,"description":"Completeness of your reporting period and its individual reporting dates. Empty rows alone do not imply complete data.","example":{"reporting_status":"complete","message":null,"dates":[{"date":"2026-09-01","reporting_status":"complete"}]}},"SubidDetailCoverage":{"properties":{"status":{"type":"string","enum":["not_collected","pending","no_content","error","blocked","partial","unsupported"],"description":"partial means observed detail is available; blocked means no verified detail can be published for this source scope.","example":"partial"},"coverage_complete":{"const":false,"description":"Always false: observed detail does not certify complete traffic coverage.","example":false},"observed_dates":{"type":"array","items":{"type":"string","format":"date"},"description":"UTC dates with verified observed detail, without inferring continuous coverage.","example":["2026-09-01"]},"notice":{"type":"string","description":"Safe explanation that observed child detail and parent totals can differ.","example":"Observed detail may differ from Campaign totals."}},"type":"object","description":"Observed SUBID coverage is separate from Campaign reporting completeness; no completeness certificate is inferred.","example":{"status":"partial","coverage_complete":false,"observed_dates":["2026-09-01"],"notice":"Observed detail may differ from Campaign totals."}},"PublisherApiPagination":{"required":["page","per_page","total_items","total_pages"],"properties":{"page":{"type":"integer","minimum":1,"description":"Requested page number, starting at 1.","example":1},"per_page":{"type":"integer","maximum":200,"minimum":1,"description":"Requested maximum items per page; default 100, maximum 200.","example":100},"total_items":{"type":"integer","minimum":0,"description":"Total matching items before pagination.","example":1},"total_pages":{"type":"integer","minimum":0,"description":"Number of pages; zero when no items match.","example":1}},"type":"object","additionalProperties":false,"description":"Pagination metadata for the matching collection. An out-of-range page is empty but preserves total_items and total_pages.","example":{"page":1,"per_page":100,"total_items":1,"total_pages":1}},"PublisherApiErrorResponse":{"required":["error"],"properties":{"error":{"required":["code","message"],"properties":{"code":{"type":"string","enum":["unauthenticated","invalid_request","not_found","method_not_allowed","internal_error","reporting_configuration_error","too_many_requests","temporarily_unavailable","report_budget_exceeded","publisher_api_disabled","publisher_api_not_configured","publisher_api_policy_not_configured"],"description":"Machine-readable error code; see the response-specific examples.","example":"unauthenticated"},"message":{"type":"string","description":"Safe explanation of the current status; reporting messages are null when complete.","example":"Authentication required."}},"type":"object","additionalProperties":false,"description":"Canonical failure details without private implementation information.","example":{"code":"unauthenticated","message":"Authentication required."}}},"type":"object","additionalProperties":false,"description":"Canonical error envelope. Choose the HTTP response and its named example for the applicable code and message.","example":{"error":{"code":"unauthenticated","message":"Authentication required."}}},"PublisherApiCampaignLinksResponse":{"required":["tracking_links","pagination"],"properties":{"tracking_links":{"type":"array","items":{"$ref":"#\/components\/schemas\/PublisherTrackingLink"},"description":"Currently owned, named campaigns with active links, ordered by campaign_id.","example":[{"campaign_id":"cmp_example","campaign_name":"Example campaign","tracking_url":"https:\/\/aurevclk.com\/r\/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA?subid1={subid1}\u0026subid2={subid2}\u0026clickID={clickid}"}]},"pagination":{"$ref":"#\/components\/schemas\/PublisherApiPagination","description":"Page selection and full matching collection counts.","example":{"page":1,"per_page":100,"total_items":1,"total_pages":1}}},"type":"object","additionalProperties":false,"description":"One page of your active campaign tracking links.","example":{"tracking_links":[{"campaign_id":"cmp_example","campaign_name":"Example campaign","tracking_url":"https:\/\/aurevclk.com\/r\/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA?subid1={subid1}\u0026subid2={subid2}\u0026clickID={clickid}"}],"pagination":{"page":1,"per_page":100,"total_items":1,"total_pages":1}}},"PublisherTrackingLink":{"description":"A tracking link for a currently owned, named campaign. The example is synthetic and must not be used as a real link.","required":["campaign_id","campaign_name","tracking_url"],"properties":{"campaign_id":{"type":"string","description":"Opaque Aurev public campaign identifier. Treat it as a string, not a numeric database ID.","example":"cmp_example"},"campaign_name":{"type":"string","description":"Campaign display name.","example":"Example campaign"},"tracking_url":{"description":"Aurev tracking URI template, not an API credential. Replace enabled macros with URL-encoded values: subid1={subid1}, subid2={subid2}, clickID={clickid}. Only configured parameters are present, in that order; a link may have no parameters.","type":"string","format":"uri-template","pattern":"^https?:\/\/[^\/]+\/r\/[A-Za-z0-9_-]{43}(?:\\?(?:subid1=\\{subid1\\}(?:\u0026subid2=\\{subid2\\})?(?:\u0026clickID=\\{clickid\\})?|subid2=\\{subid2\\}(?:\u0026clickID=\\{clickid\\})?|clickID=\\{clickid\\}))?$","example":"https:\/\/aurevclk.com\/r\/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA?subid1={subid1}\u0026subid2={subid2}\u0026clickID={clickid}"}},"type":"object","additionalProperties":false,"example":{"campaign_id":"cmp_example","campaign_name":"Example campaign","tracking_url":"https:\/\/aurevclk.com\/r\/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA?subid1={subid1}\u0026subid2={subid2}\u0026clickID={clickid}"}}},"responses":{"ApiInternalError":{"description":"An unexpected server failure with a provider-neutral public response.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PublisherApiErrorResponse"},"example":{"error":{"code":"internal_error","message":"Internal server error."}}}}}}}}