Opera Inventory API
Publisher app and placement (inventory) management.
Documentation
Documentation
https://doc.adx.opera.com/
APIReference
https://doc.adx.opera.com/advertiser/report-api
Publisher app and placement (inventory) management.
openapi: 3.0.3
info:
title: Opera Ads Open Inventory API
version: v1
description: Open API for the Opera Ads advertising platform. Covers the advertiser Report API (daily campaign performance metrics), the publisher Inventory Management API (apps and placements), and the server-to-server Marketing (conversion events) API. Generated by API Evangelist from the public Opera Ads documentation at https://doc.adx.opera.com/ — endpoints, fields, and error codes are transcribed from the docs; contact Opera Ads to obtain an API token.
contact:
name: Opera Ads
url: https://doc.adx.opera.com/
x-apievangelist-method: generated
x-apievangelist-source: https://doc.adx.opera.com/
servers:
- url: https://ofa.adx.opera.com/oapi/v1
description: Advertiser Report API host
tags:
- name: Inventory
description: Publisher app and placement (inventory) management.
paths:
/app/create:
post:
tags:
- Inventory
operationId: createApp
summary: Create app
description: Create a new app (inventory) entry for a publisher.
servers:
- url: https://ofp.adx.opera.com/openapi/inventory/v1
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/App'
responses:
'200':
description: Created app
content:
application/json:
schema:
$ref: '#/components/schemas/App'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/ServerError'
/app/update:
post:
tags:
- Inventory
operationId: updateApp
summary: Update app
description: Modify an existing app entry (supports partial updates).
servers:
- url: https://ofp.adx.opera.com/openapi/inventory/v1
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/App'
responses:
'200':
description: Updated app
content:
application/json:
schema:
$ref: '#/components/schemas/App'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/ServerError'
/app/list:
post:
tags:
- Inventory
operationId: listApps
summary: List apps
description: Retrieve apps with optional filtering by device, OS, traffic type, IAB category, and status.
servers:
- url: https://ofp.adx.opera.com/openapi/inventory/v1
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AppListRequest'
responses:
'200':
description: App list
content:
application/json:
schema:
$ref: '#/components/schemas/AppListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/ServerError'
/placement/create:
post:
tags:
- Inventory
operationId: createPlacement
summary: Create placement
description: Add an ad placement to an app.
servers:
- url: https://ofp.adx.opera.com/openapi/inventory/v1
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Placement'
responses:
'200':
description: Created placement
content:
application/json:
schema:
$ref: '#/components/schemas/Placement'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/ServerError'
/placement/update:
post:
tags:
- Inventory
operationId: updatePlacement
summary: Update placement
description: Modify placement settings (incremental updates).
servers:
- url: https://ofp.adx.opera.com/openapi/inventory/v1
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Placement'
responses:
'200':
description: Updated placement
content:
application/json:
schema:
$ref: '#/components/schemas/Placement'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/ServerError'
/placement/list:
post:
tags:
- Inventory
operationId: listPlacements
summary: List placements
description: Retrieve placements with optional filtering by app, format, category, and status.
servers:
- url: https://ofp.adx.opera.com/openapi/inventory/v1
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PlacementListRequest'
responses:
'200':
description: Placement list
content:
application/json:
schema:
$ref: '#/components/schemas/PlacementListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/ServerError'
components:
responses:
Forbidden:
description: Insufficient scope for the requested resource
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing or invalid token (envelope code 2)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
RateLimited:
description: Rate limit exceeded (envelope code 3)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ServerError:
description: Server error (envelope code 4)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Invalid parameters (envelope code 1)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
PlacementListRequest:
type: object
properties:
appId:
type: string
appType:
type: string
sdkAdFormat:
type: string
iabCategory:
type: string
status:
type: string
AppListRequest:
type: object
properties:
deviceType:
type: string
osType:
type: string
trafficType:
type: string
iabCategory:
type: string
status:
type: array
items:
type: string
AppListResponse:
type: object
properties:
code:
type: integer
data:
type: object
properties:
totalCount:
type: integer
list:
type: array
items:
$ref: '#/components/schemas/App'
PlacementListResponse:
type: object
properties:
code:
type: integer
data:
type: object
properties:
totalCount:
type: integer
list:
type: array
items:
$ref: '#/components/schemas/Placement'
App:
type: object
properties:
appId:
type: string
publisherId:
type: string
displayId:
type: string
name:
type: string
deviceType:
type: string
osType:
type: string
trafficType:
type: string
pkgName:
type: string
domainName:
type: string
url:
type: string
appAdsTxtLink:
type: string
iabCategory:
type: string
coppaCompliant:
type: boolean
status:
type: string
Placement:
type: object
properties:
sid:
type: string
appId:
type: string
name:
type: string
floorPrice:
type: number
countryFloorPrice:
type: array
items:
type: object
additionalProperties: true
sdkAdFormat:
type: string
sdkAdTypes:
type: array
items:
type: string
sdkAdSize:
type: string
sdkAutoRefresh:
type: boolean
sdkAutoRefreshInterval:
type: integer
status:
type: string
Error:
type: object
properties:
code:
type: integer
description: Business error code (0 success, 1 invalid params, 2 auth, 3 rate limit, 4 server).
message:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'API token issued by Opera Ads, passed as `Authorization: Bearer <token>`. Contact Opera Ads to obtain credentials.'