Jeeng Email Monetization — Advertisers API

Advertiser-side campaign management and reporting for the Jeeng / OpenWeb Email Monetization platform. Update campaign lines (daily spend goal and CPC/CPM/CPA pricing), transition campaign line and creative status between running, paused and archived, and pull campaign and campaign-line reports at daily or hourly grain using OData V4 $filter queries. A flexible advertiser performance report returns a 303 redirect to a CSV download for a caller-specified set of fields, filters and groupings over a date range of up to 32 days. Requires an OAuth 2.0 client-credentials bearer token from the Microsoft Entra tenant, requested with the partners scope; credentials are provisioned by an account manager.

OpenAPI Specification

jeeng-advertisers-openapi.yml Raw ↑
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).