openapi: 3.1.0
info:
title: Jeeng Email Monetization — Advertisers API
version: '1.0'
description: 'Advertiser-side campaign management and reporting for the Jeeng / OpenWeb Email Monetization platform: update
campaign lines and their budget/pricing, transition campaign line and creative status, and pull campaign, campaign-line
and flexible advertiser performance reports (OData V4 query and response format).'
contact:
name: Jeeng Technical Support
email: support@jeeng.com
url: https://developers.jeeng.com/
servers:
- url: https://powerinbox.azure-api.net/
components:
securitySchemes:
sec0:
type: oauth2
flows: {}
security:
- sec0: []
paths:
/management/creative/{id}/transition/{status}:
post:
summary: Update Status
description: Update a creative status between running, paused and archived.
operationId: management-creative-status
parameters:
- name: id
in: path
description: The creative ID
schema:
type: string
required: true
- name: status
in: path
description: The creative status
schema:
type: string
enum:
- running
- paused
- archived
required: true
- 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: '{}'
schema:
type: object
properties: {}
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
/management/line/{id}/transition/{status}:
post:
summary: Update Status
description: Update a campaign line status between running, paused and archived.
operationId: management-line-status
parameters:
- name: id
in: path
description: The campaign line ID
schema:
type: string
required: true
- name: status
in: path
description: The campaign line status
schema:
type: string
enum:
- running
- paused
- archived
required: true
- 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: '{}'
schema:
type: object
properties: {}
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
/management/line/{id}:
put:
summary: Update
description: Update a campaign line.
operationId: management-line-update
parameters:
- name: id
in: path
description: The campaign line ID
schema:
type: string
required: true
- name: api-version
in: query
description: The API version
required: true
schema:
type: string
default: '1.0'
requestBody:
content:
application/json:
schema:
type: object
properties:
budget:
type: integer
description: The daily spend goal
format: int32
pricing:
type: object
description: The bid amount. Only set one of the 3 possible values (CPC, CPM or CPA)
properties:
cpc:
type: number
description: The price to pay for each click
format: double
cpa:
type: number
description: The amount to pay for achieving CPA goals
format: double
cpm:
type: number
description: The price to pay for 1000 impressions
format: double
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
/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
/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
/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
x-readme:
headers: []
explorer-enabled: true
proxy-enabled: true
x-readme-fauxas: true
externalDocs:
description: Jeeng / OpenWeb Email Monetization developer documentation
url: https://developers.jeeng.com/reference
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 <page>.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).