openapi: 3.2.0 info: title: Jeeng Reporting API version: '1.0' contact: name: Jeeng Technical Support email: support@jeeng.com url: https://developers.jeeng.com/ description: 'Operations tagged Reporting across 2 of this provider''s published API definitions: jeeng-advertisers-openapi.yml, jeeng-publishers-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://powerinbox.azure-api.net/ security: - sec0: [] tags: - name: Reporting paths: /reporting/advertiserperformance: get: summary: Advertiser Performance Report description: Retrieve a flexible advertiser performance report by specifying the fields, filters, and grouping you need. The endpoint returns a 303 redirect with a Location header. Follow the redirect to download the report data as CSV. operationId: reporting-advertiser-performance parameters: - name: Accept in: header description: Must be set to text/csv required: true schema: type: string default: text/csv - name: requestedFields in: query description: Comma-separated list of fields to include in the results required: true schema: type: string default: DateTime,CampaignId,Impressions,Clicks,Spend - name: startInclusive in: query description: Start of the date range (inclusive) required: true schema: type: string format: date-time default: '2026-03-01T00:00:00Z' - name: endExclusive in: query description: End of the date range (exclusive) required: true schema: type: string format: date-time default: '2026-04-01T00:00:00Z' - name: filter in: query description: Key-value filter pairs (e.g. filter[CampaignId]=123) required: false schema: type: string - name: groupBy in: query description: Comma-separated list of fields to group results by required: false schema: type: string - name: api-version in: query description: The API version required: true schema: type: string default: '1.0' responses: '200': description: 200 - Response from following the redirect. Contains the report data as CSV. content: text/csv: examples: Result: value: '"DateTime","CampaignId","Impressions","Clicks","Spend" "2026-03-01T00:00:00Z",123,8425048,1949,2046.45 "2026-03-02T00:00:00Z",123,115692,24,22.80' '303': description: 303 See Other - The endpoint returns this status code directly. The Location header contains the URL where the report data can be downloaded. Most HTTP clients follow this redirect automatically. headers: Location: description: URL to download the report data. Issue a GET request to this URL to retrieve the CSV response shown above. schema: type: string '400': description: 400 Bad Request - The request parameters are invalid. Check that all field names are valid, groupBy fields are included in requestedFields, and the date range does not exceed 32 days. content: application/json: examples: Result: value: '{}' schema: type: object properties: {} '401': description: 401 Unauthorized - The request is missing a valid access token, or the token does not have the required scope. '500': description: 500 Internal Server Error - An unexpected error occurred while processing the request. deprecated: false tags: - Reporting servers: - url: https://powerinbox.azure-api.net/ /reporting/lines/{interval}: get: summary: Campaign Lines Report description: Retrieve a campaign line report with daily or hourly grain. operationId: reporting-campaign-lines parameters: - name: $filter in: query description: OData filter expression required: true schema: type: string default: Date eq 2023-12-13Z - name: api-version in: query description: The API version required: true schema: type: string default: '1.0' - name: interval in: path description: The time interval schema: type: string enum: - daily - hourly required: true responses: '200': description: '200' content: application/json: examples: Result: value: "{\n\"@odata.context\": \"https://powerinbox.azure-api.net/reporting/$metadata#CampaignLines\",\n\"value\": [\n\t{\n\t\t\"Date\": \"2023-12-13T00:00:00Z\",\n\t\t\"CampaignId\": 100,\n\t\t\"CampaignLineId\": 200,\n\t\t\"Impressions\": 7016314,\n\t\t\"Clicks\": 893,\n\t\t\"Conversions\": 10,\n\t\t\"Cost\": 937.65\n\t},\n\t{\n\t\t\"Date\": \"2023-12-13T00:00:00Z\",\n\t\t\"CampaignId\": 100,\n\t\t\"CampaignLineId\": 201,\n\t\t\"Impressions\": 66328,\n\t\t\"Clicks\": 43,\n\t\t\"Conversions\": 3,\n\t\t\"Cost\": 45.15\n\t},\n\t{\n\t\t\"Date\": \"2023-12-13T00:00:00Z\",\n\t\t\"CampaignId\": 101,\n\t\t\"CampaignLineId\": 300,\n\t\t\"Impressions\": 45212,\n\t\t\"Clicks\": 30,\n\t\t\"Conversions\": 0,\n\t\t\"Cost\": 31.5\n\t}\n]}" schema: type: object properties: '@odata.context': type: string example: https://powerinbox.azure-api.net/reporting/$metadata#CampaignLines value: type: array items: type: object properties: Date: type: string example: '2023-12-13T00:00:00Z' CampaignId: type: integer example: 100 default: 0 CampaignLineId: type: integer example: 200 default: 0 Impressions: type: integer example: 7016314 default: 0 Clicks: type: integer example: 893 default: 0 Conversions: type: integer example: 10 default: 0 Cost: type: number example: 937.65 default: 0 '400': description: '400' content: application/json: examples: Result: value: '{}' schema: type: object properties: {} deprecated: false tags: - Reporting servers: - url: https://powerinbox.azure-api.net/ /reporting/campaigns/{interval}: get: summary: Campaigns Report description: Retrieve a campaign report with daily or hourly grain. The query and response are OData V4 format. The response may include a "next" link. operationId: reporting-campaigns parameters: - name: $filter in: query description: OData filter expression required: true schema: type: string default: Date eq 2023-12-13Z - name: api-version in: query description: The API version required: true schema: type: string default: '1.0' - name: interval in: path description: The time interval for the report schema: type: string enum: - daily - hourly required: true responses: '200': description: '200' content: application/json: examples: Result: value: "{\n\"@odata.context\": \"https://powerinbox.azure-api.net/reporting/$metadata#Campaigns\",\n\"value\": [\n\t{\n\t\t\"Date\": \"2023-12-13T00:00:00Z\",\n\t\t\"CampaignId\": 100,\n\t\t\"Impressions\": 8425048,\n\t\t\"Clicks\": 1949,\n\t\t\"Conversions\": 31,\n\t\t\"Cost\": 2046.45\n\t},\n\t{\n\t\t\"Date\": \"2023-12-13T00:00:00Z\",\n\t\t\"CampaignId\": 101,\n\t\t\"Impressions\": 115692,\n\t\t\"Clicks\": 24,\n\t\t\"Conversions\": 0,\n\t\t\"Cost\": 22.8\n\t},\n\t{\n\t\t\"Date\": \"2023-12-13T00:00:00Z\",\n\t\t\"CampaignId\": 102,\n\t\t\"Impressions\": 6086488,\n\t\t\"Clicks\": 790,\n\t\t\"Conversions\": 9,\n\t\t\"Cost\": 513.5\n\t}\n]}" schema: type: object properties: '@odata.context': type: string example: https://powerinbox.azure-api.net/reporting/$metadata#Campaigns value: type: array items: type: object properties: Date: type: string example: '2023-12-13T00:00:00Z' CampaignId: type: integer example: 100 default: 0 Impressions: type: integer example: 8425048 default: 0 Clicks: type: integer example: 1949 default: 0 Conversions: type: integer example: 31 default: 0 Cost: type: number example: 2046.45 default: 0 '400': description: '400' content: application/json: examples: Result: value: '{}' schema: type: object properties: {} deprecated: false tags: - Reporting servers: - url: https://powerinbox.azure-api.net/ /reporting/containers: get: summary: Containers Report description: Retrieve container reports with a daily grain. operationId: reporting-containers parameters: - name: $filter in: query description: OData filter expression required: true schema: type: string default: Date eq 2023-12-13Z - name: api-version in: query description: The API version required: true schema: type: string default: '1.0' responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"@odata.context\": \"https://.../$metadata#Containers\",\n \"value\": [{\n \"Date\": \"2019-10-01T00:00:00Z\",\n \"ContainerId\": 33,\n \"ClicksTotal\": 0,\n \"CompanyId\": 15,\n \"RequestsUnique\": 6,\n \"RevenueNet\": 0.00,\n },\n {\n \"Date\": \"2019-10-01T00:00:00Z\",\n \"ContainerId\": 36,\n \"ClicksTotal\": 0,\n \"CompanyId\": 15,\n \"RequestsUnique\": 5,\n \"RevenueNet\": 0.00,\n }\n ]\n}" '400': description: '400' content: application/json: examples: Result: value: '{}' schema: type: object properties: {} deprecated: false tags: - Reporting servers: - url: https://powerinbox.azure-api.net/ /reporting/placements: get: summary: Placements Report description: Retrieve placement reports with a daily grain operationId: reporting-placements parameters: - name: $filter in: query description: OData filter expression required: true schema: type: string default: Date eq 2023-12-13Z - name: api-version in: query description: The API version required: true schema: type: string default: '1.0' responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"@odata.context\": \"https://.../$metadata#Placements\",\n \"value\": [{\n \"Date\": \"2019-10-01T00:00:00Z\",\n \"PlacementId\": 152,\n \"ClicksTotal\": 0,\n \"CompanyId\": 15,\n \"RequestsUnique\": 10,\n \"RevenueNet\": 0.00,\n \"RequestsTotal\": 20,\n },\n {\n \"Date\": \"2019-10-01T00:00:00Z\",\n \"PlacementId\": 153,\n \"ClicksTotal\": 0,\n \"CompanyId\": 15,\n \"RequestsUnique\": 13,\n \"RevenueNet\": 0.00,\n \"RequestsTotal\": 71,\n }\n ]\n}" '400': description: '400' content: application/json: examples: Result: value: '{}' schema: type: object properties: {} deprecated: false tags: - Reporting servers: - url: https://powerinbox.azure-api.net/ /reporting/publisherperformance: get: summary: Publisher Performance Report description: Retrieve a flexible publisher performance report by specifying the fields, filters, and grouping you need. The endpoint returns a 303 redirect with a Location header. Follow the redirect to download the report data as CSV. operationId: reporting-publisher-performance parameters: - name: Accept in: header description: Must be set to text/csv required: true schema: type: string default: text/csv - name: requestedFields in: query description: Comma-separated list of fields to include in the results required: true schema: type: string default: DateTime,PlacementId,Opens,Clicks,Revenue - name: startInclusive in: query description: Start of the date range (inclusive) required: true schema: type: string format: date-time default: '2026-03-01T00:00:00Z' - name: endExclusive in: query description: End of the date range (exclusive) required: true schema: type: string format: date-time default: '2026-04-01T00:00:00Z' - name: filter in: query description: Key-value filter pairs (e.g. filter[PlacementId]=456) required: false schema: type: string - name: groupBy in: query description: Comma-separated list of fields to group results by required: false schema: type: string - name: api-version in: query description: The API version required: true schema: type: string default: '1.0' responses: '200': description: 200 - Response from following the redirect. Contains the report data as CSV. content: text/csv: examples: Result: value: '"DateTime","PlacementId","ContainerId","Opens","Clicks","Revenue" "2026-03-01T00:00:00Z",152,300,4820,312,148.50 "2026-03-02T00:00:00Z",152,300,3210,198,96.30' '303': description: 303 See Other - The endpoint returns this status code directly. The Location header contains the URL where the report data can be downloaded. Most HTTP clients follow this redirect automatically. headers: Location: description: URL to download the report data. Issue a GET request to this URL to retrieve the CSV response shown above. schema: type: string '400': description: 400 Bad Request - The request parameters are invalid. Check that all field names are valid, groupBy fields are included in requestedFields, and the date range does not exceed 32 days. content: application/json: examples: Result: value: '{}' schema: type: object properties: {} '401': description: 401 Unauthorized - The request is missing a valid access token, or the token does not have the required scope. '500': description: 500 Internal Server Error - An unexpected error occurred while processing the request. deprecated: false tags: - Reporting servers: - url: https://powerinbox.azure-api.net/ components: securitySchemes: sec0: type: oauth2 flows: {} externalDocs: description: Jeeng / OpenWeb Email Monetization developer documentation url: https://developers.jeeng.com/reference x-refined-from: - jeeng-advertisers-openapi.yml - jeeng-publishers-openapi.yml x-readme: headers: [] explorer-enabled: true proxy-enabled: true x-readme-fauxas: true x-api-evangelist: method: searched source: - https://developers.jeeng.com/reference/management-line-update.md - https://developers.jeeng.com/reference/management-line-status.md - https://developers.jeeng.com/reference/management-creative-status.md - https://developers.jeeng.com/reference/reporting-campaigns.md - https://developers.jeeng.com/reference/reporting-campaign-lines.md - https://developers.jeeng.com/reference/reporting-advertiser-performance.md note: Assembled verbatim from the per-operation OpenAPI 3.1.0 definitions Jeeng publishes on its own developer hub (developers.jeeng.com, a ReadMe hub whose readme-subdomain is "jeeng"). The hub renders each reference page as markdown at .md with the full "# OpenAPI definition" JSON block for that operation; it exposes no whole-file spec download, so the paths and components of the three published registry files (authentication.json, advertisers.json, publishers.json) were merged back together without alteration. info.title/description/contact and externalDocs were added by API Evangelist and are captured in overlays/. ownership: Served from developers.jeeng.com, a subdomain of the company domain. servers[] names powerinbox.azure-api.net and the Entra tenant revenuestripe.onmicrosoft.com — PowerInbox is Jeeng's former corporate name (www.powerinbox.com 301s to www.jeeng.com) and RevenueStripe was its ad-monetization brand. The hub is titled "OpenWeb Email Monetization" because OpenWeb acquired Jeeng/PowerInbox in 2022 and the product now ships under the OpenWeb brand on the original Jeeng domains (manage.jeeng.com 302s to manage.powerinbox.com and then to portal.openweb.com).