Inventory API
Inventory
The structure and makeup of the places where ads are going to be delivered.
Publishers
List a publisher
GET /v1/inventory/publisher/{id}
Retrieves details of a publisher by it's ID.
Request body
| Parameter | In | Required | Type | Description |
id |
path | Yes | integer | The publisher's ID. |
Response - 200
{
"id": 1,
"parentId": 0,
"companyName": "Main Publisher",
"quote": "",
"active": 1,
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTelephone": "",
"companyFax": "",
"companyEmail": "",
"companyURL": "",
"companyVat": "",
"companyBankAccount": "",
"contactName": "",
"contactFirstName": "",
"contactAddress": "",
"contactNumber": "",
"contactZip": "",
"contactCity": "",
"contactCountry": "",
"contactTelephone": "",
"contactFax": "",
"contactEmail": "",
"description": "",
"paymentMethod": "",
"invoicingParty": ""
}
Response codes
| Status | Meaning |
200 |
Publisher retrieved. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unssuported media type |
500 |
Internal Server Error - Unexpected failure. |
Update a publisher
PUT /v1/inventory/publisher/{id}
Updates the name, parent publisher, and active status of an existing publisher. Fields the request omits are left as they are.
Request body
| Parameter | In | Required | Type | Description |
parentPublisherId |
body | No | integer | The ID of the parent publisher. |
name |
body | No | string | Name of the publisher |
active |
body | No | boolean | Is the publisher active? |
Updating a publisher
{
"name": "Demo Publisher"
}
Response - 200
{
"id": 1,
"parentId": 0,
"companyName": "Demo Publisher",
"quote": "",
"active": 1,
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTelephone": "",
"companyFax": "",
"companyEmail": "",
"companyURL": "",
"companyVat": "",
"companyBankAccount": "",
"contactName": "",
"contactFirstName": "",
"contactAddress": "",
"contactNumber": "",
"contactZip": "",
"contactCity": "",
"contactCountry": "",
"contactTelephone": "",
"contactFax": "",
"contactEmail": "",
"description": "",
"paymentMethod": "",
"invoicingParty": ""
}
Response codes
| Status | Meaning |
200 |
Publisher updated. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Delete a publisher
DELETE /v1/inventory/publisher/{id}
Sets a publisher to inactive.
Request body
| Parameter | In | Required | Type | Description |
id |
path | Yes | integer | The publisher's ID. |
Response codes
| Status | Meaning |
204 |
Publisher set to inactive. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
List publishers
GET /v1/inventory/publisher
Retrieves all publishers and their information.
Response - 200
[
{
"id": 1,
"parentId": 0,
"companyName": "Demo Publisher",
"quote": "",
"active": 1,
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTelephone": "",
"companyFax": "",
"companyEmail": "",
"companyURL": "",
"companyVat": "",
"companyBankAccount": "",
"contactName": "",
"contactFirstName": "",
"contactAddress": "",
"contactNumber": "",
"contactZip": "",
"contactCity": "",
"contactCountry": "",
"contactTelephone": "",
"contactFax": "",
"contactEmail": "",
"description": "",
"paymentMethod": "",
"invoicingParty": ""
},
{
"id": 2,
"parentId": 1,
"companyName": "Example Demo Publisher",
"quote": "",
"active": 0,
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTelephone": "",
"companyFax": "",
"companyEmail": "",
"companyURL": "",
"companyVat": "",
"companyBankAccount": "",
"contactName": "",
"contactFirstName": "",
"contactAddress": "",
"contactNumber": "",
"contactZip": "",
"contactCity": "",
"contactCountry": "",
"contactTelephone": "",
"contactFax": "",
"contactEmail": "",
"description": "",
"paymentMethod": "-",
"invoicingParty": ""
}
]
Create a publisher
POST /v1/inventory/publisher
Creates a new publisher.
Request body
| Parameter | In | Required | Type | Description |
parentPublisherId |
body | No | integer | The ID of the parent publisher. Leave blank if the new publisher is a main publisher |
name |
body | Yes | string | Name of the publisher |
active |
body | No | boolean | Is the publisher active? Default is true |
Creating a new publisher
{
"parentPublisherId": 1,
"name": "Example API Publisher",
"active": true
}
Response - 201
{
"id": 3,
"parentId": 1,
"companyName": "Example API Publisher",
"quote": "",
"active": 1,
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTelephone": "",
"companyFax": "",
"companyEmail": "",
"companyURL": "",
"companyVat": "",
"companyBankAccount": "",
"contactName": "",
"contactFirstName": "",
"contactAddress": "",
"contactNumber": "",
"contactZip": "",
"contactCity": "",
"contactCountry": "",
"contactTelephone": "",
"contactFax": "",
"contactEmail": "",
"description": "",
"paymentMethod": "-",
"invoicingParty": ""
}
Response codes
| Status | Meaning |
201 |
Publisher created. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Publications
List a publication
GET /v1/inventory/publication/{id}
List a single publication by ID.
Request body
| Parameter | In | Required | Type | Description |
id |
path | Yes | integer | The publisher's ID. |
Response - 200
{
"id": 3,
"companyName": "Demo Sponsored Placements",
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTel": "",
"companyFax": "",
"companyUrl": "https://pool-demo.adhese.com/projects/marketing/index.html",
"companyEmail": "",
"publishersId": 1,
"quote": "",
"parentPublicationsId": 0,
"description": "",
"comment": "",
"active": 1,
"rank": 0,
"screenshotExtension": "",
"catchphrase": "",
"language": "",
"numberOfAuthors": 0,
"inventoryCategory": "sponsored_product"
}
Response codes
| Status | Meaning |
200 |
Publication retrieved. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Update a publication
PUT /v1/inventory/publication/{id}
Updates the name, parent publisher, active status, quote and website of an existing publication. Fields the request omits are left as they are.
Request body
| Parameter | In | Required | Type | Description |
parentPublisherId |
body | No | integer | The ID of the publication's publisher. |
active |
body | No | boolean | Is the publication active? Default is true. |
name |
body | Yes | string | Name of the publication. |
quote |
body | No | string | Quote field of the publication. |
website |
body | Yes | string | Website of the publication. |
Updating a publication
{
"publisherId": 1,
"active": true,
"name": "Demo Display",
"quote": "DD",
"website": "https://pool-demo.adhese.com/projects/marketing/index.html"
}
Response - 200
{
"id": 1,
"companyName": "Demo Display",
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTel": "",
"companyFax": "",
"companyUrl": "https://pool-demo.adhese.com/projects/marketing/index.html",
"companyEmail": "",
"publishersId": 1,
"quote": "DD",
"parentPublicationsId": 0,
"description": "",
"comment": "",
"active": 1,
"rank": 0,
"screenshotExtension": "",
"catchphrase": "",
"language": "",
"numberOfAuthors": 0,
"inventoryCategory": "display"
}
Response codes
| Status | Meaning |
200 |
Publication retrieved. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Delete a publication
DELETE /v1/inventory/publication/{id}
Sets a publication to inactive.
Request body
| Parameter | In | Required | Type | Description |
id |
path | Yes | integer | The publication's ID. |
Response codes
| Status | Meaning |
204 |
Publication set to inactive. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
List all publications under a publisher
GET /v1/inventory/publication
List all publications under one or more publishers.
Request body
| Parameter | In | Required | Type | Description |
publisherIds |
parameter | Yes | integer | The publisher IDs whose publications you want listed. The publisher IDs are comma separated. |
Response - 200
[
{
"id": 1,
"companyName": "Demo Display",
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTel": "",
"companyFax": "",
"companyUrl": "https://pool-demo.adhese.com/projects/marketing/index.html",
"companyEmail": "",
"publishersId": 1,
"quote": "DD",
"parentPublicationsId": 0,
"description": "",
"comment": "",
"active": 1,
"rank": 0,
"screenshotExtension": "",
"catchphrase": "",
"language": "",
"numberOfAuthors": 0,
"inventoryCategory": "display"
},
{
"id": 2,
"companyName": "Demo DOOH",
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTel": "",
"companyFax": "",
"companyUrl": "https://adhese.eu",
"companyEmail": "",
"publishersId": 1,
"quote": "",
"parentPublicationsId": 0,
"description": "",
"comment": "",
"active": 1,
"rank": 0,
"screenshotExtension": "",
"catchphrase": "",
"language": "",
"numberOfAuthors": 0,
"inventoryCategory": "in_store"
},
{
"id": 3,
"companyName": "Demo Sponsored Placements",
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTel": "",
"companyFax": "",
"companyUrl": "https://pool-demo.adhese.com/projects/marketing/index.html",
"companyEmail": "",
"publishersId": 1,
"quote": "",
"parentPublicationsId": 0,
"description": "",
"comment": "",
"active": 1,
"rank": 0,
"screenshotExtension": "",
"catchphrase": "",
"language": "",
"numberOfAuthors": 0,
"inventoryCategory": "sponsored_product"
}
]
Response codes
| Status | Meaning |
200 |
Publications retrieved. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Create a publication
POST /v1/inventory/publication
Create a new publication.
Request body
| Parameter | In | Required | Type | Description |
publisherId |
body | No | integer | The ID of the parent publisher. Leave blank if the new publisher is a main publisher |
active |
body | No | boolean | Is the publication active? Default is true. |
name |
body | Yes | string | Name of the publication. |
quote |
body | No | string | Quote field of the publication. |
website |
body | Yes | string | Website of the publication. |
Creating a new publication
{
"publisherId": 3,
"active": true,
"name": "String Created Publication",
"quote": "SCP",
"website": "https://pool-demo.adhese.com/projects/marketing/index.html"
}
Response - 201
{
"id": 5,
"companyName": "String Created Publication",
"companyAddress": "",
"companyNumber": "",
"companyZip": "",
"companyCity": "",
"companyCountry": "",
"companyTel": "",
"companyFax": "",
"companyUrl": "https://pool-demo.adhese.com/projects/marketing/index.html",
"companyEmail": "",
"publishersId": 3,
"quote": "SCP",
"parentPublicationsId": 0,
"description": "",
"comment": "",
"active": 1,
"rank": 0,
"screenshotExtension": "",
"catchphrase": "",
"language": "",
"numberOfAuthors": 0,
"inventoryCategory": null
}
Response codes
| Status | Meaning |
201 |
Publication created. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Positions
List a single position
GET /v1/inventory/position/{id}
Lists the chosen positions information by ID.
Request body
| Parameter | In | Required | Type | Description |
positionId |
path | Yes | integer | The position ID whose information you want listed. |
Response - 200
{
"id": 9,
"publisherId": 1,
"transferId": 0,
"active": true,
"creation": "Mar 25, 2026, 2:31:29 PM CET",
"edited": "Mar 25, 2026, 2:31:29 PM CET",
"name": "",
"formatId": 4,
"formatName": "Billboard",
"formatWidth": 970,
"formatHeight": 250,
"formatSize": 0,
"locationId": 5,
"locationName": "ROS",
"locationTypeId": 10,
"publicationName": "Demo Display",
"previewUrl": "",
"url": ""
}
Response codes
| Status | Meaning |
200 |
Position listed. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Updating a position
PUT /v1/inventory/position/{id}
Updates a chosen positions name, format, location, position type, active status, and URL. Fields the request omits are left as they are.
Request body
| Parameter | In | Required | Type | Description |
id |
path | Yes | integer | The positions ID. |
active |
body | No | boolean | Whether the position is active or not. |
name |
body | No | string | Name of the position, recommended for use with the Campaign Manager UI. |
formatId |
body | No | integer | ID of the positions format. |
locationId |
body | No | integer | ID of the positions location. |
url |
body | No | string | URL for identifying the position. |
positionTypeId |
body | No | integer | ID of the position type (when applicable). |
Updating a position
{
"active": true,
"name": "SCP Halfpage",
"formatId": 1,
"locationId": 9,
"url": "_scp_halfpage",
"positionTypeId": 10
}
Response - 200
{
"id": 19,
"publisherId": 5,
"transferId": 0,
"active": true,
"creation": "Sep 22, 2026, 11:46:01 AM CEST",
"edited": "Sep 22, 2026, 11:52:26 AM CEST",
"name": "SCP Halfpage",
"formatId": 1,
"formatName": "Halfpage",
"formatWidth": 300,
"formatHeight": 600,
"formatSize": 0,
"locationId": 9,
"locationName": "SCP",
"locationTypeId": 10,
"publicationName": "String Created Publication",
"previewUrl": "",
"url": "_scp_halfpage"
}
Response codes
| Status | Meaning |
200 |
Position updated. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Delete a position
DELETE /v1/inventory/position/{id}
Sets a position to inactive by ID.
Request body
| Parameter | In | Required | Type | Description |
positionId |
path | Yes | integer | The position ID whose information you want deactivated. |
Response codes
| Status | Meaning |
204 |
Position updated. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
List all positions
GET /v1/inventory/position
List the details of all positions.
Request body
| Parameter | In | Required | Type | Description |
publicationId |
body | No | integer | The publication ID of the publication you want to filter positions on. |
active |
body | No | boolean | Filter on the active or inactive status of positions. |
Response - 200
[
{
"id": 1,
"publisherId": 1,
"transferId": 0,
"active": true,
"creation": "Mar 13, 2026, 3:09:34 PM CET",
"edited": "Mar 13, 2026, 3:09:34 PM CET",
"name": "",
"formatId": 4,
"formatName": "Billboard",
"formatWidth": 970,
"formatHeight": 250,
"formatSize": 0,
"locationId": 2,
"locationName": "Kitchen",
"locationTypeId": 10,
"publicationName": "Demo Display",
"previewUrl": "",
"url": ""
},
{
"id": 2,
"publisherId": 1,
"transferId": 0,
"active": true,
"creation": "Mar 13, 2026, 3:09:46 PM CET",
"edited": "Mar 13, 2026, 3:12:44 PM CET",
"name": "",
"formatId": 1,
"formatName": "Halfpage",
"formatWidth": 300,
"formatHeight": 600,
"formatSize": 0,
"locationId": 2,
"locationName": "Kitchen",
"locationTypeId": 10,
"publicationName": "Demo Display",
"previewUrl": "",
"url": ""
},
{
"id": 3,
"publisherId": 1,
"transferId": 0,
"active": true,
"creation": "Mar 13, 2026, 3:09:59 PM CET",
"edited": "Mar 13, 2026, 3:12:56 PM CET",
"name": "",
"formatId": 3,
"formatName": "Wide Skyscraper",
"formatWidth": 160,
"formatHeight": 600,
"formatSize": 0,
"locationId": 3,
"locationName": "Electronics",
"locationTypeId": 10,
"publicationName": "Demo Display",
"previewUrl": "",
"url": ""
},
]
Response codes
| Status | Meaning |
200 |
Positions listed. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Create a position
POST /v1/inventory/position
Creates a new position (ad slot) linked to a location, format, and position type. A request that omits the active status creates an active position.
Request body
| Parameter | In | Required | Type | Description |
active |
body | No | boolean | Whether the position is active or not. A request that omits the active status creates an active position. |
name |
body | No | string | Name of the position, recommended for use with the Campaign Manager UI. |
formatId |
body | Yes | integer | ID of the positions format. |
locationId |
body | Yes | integer | ID of the positions location. |
url |
body | No | string | URL for identifying the position. |
positionTypeId |
body | No | integer | ID of the position type (when applicable). |
Creating a new position
{
"active": true,
"name": "SCP Billboard",
"formatId": 4,
"locationId": 9,
"url": "_scp_billboard",
"positionTypeId": 10
}
Response - 201
{
"id": 20,
"publisherId": 5,
"transferId": 0,
"active": true,
"creation": "Sep 22, 2026, 1:56:07 PM CEST",
"edited": "Sep 22, 2026, 1:56:07 PM CEST",
"name": "SCP Billboard",
"formatId": 4,
"formatName": "Billboard",
"formatWidth": 970,
"formatHeight": 250,
"formatSize": 0,
"locationId": 9,
"locationName": "SCP",
"locationTypeId": 10,
"publicationName": "String Created Publication",
"previewUrl": null,
"url": "_scp_billboard"
}
Response codes
| Status | Meaning |
201 |
Position created. |
400 |
Bad request - invalid input or parameters. |
401/403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
405 |
Method not allowed |
406 |
Not acceptable |
409 |
Conflict. |
415 |
Unsupported media type |
500 |
Internal Server Error - Unexpected failure. |
Locations
List a single location
GET /v1/inventory/location/{id}
Retrieves a single location by its ID.
Request body
locationId
path
Yes
integer
The location ID of the location you want to list.
Response - 200
{
"id": 9,
"name": "SCP",
"publicationId": 5,
"publicationQuote": "SCP",
"impressions": 0,
"impressionsWeekend": 0,
"contacts": 0,
"contactsWeekend": 0,
"isChannel": 0,
"url": "scp_home",
"previewUrl": "",
"code": null,
"price": 0.0,
"active": true,
"locationTypes": [
"full",
"guaranteed"
],
"numberOfBookings": 0
}
Response codes
200
Location listed.
400
Bad request - invalid input or parameters.
401/403
Not authenticated / not allowed.
404
Not Found - Resource not found.
405
Method not allowed
406
Not acceptable
409
Conflict.
415
Unsupported media type
500
Internal Server Error - Unexpected failure.
Update a location
PUT /v1/inventory/location/{id}
Updates the name, URL, channel option code, publication, and location types of an existing location.
Request body
locationId
path
Yes
integer
The location ID of the location you want to list.
publicationId
body
Yes
integer
ID of the publication to which the location belongs.
name
body
No
string
Name of the location.
url
body
No
string
URL for identifying the location on the webpage.
channelOptionCode
body
No
integer
Determines if the location is for single positions or Channels. 0 means single position. Use Use GET /v1/inventory/location-channel-option for other valid channelOptionCode values for your account.
locationTypes
body
No
string
Location types that belong to this location. Options are guranteed and/or full
code
body
No
string
Location code.
price
body
No
integer
Location price.
Response - 200
{
"id": 9,
"name": "SCP",
"publicationId": 5,
"publicationQuote": "SCP",
"impressions": 0,
"impressionsWeekend": 0,
"contacts": 0,
"contactsWeekend": 0,
"isChannel": 0,
"url": "scp_overview",
"previewUrl": "",
"code": "001",
"price": 1.0,
"active": true,
"locationTypes": [
"full",
"guaranteed"
],
"numberOfBookings": 0
}
Response codes
200
Location updated.
400
Bad request - invalid input or parameters.
401/403
Not authenticated / not allowed.
404
Not Found - Resource not found.
405
Method not allowed
406
Not acceptable
409
Conflict.
415
Unsupported media type
500
Internal Server Error - Unexpected failure.