1. Introduction

This document describes GMP365 REST API.

This page is also available as a PDF Document

1.1. Change log

Date Description

2022-10-04

Adding Upload Campaigns and Upload Digital sites and create new Campaign to the API.

2021-12-01

Updating Digital Site and Digital Plan model.

2021-04-09

Adding Delta API

2. Authentication

Token based authentication that requires user setup via GMP Support. All requests apart from Login require header parameter X-auth.

2.1. Login

Login is done to acquire a token to be used with the HTTP Header X-auth for all requests. The response is the token to use as plain text.

Sample request
POST /api/login HTTP/1.1
Content-Type: application/json
Content-Length: 68
Host: www.gmp365.io

{"username": "dummy-user@gmp365.io", "password": "greatPassword123"}
Sample response
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 36

ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
CURL request
$ curl 'https://www.gmp365.io/api/login' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{"username": "dummy-user@gmp365.io", "password": "greatPassword123"}'
HTTPie request
$ echo '{"username": "dummy-user@gmp365.io", "password": "greatPassword123"}' | http POST 'https://www.gmp365.io/api/login' \
    'Content-Type:application/json'

2.2. Request header

All requests (except login) have to have the header X-auth to be accepted. If not a 403 response is returned.

3. Client Data

3.1. Countries for a year

Get a list of all countries for a specific year

Countries listed here contain both Country Code according to ISO 3166-1 Alpha-2, and country name. When a country is referenced somewhere else, as in other objects, only the country code is used.

Sample request
GET /api/v1/countries/year/2019 HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 108

[ {
  "countryCode" : "SE",
  "name" : "Sweden"
}, {
  "countryCode" : "GB",
  "name" : "United Kingdom"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/countries/year/2019' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/countries/year/2019' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

3.2. Years with country set up

Get a list of all years that have been set up for any country

Sample request
GET /api/v1/years HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 20

[ 2019, 2018, 2017 ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/years' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/years' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

3.3. Years for a country

Get a list of all years for a specific country code

Sample request
GET /api/v1/years/country/SE HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 14

[ 2019, 2018 ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/years/country/SE' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/years/country/SE' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

3.4. Brands for a country and year

Get a list of all registered brands for a specific country code and year.

When brands are used in other requests the brands are case sensitive.

Sample request
GET /api/v1/brands/country/SE/year/2018 HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 32

[ "Brand Name", "Brand Name 2" ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/brands/country/SE/year/2018' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/brands/country/SE/year/2018' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

4. Campaigns

4.1. Campaign model

All fields represented in a Campaign object

Path Type Optional Description

id

String

false

GMP ID of the Campaign

name

String

false

Campaign name

startDate

DateString

false

Start date of the Campaign

endDate

DateString

false

End date of the Campaign

regions

Array

false

Regions for the campaign

mediaTypes

Array

false

All Media Types used in the Campaign

externalIds

Array

false

List of external ID key/value pairs

externalIds.[].externalProvider

String

false

Key for external ID

externalIds.[].externalId

String

false

Value for external ID

country

String

false

Country name

countryCode

String

false

Country code according to ISO 3166-1

brand

String

false

Brand name

fiscalYear

Number

false

Fiscal year of the campaign

status

String

false

GMP Campaign status

currency

String

false

Currency according to ISO 4217

4.2. Find Campaigns

Find and list available campaigns for the current authenticated integration user. This is limited to one country code for one year and you can search for a specific Campaign using the externalId and externalProvider parameters. These need to be used together, or skipped completely.

Sample request
GET /api/v1/campaigns/country/SE/year/2018?externalId=ADS-1293493i34_SE&externalProvider=theAdServer HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Table 1. Request parameters
Parameter Optional Description

externalProvider

true

Optional String for external provider, i.e. key for external ID. Must be used with 'externalId' param.

externalId

true

Optional String for external ID. Must be used together with 'externalProvider' param.

Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 443

[ {
  "id" : "8a341f0130444590b9c8863a",
  "name" : "Test campaign",
  "startDate" : "2018-10-01",
  "endDate" : "2018-11-15",
  "fiscalYear" : 2018,
  "mediaTypes" : [ "DIGITAL" ],
  "externalIds" : [ {
    "externalProvider" : "theAdServer",
    "externalId" : "ADS-1293493i34_SE"
  } ],
  "country" : "Sweden",
  "countryCode" : "SE",
  "regions" : [ "South" ],
  "brand" : "Brand Name",
  "status" : "In Followup",
  "currency" : "SEK"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/country/SE/year/2018?externalId=ADS-1293493i34_SE&externalProvider=theAdServer' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/country/SE/year/2018?externalId=ADS-1293493i34_SE&externalProvider=theAdServer' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

4.3. Get single Campaign

Get a single Campaign using GMP Campaign ID. /api/v1/campaigns/{campaignId-to-get}

Sample request
GET /api/v1/campaigns/a4daa3541b4e43baac5c8188 HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 439

{
  "id" : "a4daa3541b4e43baac5c8188",
  "name" : "Test campaign",
  "startDate" : "2018-10-01",
  "endDate" : "2018-11-15",
  "fiscalYear" : 2018,
  "mediaTypes" : [ "DIGITAL" ],
  "externalIds" : [ {
    "externalProvider" : "theAdServer",
    "externalId" : "ADS-1293493i34_SE"
  } ],
  "country" : "Sweden",
  "countryCode" : "SE",
  "regions" : [ "South" ],
  "brand" : "Brand Name",
  "status" : "In Followup",
  "currency" : "SEK"
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/a4daa3541b4e43baac5c8188' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/a4daa3541b4e43baac5c8188' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

4.4. Upload Campaigns

Upload one or several campaigns. After upload, you can Check upload status described below.

Sample request
POST /api/v1/campaigns HTTP/1.1
Content-Type: application/json
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Content-Length: 2156
Host: www.gmp365.io

{
    "idempotencyKey": "23089234098-DRXTS-345",
    "campaigns": [
      {
        "name": "Springtime Campaign",
        "startDate": "2018-04-01",
        "endDate": "2018-05-15",
        "countryCode": "SE",
        "brand": "Brand Name",
        "fiscalYear": 2018,
        "regions": ["South"],
        "externalIds": [ {
               "externalProvider": "theAdServer",
               "externalId": "ADS-1293493i34_SE"
               } ],
        "mediaTypes": ["TV", "RADIO", "PRINT", "OOH", "DIGITAL", "CINEMA", "DIRECT_MAIL", "E_COMMERCE", "RECALL_CAMPAIGN"],
        "tvTypes": [ {
                           "targetAudience": "A25-45",
                           "briefedBudget": 55000.00
                       } ],
        "radioTypes": [ {
                           "targetAudience": "A25-45",
                           "briefedBudget": 55000.00
                       } ],
        "printTypes": [ {
                           "printPublicationType": "MAGAZINE",
                           "briefedBudget": 55000.00
                       } ],
        "oohTypes": [ {
                           "oohPublicationType": "STANDARD",
                           "briefedBudget": 55000.00
                       } ],
        "digitalTypes": [{"briefedBudget": 55000.00}],
        "cinemaTypes": [{"briefedBudget": 55000.00}],
        "otherMediaTypes": [
                                {
                                  "mediaType": "DIRECT_MAIL",
                                   "briefedBudget": 55000.00
                               },
                               {
                                  "mediaType": "E_COMMERCE",
                                   "briefedBudget": 55000.00
                               }
                             ],
        "otherSpendTypes": [ {
                           "mediaType": "RECALL_CAMPAIGN",
                           "briefedBudget": 55000.00
                       } ],
        "businessObjectives": "Business objectives for campaign",
        "advertisingObjectives": "Advertiser objectives for campaign",
        "campaignObjectives": "The campaign objectives"
      }
    ]
}
Table 2. Request fields
Path Type Optional Description

idempotencyKey

String

false

Transaction key. If the key has already been used for a successful transmission of data the result of that upload will be returned, otherwise they payload is accepted and a new result returned

campaigns

Array

false

List of Campaigns to register in GMP

campaigns.[].name

String

false

Campaign name

campaigns.[].startDate

DateString

false

Start date of the Campaign

campaigns.[].endDate

DateString

false

End date of the Campaign

campaigns.[].regions

Array

true

Regions for the Campaign

campaigns.[].countryCode

String

false

Country code according to ISO 3166-1

campaigns.[].brand

String

false

Brand name

campaigns.[].fiscalYear

Number

false

Fiscal year of the campaign

campaigns.[].externalIds

Array

true

List of external ID key/value pairs

campaigns.[].externalIds[].externalId

String

false

Key for the external ID

campaigns.[].externalIds[].externalProvider

String

false

Value for external ID

campaigns.[].mediaTypes

Array

false

All Media Types used in the Campaign

campaigns.[].tvTypes

Array

true

Details for TV plans in the campaign

campaigns.[].tvTypes[].targetAudience

String

true

Target audience for the TV plan

campaigns.[].tvTypes[].regionalTargetAudience

String

true

Regional target audience for the TV plan

campaigns.[].tvTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country

campaigns.[].radioTypes

Array

true

Details for Radio plans in the campaign

campaigns.[].radioTypes[].targetAudience

String

true

Target audience for the Radio plan

campaigns.[].radioTypes[].regionalTargetAudience

String

true

Regional target audience for the Radio plan. Note! Using regional TA for radio will cause a validation error as it is not yet fully supported by the GMP365 platform. It is only part of the API as a preparation for that support.

campaigns.[].radioTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country

campaigns.[].printTypes

Array

true

Details for Print plans in the campaign

campaigns.[].printTypes[].printPublicationType

String

false

The publication type of the plan. See Print Publication Types for available options.

campaigns.[].printTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country

campaigns.[].oohTypes

Array

true

Details for OOH plans in the campaign

campaigns.[].oohTypes[].oohPublicationType

String

false

The type of the plan. Available options are STANDARD and DIGITAL

campaigns.[].oohTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country

campaigns.[].digitalTypes

Array

true

Details for Digital plans in the campaign

campaigns.[].digitalTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country

campaigns.[].cinemaTypes

Array

true

Details for Cinema plans in the campaign

campaigns.[].cinemaTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country

campaigns.[].otherMediaTypes

Array

true

Details for Other Media plans in the campaign

campaigns.[].otherMediaTypes[].mediaType

String

false

The type of the plan. See Other Media Types for available options

campaigns.[].otherMediaTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country

campaigns.[].otherSpendTypes

Array

true

Details for Other Spend plans in the campaign

campaigns.[].otherSpendTypes[].mediaType

String

false

The type of the plan. See Other Spend Types for available options

campaigns.[].otherSpendTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country

campaigns.[].businessObjectives

String

true

The business objectives for the campaign

campaigns.[].advertisingObjectives

String

true

The advertising objectives for the campaign

campaigns.[].campaignObjectives

String

true

The campaign objectives

Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 219

{
  "statusId" : "FUL_4c6e514eaf3a49e5bce48bc1",
  "created" : "2022-11-21T16:30:59.939Z",
  "percentDone" : 0,
  "state" : "PENDING",
  "errors" : [ ],
  "campaignId" : null,
  "planIds" : null,
  "campaignIds" : [ ]
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -d '{
    "idempotencyKey": "23089234098-DRXTS-345",
    "campaigns": [
      {
        "name": "Springtime Campaign",
        "startDate": "2018-04-01",
        "endDate": "2018-05-15",
        "countryCode": "SE",
        "brand": "Brand Name",
        "fiscalYear": 2018,
        "regions": ["South"],
        "externalIds": [ {
               "externalProvider": "theAdServer",
               "externalId": "ADS-1293493i34_SE"
               } ],
        "mediaTypes": ["TV", "RADIO", "PRINT", "OOH", "DIGITAL", "CINEMA", "DIRECT_MAIL", "E_COMMERCE", "RECALL_CAMPAIGN"],
        "tvTypes": [ {
                           "targetAudience": "A25-45",
                           "briefedBudget": 55000.00
                       } ],
        "radioTypes": [ {
                           "targetAudience": "A25-45",
                           "briefedBudget": 55000.00
                       } ],
        "printTypes": [ {
                           "printPublicationType": "MAGAZINE",
                           "briefedBudget": 55000.00
                       } ],
        "oohTypes": [ {
                           "oohPublicationType": "STANDARD",
                           "briefedBudget": 55000.00
                       } ],
        "digitalTypes": [{"briefedBudget": 55000.00}],
        "cinemaTypes": [{"briefedBudget": 55000.00}],
        "otherMediaTypes": [
                                {
                                  "mediaType": "DIRECT_MAIL",
                                   "briefedBudget": 55000.00
                               },
                               {
                                  "mediaType": "E_COMMERCE",
                                   "briefedBudget": 55000.00
                               }
                             ],
        "otherSpendTypes": [ {
                           "mediaType": "RECALL_CAMPAIGN",
                           "briefedBudget": 55000.00
                       } ],
        "businessObjectives": "Business objectives for campaign",
        "advertisingObjectives": "Advertiser objectives for campaign",
        "campaignObjectives": "The campaign objectives"
      }
    ]
}'
HTTPie request
$ echo '{
    "idempotencyKey": "23089234098-DRXTS-345",
    "campaigns": [
      {
        "name": "Springtime Campaign",
        "startDate": "2018-04-01",
        "endDate": "2018-05-15",
        "countryCode": "SE",
        "brand": "Brand Name",
        "fiscalYear": 2018,
        "regions": ["South"],
        "externalIds": [ {
               "externalProvider": "theAdServer",
               "externalId": "ADS-1293493i34_SE"
               } ],
        "mediaTypes": ["TV", "RADIO", "PRINT", "OOH", "DIGITAL", "CINEMA", "DIRECT_MAIL", "E_COMMERCE", "RECALL_CAMPAIGN"],
        "tvTypes": [ {
                           "targetAudience": "A25-45",
                           "briefedBudget": 55000.00
                       } ],
        "radioTypes": [ {
                           "targetAudience": "A25-45",
                           "briefedBudget": 55000.00
                       } ],
        "printTypes": [ {
                           "printPublicationType": "MAGAZINE",
                           "briefedBudget": 55000.00
                       } ],
        "oohTypes": [ {
                           "oohPublicationType": "STANDARD",
                           "briefedBudget": 55000.00
                       } ],
        "digitalTypes": [{"briefedBudget": 55000.00}],
        "cinemaTypes": [{"briefedBudget": 55000.00}],
        "otherMediaTypes": [
                                {
                                  "mediaType": "DIRECT_MAIL",
                                   "briefedBudget": 55000.00
                               },
                               {
                                  "mediaType": "E_COMMERCE",
                                   "briefedBudget": 55000.00
                               }
                             ],
        "otherSpendTypes": [ {
                           "mediaType": "RECALL_CAMPAIGN",
                           "briefedBudget": 55000.00
                       } ],
        "businessObjectives": "Business objectives for campaign",
        "advertisingObjectives": "Advertiser objectives for campaign",
        "campaignObjectives": "The campaign objectives"
      }
    ]
}' | http POST 'https://www.gmp365.io/api/v1/campaigns' \
    'Content-Type:application/json' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

4.5. Set external id

Set or add external provider/id on a Campaign. /api/v1/campaigns/{campaignId-to-register-to}/external-ids

Sample request
PUT /api/v1/campaigns/eddddac88be54d7390094094/external-ids HTTP/1.1
Content-Type: application/json
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Content-Length: 79
Host: www.gmp365.io

[
    {"externalProvider": "theAdServer", "externalId": "ADS-1293493i34_SE"}

]
Table 3. Request fields
Path Type Optional Description

[].externalProvider

String

false

Key for the external ID you wish to add

[].externalId

String

false

The ID you wish to add

Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 439

{
  "id" : "eddddac88be54d7390094094",
  "name" : "Test campaign",
  "startDate" : "2018-10-01",
  "endDate" : "2018-11-15",
  "fiscalYear" : 2018,
  "mediaTypes" : [ "DIGITAL" ],
  "externalIds" : [ {
    "externalProvider" : "theAdServer",
    "externalId" : "ADS-1293493i34_SE"
  } ],
  "country" : "Sweden",
  "countryCode" : "SE",
  "regions" : [ "South" ],
  "brand" : "Brand Name",
  "status" : "In Followup",
  "currency" : "SEK"
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/eddddac88be54d7390094094/external-ids' -i -X PUT \
    -H 'Content-Type: application/json' \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -d '[
    {"externalProvider": "theAdServer", "externalId": "ADS-1293493i34_SE"}

]'
HTTPie request
$ echo '[
    {"externalProvider": "theAdServer", "externalId": "ADS-1293493i34_SE"}

]' | http PUT 'https://www.gmp365.io/api/v1/campaigns/eddddac88be54d7390094094/external-ids' \
    'Content-Type:application/json' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

5. Delta API

The Delta API will return ID’s for all Campaigns and it’s Media Plans that have changed within a specified date interval with from and to dates. Optionally you can limit the request to specified country codes. The date interval is not allowed to exceed 366 days (full leap year).

All IDs are accompanied by events, these can be either CREATED, UPDATED, a combination of both of those or DISMISSED. If a campaign has been DISMISSED all media plans connected to it has been dismissed as well and will not be included in the response. If a media plan has been DISMISSED but not the campaign the event will show up on a media plan level.

Campaign Delta model (Example from the response)

Example of a response entity containing both CREATED and UPDATED plans on an UPDATED Campaign

{
  "campaignId" : "517bfddffce145dbb60fe385",
  "events" : [ "UPDATED" ],
  "planIdsByMediaType" : {
    "OOH" : [ {
      "id" : "669bdf5f9f5c492986aa7eca",
      "events" : [ "UPDATED" ]
    } ],
    "DIGITAL" : [ {
      "id" : "3e943834bb324460b9ce098b",
      "events" : [ "DISMISSED" ]
    } ],
    "TV" : [ {
      "id" : "b94f60b965c043049f56abce",
      "events" : [ "CREATED" ]
    }, {
      "id" : "ced75009599e41a29faddd4b",
      "events" : [ "CREATED", "UPDATED" ]
    } ]
  }
}
Sample request
POST /api/v1/delta/campaign HTTP/1.1
Content-Type: application/json
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Content-Length: 73
Host: www.gmp365.io

{
   "from": "2021-01-01",
   "to": "2021-01-31",
   "countryCodes": []
}
Table 4. Request fields
Path Type Optional Description

from

DateString

false

Date to use as start of delta search.

to

DateString

false

Date to use as end of delta search.

countryCodes

Array

true

Optional limitation to specific country codes. If not given, all countries are included.

CURL request
$ curl 'https://www.gmp365.io/api/v1/delta/campaign' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json' \
    -d '{
   "from": "2021-01-01",
   "to": "2021-01-31",
   "countryCodes": []
}'
HTTPie request
$ echo '{
   "from": "2021-01-01",
   "to": "2021-01-31",
   "countryCodes": []
}' | http POST 'https://www.gmp365.io/api/v1/delta/campaign' \
    'Content-Type:application/json' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6. Media Plan

All details for a Campaign are stored in Media Plans for each media type.

6.1. TV

6.1.1. TV Periods explained

TV channels are broken down in periods. These periods always start with a Monday or the first day of a month and are maximum of 7 days long. This is to be able to aggregate values up to either weeks or months easily. In the sample responses below we have the start date 2019-02-25 and end date 2019-03-10. Since this is over a monthly break we get three periods even though it is only 2 calendar weeks. First period is 3 days long stretching from 2019-02-25 to 2019-02-28. Second period is 4 days long stretching from 2019-03-01 to 2019-03-03. The third period is 7 days long stretching from 2019-03-04 to 2019-03-10.

Actual periods in the channels can differ from TV Plan dates since the TV Plan dates can come from planned data.

6.1.2. TV Plan model

All fields represented in a TV plan object

Path Type Optional Description

id

String

false

GMP ID for the TV Plan

campaignId

String

false

GMP ID for Campaign

campaignName

String

false

Campaign name

countryCode

String

false

Country code according to ISO 3166-1

regions

Array

true

List of regions

brand

String

false

Brand name

planStatus

String

false

Plan status

startDate

DateString

false

TV Plan start date

endDate

DateString

false

TV Plan end date

fiscalYear

Number

false

Fiscal year

currency

String

false

Currency according to ISO 4217

targetAudience

String

false

Target Audience

genericTargetAudience

String

true

Generic Target Audience, typically A15+ or LDA+

comparisonUnit

String

false

Comparison value, CPP for GRP, CPS for Spots or CPM for Impacts ('000)

poNumber

String

true

PO Number

agencyRemuneration

Object

false

Agency fees, can be only null values

agencyRemuneration.percentOnNet

Number

false

Percent on Net

agencyRemuneration.percentOnNetNet

Number

false

Percent on NetNet

agencyRemuneration.fixedFee

Number

false

Fixed sum fee

plannedSummary

Object

true

Summary of planned values

plannedSummary.net

Number

false

Total planned Media net in TV plan

plannedSummary.netNet

Number

false

Total planned Media net net in TV plan

plannedSummary.grp

Number

false

Total planned GRPs in TV plan

plannedSummary.grp30

Number

false

Total planned GRP30s in TV plan

plannedSummary.spots

Number

false

Total planned number of spots in TV plan, used if comparison value is CPS

plannedSummary.spots30

Number

false

Total planned number of spots in 30 second equality in TV plan, used if comparison value is CPS

plannedSummary.impacts

Number

false

Total planned number of impacts ('000) in TV plan, used if comparison value is CPM

plannedSummary.impacts30

Number

false

Total planned number of impacts ('000) in 30 second equality in TV plan, used if comparison value is CPM

plannedSummary.averageWeeklyReach

Number

true

Planned average weekly reach % for Target Audience

plannedSummary.averageWeeklyReachGenericTargetAudience

Number

true

Planned average weekly reach % for Generic Target Audience

plannedSummary.reach

Object

false

Planned reach values for TV plan

plannedSummary.reach.onePlus

Number

true

Planned reach for 1+ frequency

plannedSummary.reach.twoPlus

Number

true

Planned reach for 2+ frequency

plannedSummary.reach.threePlus

Number

true

Planned reach for 3+ frequency

plannedSummary.reach.fourPlus

Number

true

Planned reach for 4+ frequency

plannedSummary.reach.fivePlus

Number

true

Planned reach for 5+ frequency

plannedSummary.reach.sixPlus

Number

true

Planned reach for 6+ frequency

plannedSummary.reach.sevenPlus

Number

true

Planned reach for 7+ frequency

plannedSummary.reach.eightPlus

Number

true

Planned reach for 8+ frequency

plannedSummary.reach.ninePlus

Number

true

Planned reach for 9+ frequency

plannedSummary.reach.tenPlus

Number

true

Planned reach for 10+ frequency

plannedSummary.effectiveFrequency

String

true

Planned effective frequency for TV plan

plannedSummary.effectiveReach

Number

true

Planned effective reach % for TV plan

plannedSummary.indexPercent

Array

true

Planned quality index percentages for TV plan

plannedSummary.indexPercent.[].index

String

false

Planned quality index type

plannedSummary.indexPercent.[].percent

Number

false

Planned quality index level as a %

actualSummary

Object

true

Summary of actual values

actualSummary.net

Number

false

Total actual Media net in TV plan

actualSummary.netNet

Number

false

Total actual Media net net in TV plan

actualSummary.grp

Number

false

Total actual GRPs in TV plan, used if comparison value is CPP

actualSummary.grp30

Number

false

Total actual GRP30s in TV plan, used if comparison value is CPP

actualSummary.spots

Number

false

Total actual number of spots in TV plan, used if comparison value is CPS

actualSummary.spots30

Number

false

Total actual number of spots in 30 second equality in TV plan, used if comparison value is CPS

actualSummary.impacts

Number

false

Total actual number of impacts ('000) in TV plan, used if comparison value is CPM

actualSummary.impacts30

Number

false

Total actual number of impacts ('000) in 30 second equality in TV plan, used if comparison value is CPM

actualSummary.averageWeeklyReach

Number

true

Actual average weekly reach % for Target Audience

actualSummary.averageWeeklyReachGenericTargetAudience

Number

true

Actual average weekly reach % for Generic Target Audience

actualSummary.reach

Object

false

Actual reach values for TV plan

actualSummary.reach.onePlus

Number

true

Actual reach for 1+ frequency

actualSummary.reach.twoPlus

Number

true

Actual reach for 2+ frequency

actualSummary.reach.threePlus

Number

true

Actual reach for 3+ frequency

actualSummary.reach.fourPlus

Number

true

Actual reach for 4+ frequency

actualSummary.reach.fivePlus

Number

true

Actual reach for 5+ frequency

actualSummary.reach.sixPlus

Number

true

Actual reach for 6+ frequency

actualSummary.reach.sevenPlus

Number

true

Actual reach for 7+ frequency

actualSummary.reach.eightPlus

Number

true

Actual reach for 8+ frequency

actualSummary.reach.ninePlus

Number

true

Actual reach for 9+ frequency

actualSummary.reach.tenPlus

Number

true

Actual reach for 10+ frequency

actualSummary.effectiveFrequency

String

true

Actual effective frequency for TV plan

actualSummary.effectiveReach

Number

true

Actual effective reach % for TV plan

actualSummary.indexPercent

Array

true

Actual quality index percentages for TV plan

actualSummary.indexPercent.[].index

String

false

Actual quality index type

actualSummary.indexPercent.[].percent

Number

false

Actual quality index level as a %

filmCodes

Array

true

List of Film codes

filmCodes.[].creativeName

String

true

Name of the Creative used

filmCodes.[].share

Number

true

GRP30 or Spots share in %

filmCodes.[].technicalCode

String

true

Technical Spots code

filmCodes.[].durationInSeconds

Number

true

Film duration in seconds

filmCodes.[].indexTo30Seconds

Number

true

Conversion index to 30 seconds length

channels

Array

false

List of TV Channels

channels.[].name

String

true

TV Channel name

channels.[].plannedValues

Object

false

Planned values for Channel

channels.[].plannedValues.conversionIndexToGenericTa

Number

true

Planned conversion Index to Generic Target Audience

channels.[].plannedValues.discountPercent

Number

true

Planned discount in %

channels.[].plannedValues.net

Number

true

Planned media net

channels.[].plannedValues.netNet

Number

true

Planned media net net

channels.[].plannedValues.grp

Number

true

Planned GRPs for channel if comparison value is CPP

channels.[].plannedValues.grp30

Number

true

Planned GRP30s for channel if comparison value is CPP

channels.[].plannedValues.spots

Number

true

Planned number of spots for channel if comparison value is CPS

channels.[].plannedValues.spots30

Number

true

Planned number of spots in 30 second equivalence for channel if comparison value is CPS

channels.[].plannedValues.impacts

Number

true

Planned number of impacts ('000) for channel if comparison value is CM

channels.[].plannedValues.impacts30

Number

true

Planned number of impacts ('000) in 30 second equivalence for channel if comparison value is CPM

channels.[].plannedValues.indexPercent

Array

false

Planned quality index for channel

channels.[].plannedValues.indexPercent.[].index

String

false

Planned quality index for channel

channels.[].plannedValues.indexPercent.[].percent

Number

false

Planned quality index percent for channel

channels.[].plannedValues.periods

Array

false

Planned week/month periods for channel

channels.[].plannedValues.periods.[].year

Number

false

Period year

channels.[].plannedValues.periods.[].month

Number

false

Period month

channels.[].plannedValues.periods.[].week

Number

false

Period week

channels.[].plannedValues.periods.[].startDate

DateString

false

Period start date

channels.[].plannedValues.periods.[].endDate

DateString

false

Period end date

channels.[].plannedValues.periods.[].netNet

Null

false

Always null for planned values

channels.[].plannedValues.periods.[].grpShare

Number

false

Planned share for period of GRP, Spots or Impacts ('000)

channels.[].plannedValues.periods.[].grp30Share

Number

false

Planned share for period of GRP30, Spots30 or Impacts30 ('000)

channels.[].plannedValues.periods.[].indexPercent

Array

false

Planned quality index percentages for period

channels.[].plannedValues.periods.[].indexPercent.[].index

String

false

Planned quality index for period

channels.[].plannedValues.periods.[].indexPercent.[].percent

Number

false

Planned quality index percent for period

channels.[].plannedValues.periods.[].creativeCodeBreakdown

Array

false

Planned breakdown per Film Code for period

channels.[].plannedValues.periods.[].creativeCodeBreakdown.[].creativeName

String

false

Name of the creative used

channels.[].plannedValues.periods.[].creativeCodeBreakdown.[].share

Number

false

Planned share of GRP30 for the period

channels.[].actualValues

Object

true

Actual values for Channel

channels.[].actualValues.conversionIndexToGenericTa

Number

true

Actual conversion Index to Generic Target Audience

channels.[].actualValues.discountPercent

Number

true

Actual discount in %

channels.[].actualValues.net

Number

true

Actual media net

channels.[].actualValues.netNet

Number

true

Actual media net net

channels.[].actualValues.grp

Number

true

Actual GRPs for channel if comparison value is CPP

channels.[].actualValues.grp30

Number

true

Actual GRP30s for channel if comparison value is CPP

channels.[].actualValues.spots

Number

true

Actual number of spots for channel if comparison value is CPS

channels.[].actualValues.spots30

Number

true

Actual number of spots in 30 second equivalence for channel if comparison value is CPS

channels.[].actualValues.impacts

Number

true

Actual number of impacts ('000) for channel if comparison value is CPM

channels.[].actualValues.impacts30

Number

true

Actual number of impacts ('000) in 30 second equivalence for channel if comparison value is CPM

channels.[].actualValues.indexPercent

Array

false

Actual quality index for channel

channels.[].actualValues.indexPercent.[].index

String

false

Actual quality index for channel

channels.[].actualValues.indexPercent.[].percent

Number

false

Actual quality index percent for channel

channels.[].actualValues.periods

Array

false

Actual week/month periods for channel

channels.[].actualValues.periods.[].year

Number

false

Period year

channels.[].actualValues.periods.[].month

Number

false

Period month

channels.[].actualValues.periods.[].week

Number

false

Period week

channels.[].actualValues.periods.[].startDate

DateString

false

Period start date

channels.[].actualValues.periods.[].endDate

DateString

false

Period end date

channels.[].actualValues.periods.[].netNet

Number

false

Actual NetNet for period

channels.[].actualValues.periods.[].grpShare

Number

false

Actual share for period of GRP, Spots or Impacts ('000)

channels.[].actualValues.periods.[].grp30Share

Number

false

Actual share for period of GRP30, Spots30 or Impacts30 ('000)

channels.[].actualValues.periods.[].indexPercent

Array

false

Actual quality index percentages for period

channels.[].actualValues.periods.[].indexPercent.[].index

String

false

Actual quality index for period

channels.[].actualValues.periods.[].indexPercent.[].percent

Number

false

Actual quality index percent for period

channels.[].actualValues.periods.[].creativeCodeBreakdown

Array

false

Actual breakdown per Film Code for period

channels.[].actualValues.periods.[].creativeCodeBreakdown.[].creativeName

String

false

Name of the creative used

channels.[].actualValues.periods.[].creativeCodeBreakdown.[].share

Number

false

Actual share of GRP30 for the period

6.1.3. Get TV Plans for Campaign

Get all TV plans for a specific Campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/tv/plans HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 12114

[ {
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 0.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "grp" : 18.0,
    "grp30" : 18.0,
    "spots" : null,
    "spots30" : null,
    "impacts" : null,
    "impacts30" : null,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "effectiveFrequency" : "3+",
    "effectiveReach" : 28.1,
    "indexPercent" : [ {
      "index" : "PRIME_TIME",
      "percent" : 44.5
    }, {
      "index" : "POSITION_IN_BREAK",
      "percent" : 30.0
    }, {
      "index" : "SHARE_OF_SPECIFICS",
      "percent" : 10.0
    } ],
    "averageWeeklyReach" : 22.1,
    "averageWeeklyReachGenericTargetAudience" : 29.7
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "grp" : 18.0,
    "grp30" : 18.0,
    "spots" : null,
    "spots30" : null,
    "impacts" : null,
    "impacts30" : null,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "effectiveFrequency" : "3+",
    "effectiveReach" : 28.1,
    "indexPercent" : [ {
      "index" : "PRIME_TIME",
      "percent" : 44.5
    }, {
      "index" : "POSITION_IN_BREAK",
      "percent" : 30.0
    }, {
      "index" : "SHARE_OF_SPECIFICS",
      "percent" : 10.0
    } ],
    "averageWeeklyReach" : 22.1,
    "averageWeeklyReachGenericTargetAudience" : 29.7
  },
  "targetAudience" : "A20-49",
  "genericTargetAudience" : "A15+",
  "comparisonUnit" : "CPP",
  "filmCodes" : [ {
    "creativeName" : "Commercial film",
    "share" : 100.0,
    "technicalCode" : "AREE28177",
    "durationInSeconds" : 30,
    "indexTo30Seconds" : 100.0
  } ],
  "channels" : [ {
    "name" : "Channel 1",
    "plannedValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "PRIME_TIME",
        "percent" : 44.5
      }, {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      } ]
    },
    "actualValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "PRIME_TIME",
        "percent" : 44.5
      }, {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      } ]
    }
  }, {
    "name" : "Channel 2",
    "plannedValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "PRIME_TIME",
        "percent" : 44.5
      }, {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      } ]
    },
    "actualValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "PRIME_TIME",
        "percent" : 44.5
      }, {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      } ]
    }
  } ]
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/tv/plans' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/tv/plans' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.1.4. Get TV Plan by ID

Get a specific TV plan using GMP Campaign ID and TV Plan ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/tv/plans/5c41f5922944030003c58f7e HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 12110

{
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 0.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "grp" : 18.0,
    "grp30" : 18.0,
    "spots" : null,
    "spots30" : null,
    "impacts" : null,
    "impacts30" : null,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "effectiveFrequency" : "3+",
    "effectiveReach" : 28.1,
    "indexPercent" : [ {
      "index" : "PRIME_TIME",
      "percent" : 44.5
    }, {
      "index" : "POSITION_IN_BREAK",
      "percent" : 30.0
    }, {
      "index" : "SHARE_OF_SPECIFICS",
      "percent" : 10.0
    } ],
    "averageWeeklyReach" : 22.1,
    "averageWeeklyReachGenericTargetAudience" : 29.7
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "grp" : 18.0,
    "grp30" : 18.0,
    "spots" : null,
    "spots30" : null,
    "impacts" : null,
    "impacts30" : null,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "effectiveFrequency" : "3+",
    "effectiveReach" : 28.1,
    "indexPercent" : [ {
      "index" : "PRIME_TIME",
      "percent" : 44.5
    }, {
      "index" : "POSITION_IN_BREAK",
      "percent" : 30.0
    }, {
      "index" : "SHARE_OF_SPECIFICS",
      "percent" : 10.0
    } ],
    "averageWeeklyReach" : 22.1,
    "averageWeeklyReachGenericTargetAudience" : 29.7
  },
  "targetAudience" : "A20-49",
  "genericTargetAudience" : "A15+",
  "comparisonUnit" : "CPP",
  "filmCodes" : [ {
    "creativeName" : "Commercial film",
    "share" : 100.0,
    "technicalCode" : "AREE28177",
    "durationInSeconds" : 30,
    "indexTo30Seconds" : 100.0
  } ],
  "channels" : [ {
    "name" : "Channel 1",
    "plannedValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "PRIME_TIME",
        "percent" : 44.5
      }, {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      } ]
    },
    "actualValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "PRIME_TIME",
        "percent" : 44.5
      }, {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      } ]
    }
  }, {
    "name" : "Channel 2",
    "plannedValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "PRIME_TIME",
        "percent" : 44.5
      }, {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      } ]
    },
    "actualValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "PRIME_TIME",
        "percent" : 44.5
      }, {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "PRIME_TIME",
          "percent" : 44.5
        }, {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Commercial film",
          "share" : 100
        } ]
      } ]
    }
  } ]
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/tv/plans/5c41f5922944030003c58f7e' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/tv/plans/5c41f5922944030003c58f7e' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.1.5. TV Spot model

All fields represented for a TV Spot object

Path Type Optional Description

campaignId

String

false

GMP ID for Campaign that spot is connected to

tvPlanId

String

false

GMP ID for the TV Plan that spot is connected to

tvChannelName

String

false

Reported name of TV channel

programName

String

true

TV Program Name

airDate

DateString

false

Air date for spot

airTime

String

false

Air time of day for spot

filmCode

String

true

Film code used for spot

spotLength

Number

true

Spot length in seconds

positionInBreak

Number

true

Spot position within the break

spotsInBreak

Number

true

Number of spots in break

breakType

String

true

Type of break, CB for Center Break (within a TV program), or EB for End Break (after end of a program)

net

Number

true

Net price for spot

netNet

Number

true

Net net price for spot

currency

String

true

Currency for optional net/netNet

targetAudienceValues

Array

false

Target Audience specific values for spot

targetAudienceValues.[].targetAudience

String

false

Name of the Target Audience the values apply to

targetAudienceValues.[].grp

Number

false

Number of GRP for spot in given Target Audience

targetAudienceValues.[].grp30

Number

false

Number of GRP in 30 second equivalence for spot in given Target Audience

targetAudienceValues.[].impacts

Number

true

Number of people corresponding to the GRP in Target Audience

targetAudienceValues.[].impacts30

Number

true

Number of people corresponding to the GRP30 in Target Audience

targetAudienceValues.[].reach

Object

true

Reach values given in this spot

targetAudienceValues.[].reach.onePlus

Number

true

Reach buildup for 1+ frequency given in this spot

targetAudienceValues.[].reach.twoPlus

Number

true

Reach buildup for 2+ frequency given in this spot

targetAudienceValues.[].reach.threePlus

Number

true

Reach buildup for 3+ frequency given in this spot

targetAudienceValues.[].reach.fourPlus

Number

true

Reach buildup for 4+ frequency given in this spot

targetAudienceValues.[].reach.fivePlus

Number

true

Reach buildup for 5+ frequency given in this spot

targetAudienceValues.[].reach.sixPlus

Number

true

Reach buildup for 6+ frequency given in this spot

targetAudienceValues.[].reach.sevenPlus

Number

true

Reach buildup for 7+ frequency given in this spot

targetAudienceValues.[].reach.eightPlus

Number

true

Reach buildup for 8+ frequency given in this spot

targetAudienceValues.[].reach.ninePlus

Number

true

Reach buildup for 9+ frequency given in this spot

targetAudienceValues.[].reach.tenPlus

Number

true

Reach buildup for 10+ frequency given in this spot

targetAudienceValues.[].unique

Number

true

Unique 1+ frequency addition for the spot

6.1.6. Get TV Spots for a Campaign

Get all TV Spots for a single campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/workingCampaignId/tv/tv-spots HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 812

[ {
  "campaignId" : "workingCampaignId",
  "tvPlanId" : "workingTvPlanId",
  "tvChannelName" : "Channel Name",
  "airDate" : "2019-01-24",
  "airTime" : "18:33:02",
  "programName" : "Program Name",
  "filmCode" : "Film Code",
  "spotLength" : 30,
  "positionInBreak" : 1,
  "spotsInBreak" : 8,
  "breakType" : "CB",
  "net" : 100,
  "netNet" : 80,
  "currency" : "SEK",
  "targetAudienceValues" : [ {
    "targetAudience" : "A20-49",
    "grp" : 1.2,
    "grp30" : 1.2,
    "impacts" : 100,
    "impacts30" : 100,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "unique" : 0.9
  } ]
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/workingCampaignId/tv/tv-spots' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/workingCampaignId/tv/tv-spots' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.1.7. Get TV Spots for a TV Plan

Get all TV Spots for a single campaign using GMP Campaign ID and TV Plan ID

Sample request
GET /api/v1/campaigns/workingCampaignId/tv/workingTvPlanId/tv-spots HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 812

[ {
  "campaignId" : "workingCampaignId",
  "tvPlanId" : "workingTvPlanId",
  "tvChannelName" : "Channel Name",
  "airDate" : "2019-01-24",
  "airTime" : "18:33:02",
  "programName" : "Program Name",
  "filmCode" : "Film Code",
  "spotLength" : 30,
  "positionInBreak" : 1,
  "spotsInBreak" : 8,
  "breakType" : "CB",
  "net" : 100,
  "netNet" : 80,
  "currency" : "SEK",
  "targetAudienceValues" : [ {
    "targetAudience" : "A20-49",
    "grp" : 1.2,
    "grp30" : 1.2,
    "impacts" : 100,
    "impacts30" : 100,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "unique" : 0.9
  } ]
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/workingCampaignId/tv/workingTvPlanId/tv-spots' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/workingCampaignId/tv/workingTvPlanId/tv-spots' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

6.2. Radio

6.2.1. Radio Periods explained

Radio stations are broken down in periods. These periods always start with a Monday or the first day of a month and are maximum of 7 days long. This is to be able to aggregate up to either weeks or months easily. In the sample responses below we have the start date 2019-02-25 and end date 2019-03-10. Since this is over a monthly break we get three periods even though it is only 2 calendar weeks. First period is 3 days long stretching from 2019-02-25 to 2019-02-28. Second period is 4 days long stretching from 2019-03-01 to 2019-03-03. The third period is 7 days long stretching from 2019-03-04 to 2019-03-10.

Actual periods in the stations can differ from Radio Plan dates since the Radio Plan dates can come from planned data.

6.2.2. Radio Plan model

All fields represented in a Radio plan object

Path Type Optional Description

id

String

false

GMP ID for the Radio Plan

campaignId

String

false

GMP ID for Campaign

campaignName

String

false

Campaign name

countryCode

String

false

Country code according to ISO 3166-1

regions

Array

true

List of regions

brand

String

false

Brand name

planStatus

String

false

Plan status

startDate

DateString

false

Radio Plan start date

endDate

DateString

false

Radio Plan end date

fiscalYear

Number

false

Fiscal year

currency

String

false

Currency according to ISO 4217

targetAudience

String

false

Target Audience

genericTargetAudience

String

true

Generic Target Audience, typically A15+ or LDA+

comparisonUnit

String

false

Comparison value, CPP for GRP, CPS for Spots or CPM for Impacts ('000)

poNumber

String

true

PO Number

agencyRemuneration

Object

false

Agency fees, can be only null values

agencyRemuneration.percentOnNet

Number

false

Percent on Net

agencyRemuneration.percentOnNetNet

Number

false

Percent on NetNet

agencyRemuneration.fixedFee

Number

false

Fixed sum fee

plannedSummary

Object

true

Summary of planned values

plannedSummary.net

Number

false

Total planned Media net in Radio plan

plannedSummary.netNet

Number

false

Total planned Media net net in Radio plan

plannedSummary.grp

Number

false

Total planned GRPs in Radio plan

plannedSummary.grp30

Number

false

Total planned GRP30s in Radio plan

plannedSummary.spots

Number

false

Total planned number of spots in Radio plan, used if comparison value is CPS

plannedSummary.spots30

Number

false

Total planned number of spots in 30 second equality in Radio plan, used if comparison value is CPS

plannedSummary.impacts

Number

false

Total planned number of impacts in Radio plan, used if comparison value is CPM

plannedSummary.impacts30

Number

false

Total planned number of impacts in 30 second equality in Radio plan, used if comparison value is CPM

plannedSummary.reach

Object

false

Planned reach values for Radio plan

plannedSummary.reach.onePlus

Number

true

Planned reach for 1+ frequency

plannedSummary.reach.twoPlus

Number

true

Planned reach for 2+ frequency

plannedSummary.reach.threePlus

Number

true

Planned reach for 3+ frequency

plannedSummary.reach.fourPlus

Number

true

Planned reach for 4+ frequency

plannedSummary.reach.fivePlus

Number

true

Planned reach for 5+ frequency

plannedSummary.reach.sixPlus

Number

true

Planned reach for 6+ frequency

plannedSummary.reach.sevenPlus

Number

true

Planned reach for 7+ frequency

plannedSummary.reach.eightPlus

Number

true

Planned reach for 8+ frequency

plannedSummary.reach.ninePlus

Number

true

Planned reach for 9+ frequency

plannedSummary.reach.tenPlus

Number

true

Planned reach for 10+ frequency

plannedSummary.effectiveFrequency

String

true

Planned effective frequency for Radio plan

plannedSummary.effectiveReach

Number

true

Planned effective reach % for Radio plan

plannedSummary.indexPercent

Array

true

Planned quality index percentages for Radio plan

plannedSummary.indexPercent.[].index

String

false

Planned quality index type

plannedSummary.indexPercent.[].percent

Number

false

Planned quality index level as a %

actualSummary

Object

true

Summary of actual values

actualSummary.net

Number

false

Total actual Media net in Radio plan

actualSummary.netNet

Number

false

Total actual Media net net in Radio plan

actualSummary.grp

Number

false

Total actual GRPs in Radio plan, used if comparison value is CPP

actualSummary.grp30

Number

false

Total actual GRP30s in Radio plan, used if comparison value is CPP

actualSummary.spots

Number

false

Total actual number of spots in Radio plan, used if comparison value is CPS

actualSummary.spots30

Number

false

Total actual number of spots in 30 second equality in Radio plan, used if comparison value is CPS

actualSummary.impacts

Number

false

Total actual number of impacts ('000) in Radio plan, used if comparison value is CPM

actualSummary.impacts30

Number

false

Total actual number of impacts ('000) in 30 second equality in Radio plan, used if comparison value is CPM

actualSummary.reach

Object

false

Actual reach values for Radio plan

actualSummary.reach.onePlus

Number

true

Actual reach for 1+ frequency

actualSummary.reach.twoPlus

Number

true

Actual reach for 2+ frequency

actualSummary.reach.threePlus

Number

true

Actual reach for 3+ frequency

actualSummary.reach.fourPlus

Number

true

Actual reach for 4+ frequency

actualSummary.reach.fivePlus

Number

true

Actual reach for 5+ frequency

actualSummary.reach.sixPlus

Number

true

Actual reach for 6+ frequency

actualSummary.reach.sevenPlus

Number

true

Actual reach for 7+ frequency

actualSummary.reach.eightPlus

Number

true

Actual reach for 8+ frequency

actualSummary.reach.ninePlus

Number

true

Actual reach for 9+ frequency

actualSummary.reach.tenPlus

Number

true

Actual reach for 10+ frequency

actualSummary.effectiveFrequency

String

true

Actual effective frequency for Radio plan

actualSummary.effectiveReach

Number

true

Actual effective reach % for Radio plan

actualSummary.indexPercent

Array

true

Actual quality index percentages for Radio plan

actualSummary.indexPercent.[].index

String

false

Actual quality index type

actualSummary.indexPercent.[].percent

Number

false

Actual quality index level as a %

spotVersions

Array

true

List of spot versions used in the campaign

spotVersions.[].creativeName

String

true

Name of the Creative used

spotVersions.[].share

Number

true

GRP30 or Spots share in %

spotVersions.[].technicalCode

String

true

Technical Spots code

spotVersions.[].durationInSeconds

Number

true

Spot duration in seconds

spotVersions.[].indexTo30Seconds

Number

true

Conversion index to 30 seconds length

stations

Array

false

List of Radio stations

stations.[].name

String

true

Radio station name

stations.[].plannedValues

Object

false

Planned values for Channel

stations.[].plannedValues.conversionIndexToGenericTa

Number

true

Planned conversion Index to Generic Target Audience

stations.[].plannedValues.discountPercent

Number

true

Planned discount in %

stations.[].plannedValues.net

Number

true

Planned media net

stations.[].plannedValues.netNet

Number

true

Planned media net net

stations.[].plannedValues.grp

Number

true

Planned GRPs for channel if comparison value is CPP

stations.[].plannedValues.grp30

Number

true

Planned GRP30s for channel if comparison value is CPP

stations.[].plannedValues.spots

Number

true

Planned number of spots for channel if comparison value is CPS

stations.[].plannedValues.spots30

Number

true

Planned number of spots in 30 second equivalence for channel if comparison value is CPS

stations.[].plannedValues.impacts

Number

true

Planned number of impacts ('000) for channel if comparison value is CPM

stations.[].plannedValues.impacts30

Number

true

Planned number of impacts ('000) in 30 second equivalence for channel if comparison value is CPM

stations.[].plannedValues.indexPercent

Array

false

Planned quality index for channel

stations.[].plannedValues.indexPercent.[].index

String

false

Planned quality index for channel

stations.[].plannedValues.indexPercent.[].percent

Number

false

Planned quality index percent for channel

stations.[].plannedValues.periods

Array

false

Planned week/month periods for channel

stations.[].plannedValues.periods.[].year

Number

false

Period year

stations.[].plannedValues.periods.[].month

Number

false

Period month

stations.[].plannedValues.periods.[].week

Number

false

Period week

stations.[].plannedValues.periods.[].startDate

DateString

false

Period start date

stations.[].plannedValues.periods.[].endDate

DateString

false

Period end date

stations.[].plannedValues.periods.[].netNet

Null

false

Always null for planned values

stations.[].plannedValues.periods.[].grpShare

Number

false

Planned share for period of GRP, Spots or Impacts ('000)

stations.[].plannedValues.periods.[].grp30Share

Number

false

Planned share for period of GRP30, Spots30 or Impacts30 ('000)

stations.[].plannedValues.periods.[].indexPercent

Array

false

Planned quality index percentages for period

stations.[].plannedValues.periods.[].indexPercent.[].index

String

false

Planned quality index for period

stations.[].plannedValues.periods.[].indexPercent.[].percent

Number

false

Planned quality index percent for period

stations.[].plannedValues.periods.[].creativeCodeBreakdown

Array

false

Planned breakdown per Spot version for period

stations.[].plannedValues.periods.[].creativeCodeBreakdown.[].creativeName

String

false

Name of the creative used

stations.[].plannedValues.periods.[].creativeCodeBreakdown.[].share

Number

false

Planned share of GRP30 for the period

stations.[].actualValues

Object

true

Actual values for Channel

stations.[].actualValues.conversionIndexToGenericTa

Number

true

Actual conversion Index to Generic Target Audience

stations.[].actualValues.discountPercent

Number

true

Actual discount in %

stations.[].actualValues.net

Number

true

Actual media net

stations.[].actualValues.netNet

Number

true

Actual media net net

stations.[].actualValues.grp

Number

true

Actual GRPs for channel if comparison value is CPP

stations.[].actualValues.grp30

Number

true

Actual GRP30s for channel if comparison value is CPP

stations.[].actualValues.spots

Number

true

Actual number of spots for channel if comparison value is CPS

stations.[].actualValues.spots30

Number

true

Actual number of spots in 30 second equivalence for channel if comparison value is CPS

stations.[].actualValues.impacts

Number

true

Actual number of impacts ('000) for channel if comparison value is CPM

stations.[].actualValues.impacts30

Number

true

Actual number of impacts ('000) in 30 second equivalence for channel if comparison value is CPM

stations.[].actualValues.indexPercent

Array

false

Actual quality index for channel

stations.[].actualValues.indexPercent.[].index

String

false

Actual quality index for channel

stations.[].actualValues.indexPercent.[].percent

Number

false

Actual quality index percent for channel

stations.[].actualValues.periods

Array

false

Actual week/month periods for channel

stations.[].actualValues.periods.[].year

Number

false

Period year

stations.[].actualValues.periods.[].month

Number

false

Period month

stations.[].actualValues.periods.[].week

Number

false

Period week

stations.[].actualValues.periods.[].startDate

DateString

false

Period start date

stations.[].actualValues.periods.[].endDate

DateString

false

Period end date

stations.[].actualValues.periods.[].netNet

Number

false

Actual NetNet for period

stations.[].actualValues.periods.[].grpShare

Number

false

Actual share for period of GRP, Spots or Impacts ('000)

stations.[].actualValues.periods.[].grp30Share

Number

false

Actual share for period of GRP30, Spots30 or Impacts30 ('000)

stations.[].actualValues.periods.[].indexPercent

Array

false

Actual quality index percentages for period

stations.[].actualValues.periods.[].indexPercent.[].index

String

false

Actual quality index for period

stations.[].actualValues.periods.[].indexPercent.[].percent

Number

false

Actual quality index percent for period

stations.[].actualValues.periods.[].creativeCodeBreakdown

Array

false

Actual breakdown per Spot Version for period

stations.[].actualValues.periods.[].creativeCodeBreakdown.[].creativeName

String

false

Name of the creative used

stations.[].actualValues.periods.[].creativeCodeBreakdown.[].share

Number

false

Actual share of GRP30 for the period

6.2.3. Get Radio Plans for Campaign

Get all Radio plans for a specific Campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/radio/plans HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 10672

[ {
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 1.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "grp" : 18.0,
    "grp30" : 18.0,
    "spots" : null,
    "spots30" : null,
    "impacts" : null,
    "impacts30" : null,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "effectiveFrequency" : "3+",
    "effectiveReach" : 28.1,
    "indexPercent" : [ {
      "index" : "POSITION_IN_BREAK",
      "percent" : 30.0
    }, {
      "index" : "SHARE_OF_SPECIFICS",
      "percent" : 10.0
    } ]
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "grp" : 18.0,
    "grp30" : 18.0,
    "spots" : null,
    "spots30" : null,
    "impacts" : null,
    "impacts30" : null,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "effectiveFrequency" : "3+",
    "effectiveReach" : 28.1,
    "indexPercent" : [ {
      "index" : "POSITION_IN_BREAK",
      "percent" : 30.0
    }, {
      "index" : "SHARE_OF_SPECIFICS",
      "percent" : 10.0
    } ]
  },
  "targetAudience" : "A20-49",
  "genericTargetAudience" : "A15+",
  "comparisonUnit" : "CPP",
  "spotVersions" : [ {
    "creativeName" : "Name of the spot",
    "share" : 100.0,
    "technicalCode" : "AREE28177",
    "durationInSeconds" : 30,
    "indexTo30Seconds" : 100.0
  } ],
  "stations" : [ {
    "name" : "Station 1",
    "plannedValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      } ]
    },
    "actualValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      } ]
    }
  }, {
    "name" : "Station 2",
    "plannedValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      } ]
    },
    "actualValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      } ]
    }
  } ]
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/radio/plans' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/radio/plans' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.2.4. Get Radio Plan by ID

Get a specific Radio plan using GMP Campaign ID and Radio Plan ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/radio/plans/5c41f5922944030003c58f7e HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 10668

{
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 1.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "grp" : 18.0,
    "grp30" : 18.0,
    "spots" : null,
    "spots30" : null,
    "impacts" : null,
    "impacts30" : null,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "effectiveFrequency" : "3+",
    "effectiveReach" : 28.1,
    "indexPercent" : [ {
      "index" : "POSITION_IN_BREAK",
      "percent" : 30.0
    }, {
      "index" : "SHARE_OF_SPECIFICS",
      "percent" : 10.0
    } ]
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "grp" : 18.0,
    "grp30" : 18.0,
    "spots" : null,
    "spots30" : null,
    "impacts" : null,
    "impacts30" : null,
    "reach" : {
      "onePlus" : 34.5,
      "twoPlus" : 30.2,
      "threePlus" : 28.1,
      "fourPlus" : 26.8,
      "fivePlus" : 24.0,
      "sixPlus" : 17.7,
      "sevenPlus" : 12.1,
      "eightPlus" : 9.5,
      "ninePlus" : 6.2,
      "tenPlus" : 2.9
    },
    "effectiveFrequency" : "3+",
    "effectiveReach" : 28.1,
    "indexPercent" : [ {
      "index" : "POSITION_IN_BREAK",
      "percent" : 30.0
    }, {
      "index" : "SHARE_OF_SPECIFICS",
      "percent" : 10.0
    } ]
  },
  "targetAudience" : "A20-49",
  "genericTargetAudience" : "A15+",
  "comparisonUnit" : "CPP",
  "spotVersions" : [ {
    "creativeName" : "Name of the spot",
    "share" : 100.0,
    "technicalCode" : "AREE28177",
    "durationInSeconds" : 30,
    "indexTo30Seconds" : 100.0
  } ],
  "stations" : [ {
    "name" : "Station 1",
    "plannedValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      } ]
    },
    "actualValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      } ]
    }
  }, {
    "name" : "Station 2",
    "plannedValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : null,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      } ]
    },
    "actualValues" : {
      "conversionIndexToGenericTa" : 100,
      "discountPercent" : 0,
      "net" : 900,
      "netNet" : 900,
      "grp" : 9,
      "grp30" : 9,
      "spots" : null,
      "spots30" : null,
      "impacts" : null,
      "impacts30" : null,
      "indexPercent" : [ {
        "index" : "POSITION_IN_BREAK",
        "percent" : 30.0
      }, {
        "index" : "SHARE_OF_SPECIFICS",
        "percent" : 10.0
      } ],
      "periods" : [ {
        "year" : 2019,
        "month" : 2,
        "week" : 9,
        "startDate" : "2019-02-25",
        "endDate" : "2019-02-28",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 9,
        "startDate" : "2019-03-01",
        "endDate" : "2019-03-03",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      }, {
        "year" : 2019,
        "month" : 3,
        "week" : 10,
        "startDate" : "2019-03-04",
        "endDate" : "2019-03-10",
        "netNet" : 300,
        "grpShare" : 33.33333,
        "grp30Share" : 33.33333,
        "indexPercent" : [ {
          "index" : "POSITION_IN_BREAK",
          "percent" : 30.0
        }, {
          "index" : "SHARE_OF_SPECIFICS",
          "percent" : 10.0
        } ],
        "creativeCodeBreakdown" : [ {
          "creativeName" : "Name of the spot",
          "share" : 100
        } ]
      } ]
    }
  } ]
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/radio/plans/5c41f5922944030003c58f7e' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/radio/plans/5c41f5922944030003c58f7e' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.3. OOH

OOH plans can be either "DIGITAL" or "STANDARD" as indicated by the oohType field. Some fields are only used by one of the types but all fields relevant for calculations are the same regardless of oohType.

6.3.1. OOH Plan model

All fields represented for a OOH Plan

Path Type Optional Description

id

String

false

GMP ID for the OOH Plan

campaignId

String

false

GMP ID for Campaign

campaignName

String

false

Campaign name

countryCode

String

false

Country code according to ISO 3166-1

regions

Array

true

List of plan’s regions

brand

String

false

Brand name

planStatus

String

false

Plan status

startDate

DateString

false

OOH Plan start date

endDate

DateString

false

OOH Plan end date

fiscalYear

Number

false

Fiscal year

currency

String

false

Currency according to ISO 4217

poNumber

String

true

PO Number

oohType

String

false

Type of OOH plan: DIGITAL or STANDARD

agencyRemuneration

Object

false

Agency fees, can be only null values

agencyRemuneration.percentOnNet

Number

false

Percent on Net

agencyRemuneration.percentOnNetNet

Number

false

Percent on NetNet

agencyRemuneration.fixedFee

Number

true

Fixed sum fee

plannedSummary

Object

true

Summary of planned values

plannedSummary.rateCardCost

Number

false

Total planned rate card cost in OOH plan

plannedSummary.net

Number

false

Total planned Media net in OOH plan

plannedSummary.netNet

Number

false

Total planned Media net net in OOH plan

plannedSummary.discount

Number

false

Total planned discount

plannedSummary.agencyCommission

Number

false

Total planned agency commission

plannedSummary.numberOfFacings

Number

false

Total planned number of facings in OOH plan

plannedSummary.productionAndSetupCost

Number

false

Total planned production and setup cost in OOH plan

actualSummary

Object

true

Summary of actual values

actualSummary.rateCardCost

Number

false

Total actual rate card cost in OOH plan

actualSummary.net

Number

false

Total actual Media net in OOH plan

actualSummary.netNet

Number

false

Total actual Media net net in OOH plan

actualSummary.discount

Number

false

Total discount

actualSummary.agencyCommission

Number

false

Total agency commission

actualSummary.numberOfFacings

Number

false

Total number of facings in OOH plan

actualSummary.productionAndSetupCost

Number

false

Total actual production and setup cost in OOH plan

planningDetails

Array

false

List of planning OOH plan details

planningDetails.[].supplier

String

false

Name of supplier

planningDetails.[].format

String

false

Ad format

planningDetails.[].region

String

false

Region

planningDetails.[].rateCardPackageName

String

false

Rate card package name

planningDetails.[].startDate

String

false

Start date

planningDetails.[].endDate

String

false

End date

planningDetails.[].nbrOfPaidFacings

Number

false

Number of paid facings

planningDetails.[].nbrOfFreeFacings

Number

false

Number of free facings

planningDetails.[].nbrOfFacings

Number

false

Number of facings

planningDetails.[].nbrOfWeeks

Number

false

Number of weeks

planningDetails.[].rateCard

Number

true

Planned rate card cost

planningDetails.[].net

Number

true

Planned media net

planningDetails.[].netNet

Number

true

Planned media net net

planningDetails.[].discount

Number

true

Planned discount

planningDetails.[].agencyCommission

Number

true

Planned agency commission

planningDetails.[].productionAndSetupCost

Number

false

Production and setup cost for the detail

planningDetails.[].lastApprovalDate

String

false

Last approval date

planningDetails.[].lastCancellationDate

String

false

Last cancellation date

planningDetails.[].creativeId

String

false

Creative Id

planningDetails.[].digitalOohType

String

true

What type of digital plan it is. Possible values: CPS, LEGACY or null. CPS for digital plans created since release of functionality. LEGACY indicates that this an old version of a digital plan that has been recently modified. A null value indicates this is either not a digital plan or an old and unmodified digital plan.

planningDetails.[].operatingScreenHoursPerDay

Number

true

CPS plans only: Hours per day screens are turned on

planningDetails.[].dayPartActiveHoursPerDay

Number

true

CPS plans only: Number of hours the bought day part covers

planningDetails.[].dayParts

String

true

CPS plans only: Bought day part package

planningDetails.[].daysBought

Number

true

CPS plans only: Number of days bought

planningDetails.[].nbrScreens

Number

true

CPS plans only: Number of screens bought

planningDetails.[].spotLengthSeconds

Number

true

CPS plans only: Spot length in seconds

planningDetails.[].paidSpotsPerScreenForPeriod

Number

true

CPS plans only: Paid spots per screen for the period

planningDetails.[].freeSpotsPerScreenForPeriod

Number

true

CPS plans only: Free spots per screen for the period

planningDetails.[].periods

Array

true

Weeks for media plans. Only available for License Premium Periods

planningDetails.[].periods.[].year

Number

false

Year for the week

planningDetails.[].periods.[].month

Number

false

Month for the week

planningDetails.[].periods.[].week

Number

false

Week number for the week

planningDetails.[].periods.[].startDate

DateString

false

Start Date for the week

planningDetails.[].periods.[].endDate

DateString

false

End Date for the week

planningDetails.[].periods.[].plannedSummary

Object

true

Planned Values for week

planningDetails.[].periods.[].plannedSummary.rateCardCost

Number

false

Planned rate card cost for week

planningDetails.[].periods.[].plannedSummary.net

Number

false

Planned Media net for week

planningDetails.[].periods.[].plannedSummary.netNet

Number

false

Planned Media net net for week

planningDetails.[].periods.[].plannedSummary.discount

Number

false

Planned discount for week

planningDetails.[].periods.[].plannedSummary.agencyCommission

Number

false

Planned agency commission for week

planningDetails.[].periods.[].plannedSummary.numberOfFacings

Number

false

Planned number of facings for week

planningDetails.[].periods.[].plannedSummary.productionAndSetupCost

Number

false

Planned production and setup cost for week

planningDetails.[].periods.[].actualSummary

Object

true

Actual Values for week

planningDetails.[].periods.[].actualSummary.rateCardCost

Number

false

Actual rate card cost for week

planningDetails.[].periods.[].actualSummary.net

Number

false

Actual Media net for week

planningDetails.[].periods.[].actualSummary.netNet

Number

false

Actual Media net net for week

planningDetails.[].periods.[].actualSummary.discount

Number

false

Actual discount for week

planningDetails.[].periods.[].actualSummary.agencyCommission

Number

false

Actual agency commission for week

planningDetails.[].periods.[].actualSummary.numberOfFacings

Number

false

Actual number of facings for week

planningDetails.[].periods.[].actualSummary.productionAndSetupCost

Number

false

Actual production and setup cost for week

actualDetails

Array

false

List of actual OOH plan details

actualDetails.[].supplier

String

false

Name of supplier

actualDetails.[].format

String

false

Ad format

actualDetails.[].region

String

false

Region

actualDetails.[].rateCardPackageName

String

false

Rate card package name

actualDetails.[].startDate

String

false

Start date

actualDetails.[].endDate

String

false

End date

actualDetails.[].nbrOfPaidFacings

Number

false

Number of paid facings

actualDetails.[].nbrOfFreeFacings

Number

false

Number of free facings

actualDetails.[].nbrOfFacings

Number

false

Number of facings

actualDetails.[].nbrOfWeeks

Number

false

Number of weeks

actualDetails.[].rateCard

Number

true

Planned rate card cost

actualDetails.[].net

Number

true

Planned media net

actualDetails.[].netNet

Number

true

Planned media net net

actualDetails.[].discount

Number

true

Discount

actualDetails.[].agencyCommission

Number

true

Agency commission

actualDetails.[].productionAndSetupCost

Number

false

Production and setup cost for the detail

actualDetails.[].lastApprovalDate

String

false

Last approval date

actualDetails.[].lastCancellationDate

String

false

Last cancellation date

actualDetails.[].creativeId

String

false

Creative Id

actualDetails.[].digitalOohType

String

true

What type of digital plan it is. Possible values: CPS, LEGACY or null. CPS for digital plans created since release of functionality. LEGACY indicates that this an old version of a digital plan that has been recently modified. A null value indicates this is either not a digital plan or an old and unmodified digital plan.

actualDetails.[].operatingScreenHoursPerDay

Number

true

CPS plans only: Hours per day screens are turned on

actualDetails.[].dayPartActiveHoursPerDay

Number

true

CPS plans only: Number of hours the bought day part covers

actualDetails.[].dayParts

String

true

CPS plans only: Bought day part package

actualDetails.[].daysBought

Number

true

CPS plans only: Number of days bought

actualDetails.[].nbrScreens

Number

true

CPS plans only: Number of screens bought

actualDetails.[].spotLengthSeconds

Number

true

CPS plans only: Spot length in seconds

actualDetails.[].paidSpotsPerScreenForPeriod

Number

true

CPS plans only: Paid spots per screen for the period

actualDetails.[].freeSpotsPerScreenForPeriod

Number

true

CPS plans only: Free spots per screen for the period

actualDetails.[].periods

Array

true

Weeks for media plans. Only available for License Premium Periods

actualDetails.[].periods.[].year

Number

false

Year for the week

actualDetails.[].periods.[].month

Number

false

Month for the week

actualDetails.[].periods.[].week

Number

false

Week number for the week

actualDetails.[].periods.[].startDate

DateString

false

Start Date for the week

actualDetails.[].periods.[].endDate

DateString

false

End Date for the week

actualDetails.[].periods.[].plannedSummary

Object

true

Planned Values for week

actualDetails.[].periods.[].plannedSummary.rateCardCost

Number

false

Planned rate card cost for week

actualDetails.[].periods.[].plannedSummary.net

Number

false

Planned Media net for week

actualDetails.[].periods.[].plannedSummary.netNet

Number

false

Planned Media net net for week

actualDetails.[].periods.[].plannedSummary.discount

Number

false

Planned discount for week

actualDetails.[].periods.[].plannedSummary.agencyCommission

Number

false

Planned agency commission for week

actualDetails.[].periods.[].plannedSummary.numberOfFacings

Number

false

Planned number of facings for week

actualDetails.[].periods.[].plannedSummary.productionAndSetupCost

Number

false

Planned production and setup cost for week

actualDetails.[].periods.[].actualSummary

Object

true

Actual Values for week

actualDetails.[].periods.[].actualSummary.rateCardCost

Number

false

Actual rate card cost for week

actualDetails.[].periods.[].actualSummary.net

Number

false

Actual Media net for week

actualDetails.[].periods.[].actualSummary.netNet

Number

false

Actual Media net net for week

actualDetails.[].periods.[].actualSummary.discount

Number

false

Actual discount for week

actualDetails.[].periods.[].actualSummary.agencyCommission

Number

false

Actual agency commission for week

actualDetails.[].periods.[].actualSummary.numberOfFacings

Number

false

Actual number of facings for week

actualDetails.[].periods.[].actualSummary.productionAndSetupCost

Number

false

Actual production and setup cost for week

6.3.2. Get OOH Plans for Campaign

Get all OOH plans for a single campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/ooh/plans HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 4124

[ {
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 1.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 1500.0,
    "netNet" : 1000.0,
    "numberOfFacings" : 30000,
    "rateCardCost" : 2000.0,
    "discount" : 25.0,
    "agencyCommission" : 33.333,
    "productionAndSetupCost" : 10000.0
  },
  "actualSummary" : {
    "net" : 1500.0,
    "netNet" : 1000.0,
    "numberOfFacings" : 30000,
    "rateCardCost" : 2000.0,
    "discount" : 25.0,
    "agencyCommission" : 33.333,
    "productionAndSetupCost" : 10000.0
  },
  "oohType" : "STANDARD",
  "planningDetails" : [ {
    "supplier" : "Supplier name",
    "rateCardPackageName" : "Package name",
    "format" : "OOH",
    "region" : "The region",
    "startDate" : "2019-02-25",
    "endDate" : "2019-03-10",
    "nbrOfFacings" : 1000,
    "nbrOfPaidFacings" : 900,
    "nbrOfFreeFacings" : 100,
    "nbrOfWeeks" : 2.0,
    "rateCard" : 2000.0,
    "net" : 1500.0,
    "netNet" : 1000.0,
    "discount" : 25.0,
    "agencyCommission" : 33.333,
    "productionAndSetupCost" : 350,
    "lastApprovalDate" : "2019-02-18",
    "lastCancellationDate" : "2019-02-11",
    "creativeId" : "Spring is coming",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1500.0,
        "netNet" : 1000.0,
        "numberOfFacings" : 30000,
        "rateCardCost" : 2000.0,
        "discount" : 25.0,
        "agencyCommission" : 33.333,
        "productionAndSetupCost" : 10000.0
      },
      "actualSummary" : {
        "net" : 1500.0,
        "netNet" : 1000.0,
        "numberOfFacings" : 30000,
        "rateCardCost" : 2000.0,
        "discount" : 25.0,
        "agencyCommission" : 33.333,
        "productionAndSetupCost" : 10000.0
      }
    } ],
    "operatingScreenHoursPerDay" : null,
    "dayPartActiveHoursPerDay" : null,
    "dayParts" : null,
    "daysBought" : null,
    "nbrScreens" : null,
    "spotLengthSeconds" : null,
    "paidSpotsPerScreenForPeriod" : null,
    "freeSpotsPerScreenForPeriod" : null,
    "digitalOohType" : null
  } ],
  "actualDetails" : [ {
    "supplier" : "Supplier name",
    "rateCardPackageName" : "Package name",
    "format" : "OOH",
    "region" : "The region",
    "startDate" : "2019-02-25",
    "endDate" : "2019-03-10",
    "nbrOfFacings" : 1000,
    "nbrOfPaidFacings" : 900,
    "nbrOfFreeFacings" : 100,
    "nbrOfWeeks" : 2.0,
    "rateCard" : 2000.0,
    "net" : 1500.0,
    "netNet" : 1000.0,
    "discount" : 25.0,
    "agencyCommission" : 33.333,
    "productionAndSetupCost" : 350,
    "lastApprovalDate" : "2019-02-18",
    "lastCancellationDate" : "2019-02-11",
    "creativeId" : "Spring is coming",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1500.0,
        "netNet" : 1000.0,
        "numberOfFacings" : 30000,
        "rateCardCost" : 2000.0,
        "discount" : 25.0,
        "agencyCommission" : 33.333,
        "productionAndSetupCost" : 10000.0
      },
      "actualSummary" : {
        "net" : 1500.0,
        "netNet" : 1000.0,
        "numberOfFacings" : 30000,
        "rateCardCost" : 2000.0,
        "discount" : 25.0,
        "agencyCommission" : 33.333,
        "productionAndSetupCost" : 10000.0
      }
    } ],
    "operatingScreenHoursPerDay" : null,
    "dayPartActiveHoursPerDay" : null,
    "dayParts" : null,
    "daysBought" : null,
    "nbrScreens" : null,
    "spotLengthSeconds" : null,
    "paidSpotsPerScreenForPeriod" : null,
    "freeSpotsPerScreenForPeriod" : null,
    "digitalOohType" : null
  } ]
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/ooh/plans' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/ooh/plans' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.3.3. Get OOH Plan By ID

Get a single OOH plan for a campaign using GMP Campaign ID and Plan ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/ooh/plans/5c41f5922944030003c58f7e HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 4120

{
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 1.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 1500.0,
    "netNet" : 1000.0,
    "numberOfFacings" : 30000,
    "rateCardCost" : 2000.0,
    "discount" : 25.0,
    "agencyCommission" : 33.333,
    "productionAndSetupCost" : 10000.0
  },
  "actualSummary" : {
    "net" : 1500.0,
    "netNet" : 1000.0,
    "numberOfFacings" : 30000,
    "rateCardCost" : 2000.0,
    "discount" : 25.0,
    "agencyCommission" : 33.333,
    "productionAndSetupCost" : 10000.0
  },
  "oohType" : "STANDARD",
  "planningDetails" : [ {
    "supplier" : "Supplier name",
    "rateCardPackageName" : "Package name",
    "format" : "OOH",
    "region" : "The region",
    "startDate" : "2019-02-25",
    "endDate" : "2019-03-10",
    "nbrOfFacings" : 1000,
    "nbrOfPaidFacings" : 900,
    "nbrOfFreeFacings" : 100,
    "nbrOfWeeks" : 2.0,
    "rateCard" : 2000.0,
    "net" : 1500.0,
    "netNet" : 1000.0,
    "discount" : 25.0,
    "agencyCommission" : 33.333,
    "productionAndSetupCost" : 350,
    "lastApprovalDate" : "2019-02-18",
    "lastCancellationDate" : "2019-02-11",
    "creativeId" : "Spring is coming",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1500.0,
        "netNet" : 1000.0,
        "numberOfFacings" : 30000,
        "rateCardCost" : 2000.0,
        "discount" : 25.0,
        "agencyCommission" : 33.333,
        "productionAndSetupCost" : 10000.0
      },
      "actualSummary" : {
        "net" : 1500.0,
        "netNet" : 1000.0,
        "numberOfFacings" : 30000,
        "rateCardCost" : 2000.0,
        "discount" : 25.0,
        "agencyCommission" : 33.333,
        "productionAndSetupCost" : 10000.0
      }
    } ],
    "operatingScreenHoursPerDay" : null,
    "dayPartActiveHoursPerDay" : null,
    "dayParts" : null,
    "daysBought" : null,
    "nbrScreens" : null,
    "spotLengthSeconds" : null,
    "paidSpotsPerScreenForPeriod" : null,
    "freeSpotsPerScreenForPeriod" : null,
    "digitalOohType" : null
  } ],
  "actualDetails" : [ {
    "supplier" : "Supplier name",
    "rateCardPackageName" : "Package name",
    "format" : "OOH",
    "region" : "The region",
    "startDate" : "2019-02-25",
    "endDate" : "2019-03-10",
    "nbrOfFacings" : 1000,
    "nbrOfPaidFacings" : 900,
    "nbrOfFreeFacings" : 100,
    "nbrOfWeeks" : 2.0,
    "rateCard" : 2000.0,
    "net" : 1500.0,
    "netNet" : 1000.0,
    "discount" : 25.0,
    "agencyCommission" : 33.333,
    "productionAndSetupCost" : 350,
    "lastApprovalDate" : "2019-02-18",
    "lastCancellationDate" : "2019-02-11",
    "creativeId" : "Spring is coming",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1500.0,
        "netNet" : 1000.0,
        "numberOfFacings" : 30000,
        "rateCardCost" : 2000.0,
        "discount" : 25.0,
        "agencyCommission" : 33.333,
        "productionAndSetupCost" : 10000.0
      },
      "actualSummary" : {
        "net" : 1500.0,
        "netNet" : 1000.0,
        "numberOfFacings" : 30000,
        "rateCardCost" : 2000.0,
        "discount" : 25.0,
        "agencyCommission" : 33.333,
        "productionAndSetupCost" : 10000.0
      }
    } ],
    "operatingScreenHoursPerDay" : null,
    "dayPartActiveHoursPerDay" : null,
    "dayParts" : null,
    "daysBought" : null,
    "nbrScreens" : null,
    "spotLengthSeconds" : null,
    "paidSpotsPerScreenForPeriod" : null,
    "freeSpotsPerScreenForPeriod" : null,
    "digitalOohType" : null
  } ]
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/ooh/plans/5c41f5922944030003c58f7e' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/ooh/plans/5c41f5922944030003c58f7e' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.4. Print

6.4.1. Print Plan model

All fields represented in a Print plan object

Path Type Optional Description

id

String

false

GMP ID for the Print Plan

campaignId

String

false

GMP ID for Campaign

campaignName

String

false

Campaign name

countryCode

String

false

Country code according to ISO 3166-1

regions

Array

true

List of regions

brand

String

false

Brand name

planStatus

String

false

Plan status

startDate

DateString

false

Print Plan start date

endDate

DateString

false

Print Plan end date

fiscalYear

Number

false

Fiscal year

currency

String

false

Currency according to ISO 4217

poNumber

String

true

PO Number

printType

String

false

Print Type (Enumeration value)

printTypeText

String

false

Print Type

agencyRemuneration

Object

false

Agency fees, can be only null values

agencyRemuneration.percentOnNet

Number

false

Percent on Net

agencyRemuneration.percentOnNetNet

Number

false

Percent on NetNet

agencyRemuneration.fixedFee

Number

false

Fixed sum fee

plannedSummary

Object

true

Summary of planned values

plannedSummary.rateCard

Number

true

Total planned Media rate card cost in Print plan

plannedSummary.net

Number

true

Total planned Media net in Print plan

plannedSummary.netNet

Number

true

Total planned Media net net in Print plan

plannedSummary.numberOfInsertions

Number

true

Total number of planned insertions in Print plan

actualSummary

Object

true

Summary of actual values

actualSummary.rateCard

Number

true

Total actual Media rate card cost in Print plan

actualSummary.net

Number

true

Total actual Media net in Print plan

actualSummary.netNet

Number

true

Total actual Media net net in Print plan

actualSummary.numberOfInsertions

Number

true

Total number of actual insertions in Print plan

planningDetails

Array

false

List of planned Print Plan Details

planningDetails.[].title

String

false

Title

planningDetails.[].salesHouse

String

true

Sales House

planningDetails.[].publicationDate

DateString

true

Publication Date

planningDetails.[].rateCard

Number

true

Planned media rate card cost

planningDetails.[].net

Number

true

Planned media net

planningDetails.[].netNet

Number

true

Planned media net net

planningDetails.[].actualPosition

String

true

Actual Position

planningDetails.[].placement

String

true

Placement

planningDetails.[].premiumPosition

Boolean

true

Premium Position

planningDetails.[].firstInCategory

Boolean

true

First in Category

planningDetails.[].format

String

true

Format (Enumeration value)

planningDetails.[].formatText

String

true

Format

planningDetails.[].otherFormat

String

true

Specific format description if format enumeration has value 'OTHER'. Otherwise null

planningDetails.[].color

String

true

Color (Enumeration value)

planningDetails.[].colorText

String

true

Color

planningDetails.[].readership

Number

true

Readership in thousands

planningDetails.[].totalNumberOfPages

Number

true

Total number of pages

planningDetails.[].lastApprovalDate

DateString

true

Last Approval Date

planningDetails.[].lastCancellationDate

DateString

true

Last Cancellation Date

planningDetails.[].creativeId

String

true

Creative ID

planningDetails.[].periods

Array

true

Weeks for media plans. Only available for License Premium Periods

planningDetails.[].periods.[].year

Number

false

Year for the week

planningDetails.[].periods.[].month

Number

false

Month for the week

planningDetails.[].periods.[].week

Number

false

Week number for the week

planningDetails.[].periods.[].startDate

DateString

false

Start Date for the week

planningDetails.[].periods.[].endDate

DateString

false

End Date for the week

planningDetails.[].periods.[].plannedSummary

Object

true

Planned Values for week

planningDetails.[].periods.[].plannedSummary.rateCard

Number

true

Planned Media rate card cost for week

planningDetails.[].periods.[].plannedSummary.net

Number

true

Planned Media net for week

planningDetails.[].periods.[].plannedSummary.netNet

Number

true

Planned Media net net for week

planningDetails.[].periods.[].plannedSummary.numberOfInsertions

Number

true

Number of planned insertions for week

planningDetails.[].periods.[].actualSummary

Object

true

Actual Values for week

planningDetails.[].periods.[].actualSummary.rateCard

Number

true

Actual Media rate card cost for week

planningDetails.[].periods.[].actualSummary.net

Number

true

Actual Media net for week

planningDetails.[].periods.[].actualSummary.netNet

Number

true

Actual Media net net for week

planningDetails.[].periods.[].actualSummary.numberOfInsertions

Number

true

Number of actual insertions for week

actualDetails

Array

false

List of actual Print Plan Details

actualDetails.[].title

String

false

Title

actualDetails.[].salesHouse

String

true

Sales House

actualDetails.[].publicationDate

DateString

true

Publication Date

actualDetails.[].rateCard

Number

true

Actual media rate card cost

actualDetails.[].net

Number

true

Actual media net

actualDetails.[].netNet

Number

true

Actual media net net

actualDetails.[].actualPosition

String

true

Actual Position

actualDetails.[].placement

String

true

Placement

actualDetails.[].premiumPosition

Boolean

true

Premium Position

actualDetails.[].firstInCategory

Boolean

true

First in Category

actualDetails.[].format

String

true

Format (Enumeration value)

actualDetails.[].formatText

String

true

Format

actualDetails.[].otherFormat

String

true

Specific format description if format enumeration has value 'OTHER'. Otherwise null

actualDetails.[].color

String

true

Color (Enumeration value)

actualDetails.[].colorText

String

true

Color

actualDetails.[].readership

Number

true

Readership

actualDetails.[].totalNumberOfPages

Number

true

Total number of pages

actualDetails.[].lastApprovalDate

DateString

true

Last Approval Date

actualDetails.[].lastCancellationDate

DateString

true

Last Cancellation Date

actualDetails.[].creativeId

String

true

Creative ID

actualDetails.[].periods

Array

true

Weeks for media plans. Only available for License Premium Periods

actualDetails.[].periods.[].year

Number

false

Year for the week

actualDetails.[].periods.[].month

Number

false

Month for the week

actualDetails.[].periods.[].week

Number

false

Week number for the week

actualDetails.[].periods.[].startDate

DateString

false

Start Date for the week

actualDetails.[].periods.[].endDate

DateString

false

End Date for the week

actualDetails.[].periods.[].plannedSummary

Object

true

Planned Values for week

actualDetails.[].periods.[].plannedSummary.rateCard

Number

true

Planned Media rate card cost for week

actualDetails.[].periods.[].plannedSummary.net

Number

true

Planned Media net for week

actualDetails.[].periods.[].plannedSummary.netNet

Number

true

Planned Media net net for week

actualDetails.[].periods.[].plannedSummary.numberOfInsertions

Number

true

Number of planned insertions for week

actualDetails.[].periods.[].actualSummary

Object

true

Actual Values for week

actualDetails.[].periods.[].actualSummary.rateCard

Number

true

Actual Media rate card cost for week

actualDetails.[].periods.[].actualSummary.net

Number

true

Actual Media net for week

actualDetails.[].periods.[].actualSummary.netNet

Number

true

Actual Media net net for week

actualDetails.[].periods.[].actualSummary.numberOfInsertions

Number

true

Number of actual insertions for week

6.4.2. Get Print Plans for Campaign

Get all Print plans for a specific Campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ee42ea/print/plans HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 5066

[ {
  "id" : "5c41f5922944030003c98f7e",
  "campaignId" : "5bade5a3fb512a0003ee42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 1.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "rateCard" : 1800.0,
    "numberOfInsertions" : 2
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "rateCard" : 1800.0,
    "numberOfInsertions" : 2
  },
  "printType" : "MAGAZINE",
  "printTypeText" : "Print - Magazine",
  "planningDetails" : [ {
    "title" : "Test Magazine",
    "salesHouse" : "The Sales House",
    "publicationDate" : "2019-03-03",
    "rateCard" : 900,
    "net" : 900,
    "netNet" : 900,
    "actualPosition" : "Page 11",
    "placement" : "International",
    "premiumPosition" : false,
    "firstInCategory" : false,
    "format" : "OTHER",
    "formatText" : "other",
    "otherFormat" : "Insel Ad",
    "color" : "BW",
    "colorText" : "Black/White",
    "readership" : 100000,
    "totalNumberOfPages" : 40,
    "lastApprovalDate" : "2019-01-10",
    "lastCancellationDate" : "2019-01-20",
    "creativeId" : "",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      },
      "actualSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      }
    } ]
  }, {
    "title" : "Specialized Magazine",
    "salesHouse" : "The Sales House",
    "publicationDate" : "2019-03-03",
    "rateCard" : 900,
    "net" : 900,
    "netNet" : 900,
    "actualPosition" : "Page 11",
    "placement" : "International",
    "premiumPosition" : false,
    "firstInCategory" : false,
    "format" : "ONE_OVER_EIGHT",
    "formatText" : "1/8",
    "otherFormat" : null,
    "color" : "BW",
    "colorText" : "Black/White",
    "readership" : 100000,
    "totalNumberOfPages" : 40,
    "lastApprovalDate" : "2019-01-10",
    "lastCancellationDate" : "2019-01-20",
    "creativeId" : "",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      },
      "actualSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      }
    } ]
  } ],
  "actualDetails" : [ {
    "title" : "Test Magazine",
    "salesHouse" : "The Sales House",
    "publicationDate" : "2019-03-03",
    "rateCard" : 900,
    "net" : 900,
    "netNet" : 900,
    "actualPosition" : "Page 11",
    "placement" : "International",
    "premiumPosition" : false,
    "firstInCategory" : false,
    "format" : "OTHER",
    "formatText" : "other",
    "otherFormat" : "Insel Ad",
    "color" : "BW",
    "colorText" : "Black/White",
    "readership" : 100000,
    "totalNumberOfPages" : 40,
    "lastApprovalDate" : "2019-01-10",
    "lastCancellationDate" : "2019-01-20",
    "creativeId" : "",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      },
      "actualSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      }
    } ]
  }, {
    "title" : "Specialized Magazine",
    "salesHouse" : "The Sales House",
    "publicationDate" : "2019-03-03",
    "rateCard" : 900,
    "net" : 900,
    "netNet" : 900,
    "actualPosition" : "Page 11",
    "placement" : "International",
    "premiumPosition" : false,
    "firstInCategory" : false,
    "format" : "ONE_OVER_EIGHT",
    "formatText" : "1/8",
    "otherFormat" : null,
    "color" : "BW",
    "colorText" : "Black/White",
    "readership" : 100000,
    "totalNumberOfPages" : 40,
    "lastApprovalDate" : "2019-01-10",
    "lastCancellationDate" : "2019-01-20",
    "creativeId" : "",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      },
      "actualSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      }
    } ]
  } ]
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ee42ea/print/plans' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ee42ea/print/plans' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.4.3. Get Print Plan by ID

Get a specific Print plan using GMP Campaign ID and Print Plan ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ee42ea/print/plans/5c41f5922944030003c98f7e HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 5062

{
  "id" : "5c41f5922944030003c98f7e",
  "campaignId" : "5bade5a3fb512a0003ee42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 1.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "rateCard" : 1800.0,
    "numberOfInsertions" : 2
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0,
    "rateCard" : 1800.0,
    "numberOfInsertions" : 2
  },
  "printType" : "MAGAZINE",
  "printTypeText" : "Print - Magazine",
  "planningDetails" : [ {
    "title" : "Test Magazine",
    "salesHouse" : "The Sales House",
    "publicationDate" : "2019-03-03",
    "rateCard" : 900,
    "net" : 900,
    "netNet" : 900,
    "actualPosition" : "Page 11",
    "placement" : "International",
    "premiumPosition" : false,
    "firstInCategory" : false,
    "format" : "OTHER",
    "formatText" : "other",
    "otherFormat" : "Insel Ad",
    "color" : "BW",
    "colorText" : "Black/White",
    "readership" : 100000,
    "totalNumberOfPages" : 40,
    "lastApprovalDate" : "2019-01-10",
    "lastCancellationDate" : "2019-01-20",
    "creativeId" : "",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      },
      "actualSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      }
    } ]
  }, {
    "title" : "Specialized Magazine",
    "salesHouse" : "The Sales House",
    "publicationDate" : "2019-03-03",
    "rateCard" : 900,
    "net" : 900,
    "netNet" : 900,
    "actualPosition" : "Page 11",
    "placement" : "International",
    "premiumPosition" : false,
    "firstInCategory" : false,
    "format" : "ONE_OVER_EIGHT",
    "formatText" : "1/8",
    "otherFormat" : null,
    "color" : "BW",
    "colorText" : "Black/White",
    "readership" : 100000,
    "totalNumberOfPages" : 40,
    "lastApprovalDate" : "2019-01-10",
    "lastCancellationDate" : "2019-01-20",
    "creativeId" : "",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      },
      "actualSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      }
    } ]
  } ],
  "actualDetails" : [ {
    "title" : "Test Magazine",
    "salesHouse" : "The Sales House",
    "publicationDate" : "2019-03-03",
    "rateCard" : 900,
    "net" : 900,
    "netNet" : 900,
    "actualPosition" : "Page 11",
    "placement" : "International",
    "premiumPosition" : false,
    "firstInCategory" : false,
    "format" : "OTHER",
    "formatText" : "other",
    "otherFormat" : "Insel Ad",
    "color" : "BW",
    "colorText" : "Black/White",
    "readership" : 100000,
    "totalNumberOfPages" : 40,
    "lastApprovalDate" : "2019-01-10",
    "lastCancellationDate" : "2019-01-20",
    "creativeId" : "",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      },
      "actualSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      }
    } ]
  }, {
    "title" : "Specialized Magazine",
    "salesHouse" : "The Sales House",
    "publicationDate" : "2019-03-03",
    "rateCard" : 900,
    "net" : 900,
    "netNet" : 900,
    "actualPosition" : "Page 11",
    "placement" : "International",
    "premiumPosition" : false,
    "firstInCategory" : false,
    "format" : "ONE_OVER_EIGHT",
    "formatText" : "1/8",
    "otherFormat" : null,
    "color" : "BW",
    "colorText" : "Black/White",
    "readership" : 100000,
    "totalNumberOfPages" : 40,
    "lastApprovalDate" : "2019-01-10",
    "lastCancellationDate" : "2019-01-20",
    "creativeId" : "",
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      },
      "actualSummary" : {
        "net" : 1800.0,
        "netNet" : 1800.0,
        "rateCard" : 1800.0,
        "numberOfInsertions" : 2
      }
    } ]
  } ]
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ee42ea/print/plans/5c41f5922944030003c98f7e' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ee42ea/print/plans/5c41f5922944030003c98f7e' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.4.4. Code Tables

Print Colors

List available/accepted Print Color values.

Sample request
GET /api/v1/print/metadata/color HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 98

[ {
  "value" : "COLOR",
  "label" : "Colour"
}, {
  "value" : "BW",
  "label" : "Black/White"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/print/metadata/color' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/print/metadata/color' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Print Data Types

List available/accepted Data Types.

Sample request
GET /api/v1/print/metadata/data-type HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 122

[ {
  "value" : "PLANNING_DATA",
  "label" : "PLANNING_DATA"
}, {
  "value" : "ACTUAL_DATA",
  "label" : "ACTUAL_DATA"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/print/metadata/data-type' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/print/metadata/data-type' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Print Insertion Formats

List available/accepted Print Insertion formats.

Sample request
GET /api/v1/print/metadata/insertion-format HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 362

[ {
  "value" : "TWO_OVER_ONE",
  "label" : "2/1"
}, {
  "value" : "ONE_OVER_ONE",
  "label" : "1/1"
}, {
  "value" : "ONE_OVER_TWO",
  "label" : "1/2"
}, {
  "value" : "ONE_OVER_FOUR",
  "label" : "1/4"
}, {
  "value" : "ONE_OVER_EIGHT",
  "label" : "1/8"
}, {
  "value" : "ONE_OVER_SIXTEEN",
  "label" : "1/16"
}, {
  "value" : "OTHER",
  "label" : "other"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/print/metadata/insertion-format' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/print/metadata/insertion-format' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Print Publication Types

List available/accepted Print Publication types.

Sample request
GET /api/v1/print/metadata/publication-type HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 292

[ {
  "value" : "NEWSPAPER_NATIONAL",
  "label" : "Print - Newspaper (National)"
}, {
  "value" : "NEWSPAPER_REGIONAL",
  "label" : "Print - Newspaper (Regional)"
}, {
  "value" : "MAGAZINE",
  "label" : "Print - Magazine"
}, {
  "value" : "TRADE_PRESS",
  "label" : "Print - Trade Press"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/print/metadata/publication-type' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/print/metadata/publication-type' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.5. Digital

6.5.1. Digital Plan model

All fields represented for a Digital Plan

Path Type Optional Description

id

String

false

GMP ID for the DIGITAL Plan

campaignId

String

false

GMP ID for Campaign

campaignName

String

false

Campaign name

countryCode

String

false

Country code according to ISO 3166-1

regions

Array

true

List of regions

brand

String

false

Brand name

planStatus

String

false

Plan status

startDate

DateString

false

Plan start date

endDate

DateString

false

Plan end date

fiscalYear

Number

false

Fiscal year

currency

String

false

Currency according to ISO 4217

poNumber

String

true

Purchase Order Number

plannedSummary

Object

true

Summary of planned values

plannedSummary.netNet

Number

false

Total planned Media net net in plan

plannedSummary.servedImpressions

Number

true

Total number of planned served impressions

plannedSummary.measurableImpressions

Number

true

Total number of planned measurable impressions

plannedSummary.viewableImpressions

Number

true

Total number of planned viewable impressions (client definition)

plannedSummary.viewableImpressionsIab

Number

true

Total number of planned viewable impressions (IAB definition)

plannedSummary.videoViews

Number

true

Total number of planned video views

plannedSummary.ctr

Number

true

Total planned Click Through Rate in percent

plannedSummary.clicks

Number

true

Total number of planned registered clicks

plannedSummary.leads

Number

true

Total number of planned registered leads

plannedSummary.actions

Number

true

Total number of planned registered actions

plannedSummary.engagements

Number

true

Total number of planned registered engagements

plannedSummary.followers

Number

true

Total number of planned followers

plannedSummary.videoPlayed25

Number

true

Planned video played 25% (first quartile completions)

plannedSummary.videoPlayed25Rate

Number

true

Planned video played 25% rate

plannedSummary.videoPlayed50

Number

true

Planned video played 50% (midpoint)

plannedSummary.videoPlayed50Rate

Number

true

Planned video played 50% rate

plannedSummary.videoPlayed75

Number

true

Planned video played 75% (third quartile completions)

plannedSummary.videoPlayed75Rate

Number

true

Planned video played 75% rate

plannedSummary.videoPlayed100

Number

true

Planned video played 100% (completions)

plannedSummary.videoPlayed100Rate

Number

true

Planned video played 100% (completion) rate

plannedSummary.qualityImpressions

Number

true

Total number of impressions delivered according to client quality definition

plannedSummary.uniqueImpressions

Number

true

Total number of unique ip addresses reached by impressions

plannedSummary.visits

Number

true

Total amount of visits from this target group

plannedSummary.revenue

Number

true

Revenue expected from the investment

plannedSummary.qualityVisits

Number

true

Amount of visits according to quality definition. Mandatory if corePlanningKpi or costType are CPQV

plannedSummary.viewableImpressionsIab

Number

true

Total number of impressions according to Iab standard. Based no responses from an ad delivery system to an ad request from the user’s browser.

actualSummary

Object

true

Summary of actual values

actualSummary.netNet

Number

false

Total actual Media net net in plan

actualSummary.servedImpressions

Number

true

Total number of served impressions

actualSummary.measurableImpressions

Number

true

Total number of measurable impressions

actualSummary.viewableImpressions

Number

true

Total number of viewable impressions (client definition)

actualSummary.viewableImpressionsIab

Number

true

Total number of viewable impressions (IAB definition)

actualSummary.videoViews

Number

true

Total number of video views

actualSummary.ctr

Number

true

Total Click Through Rate in percent

actualSummary.clicks

Number

true

Total of actual registered clicks

actualSummary.leads

Number

true

Total of actual registered leads

actualSummary.actions

Number

true

Total of actual registered actions

actualSummary.engagements

Number

true

Total of actual registered engagements

actualSummary.followers

Number

true

Total of actual followers

actualSummary.videoPlayed25

Number

true

Video played 25% (first quartile completions)

actualSummary.videoPlayed25Rate

Number

true

Video played 25% rate

actualSummary.videoPlayed50

Number

true

Video played 50% (midpoint)

actualSummary.videoPlayed50Rate

Number

true

Video played 50% rate

actualSummary.videoPlayed75

Number

true

Video played 75% (third quartile completions)

actualSummary.videoPlayed75Rate

Number

true

Video played 75% rate

actualSummary.videoPlayed100

Number

true

Video played 100% (completions)

actualSummary.videoPlayed100Rate

Number

true

Video played 100% (completion) rate

actualSummary.qualityImpressions

Number

true

Total number of impressions delivered according to client quality definition

actualSummary.uniqueImpressions

Number

true

Total number of unique ip addresses reached by impressions

actualSummary.visits

Number

true

Total amount of visits from all sites on this plan

actualSummary.revenue

Number

true

Total revenue expected

actualSummary.qualityVisits

Number

true

Total amount of visits according to quality definition. Mandatory if corePlanningKpi or costType are CPQV

actualSummary.viewableImpressionsIab

Number

true

Total number of impressions according to Iab standard. Based no responses from an ad delivery system to an ad request from the user’s browser.

siteGroups

Array

false

A List of site groups, each with the accumulated values for the sites that have matching parameters

siteGroups.[].siteName

String

false

Name of sites matching this group

siteGroups.[].targeting

String

true

Targeting for the campaign

siteGroups.[].targetClassification

Array

true

Target classes used for the campaign. From FY 2019, target classification is required if targeting has been added

siteGroups.[].mediaType

String

false

Main media type

siteGroups.[].adFormat

String

false

Format type

siteGroups.[].buyType

String

false

Buy Type

siteGroups.[].corePlanningKpi

String

false

Core planning KPI

siteGroups.[].platform

String

false

Target Platform

siteGroups.[].periods

Array

true

Weeks for media plans. Only available for License Premium Periods

siteGroups.[].periods.[].year

Number

false

Year for the week

siteGroups.[].periods.[].month

Number

false

Month for the week

siteGroups.[].periods.[].week

Number

false

Week number for the week

siteGroups.[].periods.[].startDate

DateString

false

Start Date for the week

siteGroups.[].periods.[].endDate

DateString

false

End Date for the week

siteGroups.[].periods.[].plannedSummary

Object

true

Planned Values for week

siteGroups.[].periods.[].plannedSummary.netNet

Number

false

Planned Media net net for week

siteGroups.[].periods.[].plannedSummary.servedImpressions

Number

true

Number of planned served impressions for week

siteGroups.[].periods.[].plannedSummary.measurableImpressions

Number

true

Number of planned measurable impressions for week

siteGroups.[].periods.[].plannedSummary.viewableImpressions

Number

true

Number of planned viewable impressions (client definition) for week

siteGroups.[].periods.[].plannedSummary.viewableImpressionsIab

Number

true

Number of planned viewable impressions (IAB definition) for week

siteGroups.[].periods.[].plannedSummary.videoViews

Number

true

Number of planned video views for week

siteGroups.[].periods.[].plannedSummary.ctr

Number

true

Planned Click Through Rate in percent for week

siteGroups.[].periods.[].plannedSummary.clicks

Number

true

Number of planned registered clicks for week

siteGroups.[].periods.[].plannedSummary.leads

Number

true

Number of planned registered leads for week

siteGroups.[].periods.[].plannedSummary.actions

Number

true

Number of planned registered actions for week

siteGroups.[].periods.[].plannedSummary.engagements

Number

true

Number of planned registered engagements for week

siteGroups.[].periods.[].plannedSummary.followers

Number

true

Number of planned followers for week

siteGroups.[].periods.[].plannedSummary.videoPlayed25

Number

true

Planned video played 25% (first quartile completions) for week

siteGroups.[].periods.[].plannedSummary.videoPlayed25Rate

Number

true

Planned video played 25% rate for week

siteGroups.[].periods.[].plannedSummary.videoPlayed50

Number

true

Planned video played 50% (midpoint) for week

siteGroups.[].periods.[].plannedSummary.videoPlayed50Rate

Number

true

Planned video played 50% rate for week

siteGroups.[].periods.[].plannedSummary.videoPlayed75

Number

true

Planned video played 75% (third quartile completions) for week

siteGroups.[].periods.[].plannedSummary.videoPlayed75Rate

Number

true

Planned video played 75% rate for week

siteGroups.[].periods.[].plannedSummary.videoPlayed100

Number

true

Planned video played 100% (completions) for week

siteGroups.[].periods.[].plannedSummary.videoPlayed100Rate

Number

true

Planned video played 100% (completion) rate for week

siteGroups.[].periods.[].plannedSummary.qualityImpressions

Number

true

Total number of impressions delivered according to client quality definition for week

siteGroups.[].periods.[].plannedSummary.uniqueImpressions

Number

true

Total number of unique ip addresses reached by impressions for week

siteGroups.[].periods.[].plannedSummary.visits

Number

true

Total amount of visits for this site group for week

siteGroups.[].periods.[].plannedSummary.revenue

Number

true

Total revenue for this site group for week

siteGroups.[].periods.[].plannedSummary.qualityVisits

Number

true

Total amount of visits according to quality definition for week

siteGroups.[].periods.[].actualSummary

Object

true

Actual Values for week

siteGroups.[].periods.[].actualSummary.netNet

Number

false

Actual Media net net for week

siteGroups.[].periods.[].actualSummary.servedImpressions

Number

true

Number of served impressions for week

siteGroups.[].periods.[].actualSummary.measurableImpressions

Number

true

Number of measurable impressions for week

siteGroups.[].periods.[].actualSummary.viewableImpressions

Number

true

Number of viewable impressions (client definition) for week

siteGroups.[].periods.[].actualSummary.viewableImpressionsIab

Number

true

Number of viewable impressions (IAB definition) for week

siteGroups.[].periods.[].actualSummary.videoViews

Number

true

Number of video views for week

siteGroups.[].periods.[].actualSummary.ctr

Number

true

Click Through Rate in percent for week

siteGroups.[].periods.[].actualSummary.clicks

Number

true

Actual registered clicks for week

siteGroups.[].periods.[].actualSummary.leads

Number

true

Actual registered leads for week

siteGroups.[].periods.[].actualSummary.actions

Number

true

Actual registered actions for week

siteGroups.[].periods.[].actualSummary.engagements

Number

true

Actual registered engagements for week

siteGroups.[].periods.[].actualSummary.followers

Number

true

Actual registered followers for week

siteGroups.[].periods.[].actualSummary.videoPlayed25

Number

true

Video played 25% (first quartile completions) for week

siteGroups.[].periods.[].actualSummary.videoPlayed25Rate

Number

true

Video played 25% rate for week

siteGroups.[].periods.[].actualSummary.videoPlayed50

Number

true

Video played 50% (midpoint) for week

siteGroups.[].periods.[].actualSummary.videoPlayed50Rate

Number

true

Video played 50% rate for week

siteGroups.[].periods.[].actualSummary.videoPlayed75

Number

true

Video played 75% (third quartile completions) for week

siteGroups.[].periods.[].actualSummary.videoPlayed75Rate

Number

true

Video played 75% rate for week

siteGroups.[].periods.[].actualSummary.videoPlayed100

Number

true

Video played 100% (completions) for week

siteGroups.[].periods.[].actualSummary.videoPlayed100Rate

Number

true

Video played 100% (completion) rate for week

siteGroups.[].periods.[].actualSummary.qualityImpressions

Number

true

Total number of impressions delivered according to client quality definition for week

siteGroups.[].periods.[].actualSummary.uniqueImpressions

Number

true

Total number of unique ip addresses reached by impressions for week

siteGroups.[].periods.[].actualSummary.visits

Number

true

Total amount of visits for this site group for week

siteGroups.[].periods.[].actualSummary.revenue

Number

true

Total revenue for this site group for week

siteGroups.[].periods.[].actualSummary.qualityVisits

Number

true

Total amount of visits according to quality definition for week

siteGroups.[].plannedValues

Object

true

Planned values

siteGroups.[].plannedValues.netNet

Number

false

Planned media net net

siteGroups.[].plannedValues.servedImpressions

Number

true

Number of planned served impressions

siteGroups.[].plannedValues.measurableImpressions

Number

true

Number of planned measurable impressions

siteGroups.[].plannedValues.viewableImpressions

Number

true

Total number of planned viewable impressions (client definition)

siteGroups.[].plannedValues.viewableImpressionsIab

Number

true

Total number of planned viewable impressions (IAB definition)

siteGroups.[].plannedValues.videoViews

Number

true

Number of planned video views

siteGroups.[].plannedValues.ctr

Number

true

Planned Click Through Rate in percent

siteGroups.[].plannedValues.clicks

Number

true

Number of planned registered clicks

siteGroups.[].plannedValues.leads

Number

true

Number of planned registered leads

siteGroups.[].plannedValues.actions

Number

true

Number of planned registered actions

siteGroups.[].plannedValues.engagements

Number

true

Number of planned registered engagements

siteGroups.[].plannedValues.followers

Number

true

Number of planned followers

siteGroups.[].plannedValues.videoPlayed25

Number

true

Planned video played 25% (first quartile completions)

siteGroups.[].plannedValues.videoPlayed25Rate

Number

true

Planned video played 25% rate

siteGroups.[].plannedValues.videoPlayed50

Number

true

Planned video played 50% (midpoint)

siteGroups.[].plannedValues.videoPlayed50Rate

Number

true

Planned video played 50% rate

siteGroups.[].plannedValues.videoPlayed75

Number

true

Planned video played 75% (third quartile completions)

siteGroups.[].plannedValues.videoPlayed75Rate

Number

true

Planned video played 75% rate

siteGroups.[].plannedValues.videoPlayed100

Number

true

Planned video played 100% (completions)

siteGroups.[].plannedValues.videoPlayed100Rate

Number

true

Planned video played 100% (completion) rate

siteGroups.[].plannedValues.qualityImpressions

Number

true

Total number of impressions delivered according to client quality definition

siteGroups.[].plannedValues.uniqueImpressions

Number

true

Total number of unique ip addresses reached by impressions

siteGroups.[].plannedValues.visits

Number

true

Total amount of visits for this site group

siteGroups.[].plannedValues.revenue

Number

true

Total revenue for this site group

siteGroups.[].plannedValues.qualityVisits

Number

true

Total amount of visits according to quality definition. Mandatory if corePlanningKpi or costType are CPQV

siteGroups.[].actualValues

Object

true

Actual values

siteGroups.[].actualValues.netNet

Number

false

Actual media net net

siteGroups.[].actualValues.servedImpressions

Number

true

Number of served impressions

siteGroups.[].actualValues.measurableImpressions

Number

true

Number of measurable impressions

siteGroups.[].actualValues.viewableImpressions

Number

true

Total number of viewable impressions (client definition

siteGroups.[].actualValues.viewableImpressionsIab

Number

true

Total number of viewable impressions (IAB definition

siteGroups.[].actualValues.videoViews

Number

true

Number of video views

siteGroups.[].actualValues.ctr

Number

true

Click Through Rate in percent

siteGroups.[].actualValues.clicks

Number

true

Number of registered clicks

siteGroups.[].actualValues.leads

Number

true

Number of registered leads

siteGroups.[].actualValues.actions

Number

true

Number of registered actions

siteGroups.[].actualValues.engagements

Number

true

Number of registered engagements

siteGroups.[].actualValues.followers

Number

true

Number of followers

siteGroups.[].actualValues.videoPlayed25

Number

true

Video played 25% (first quartile completions)

siteGroups.[].actualValues.videoPlayed25Rate

Number

true

Video played 25% rate

siteGroups.[].actualValues.videoPlayed50

Number

true

Video played 50% (midpoint)

siteGroups.[].actualValues.videoPlayed50Rate

Number

true

Video played 50% rate

siteGroups.[].actualValues.videoPlayed75

Number

true

Video played 75% (third quartile completions)

siteGroups.[].actualValues.videoPlayed75Rate

Number

true

Video played 75% rate

siteGroups.[].actualValues.videoPlayed100

Number

true

Video played 100% (completions)

siteGroups.[].actualValues.videoPlayed100Rate

Number

true

Video played 100% (completion) rate

siteGroups.[].actualValues.qualityImpressions

Number

true

Total number of impressions delivered according to client quality definition

siteGroups.[].actualValues.uniqueImpressions

Number

true

Total number of unique ip addresses reached by impressions

siteGroups.[].actualValues.visits

Number

true

Total amount of visits for this site group

siteGroups.[].actualValues.revenue

Number

true

Total revenue for this site group

siteGroups.[].actualValues.qualityVisits

Number

true

Total amount of visits according to quality definition.

6.5.2. Get Digital Plans for Campaign

Get all Digital plans for a single campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/plans HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 5293

[ {
  "id" : "5c41f5922944030003c58f77",
  "campaignId" : "578f5d2be4b0f4e880a76f02",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "plannedSummary" : {
    "netNet" : 1500.0,
    "servedImpressions" : 1300500,
    "measurableImpressions" : 1200300,
    "viewableImpressions" : 1200300,
    "viewableImpressionsIab" : 1200300,
    "videoViews" : 0,
    "ctr" : 3.2,
    "clicks" : 90000,
    "leads" : 0,
    "actions" : 0,
    "engagements" : 0,
    "followers" : 0,
    "videoPlayed25" : 0,
    "videoPlayed25Rate" : 0,
    "videoPlayed50" : 0,
    "videoPlayed50Rate" : 0,
    "videoPlayed75" : 0,
    "videoPlayed75Rate" : 0,
    "videoPlayed100" : 0,
    "videoPlayed100Rate" : 0,
    "qualityImpressions" : null,
    "uniqueImpressions" : null,
    "visits" : null,
    "revenue" : null,
    "qualityVisits" : null
  },
  "actualSummary" : {
    "netNet" : 1500.0,
    "servedImpressions" : 1300500,
    "measurableImpressions" : 1200300,
    "viewableImpressions" : 1200300,
    "viewableImpressionsIab" : 1200300,
    "videoViews" : 0,
    "ctr" : 3.2,
    "clicks" : 90000,
    "leads" : 0,
    "actions" : 0,
    "engagements" : 0,
    "followers" : 0,
    "videoPlayed25" : 0,
    "videoPlayed25Rate" : 0,
    "videoPlayed50" : 0,
    "videoPlayed50Rate" : 0,
    "videoPlayed75" : 0,
    "videoPlayed75Rate" : 0,
    "videoPlayed100" : 0,
    "videoPlayed100Rate" : 0,
    "qualityImpressions" : null,
    "uniqueImpressions" : null,
    "visits" : null,
    "revenue" : null,
    "qualityVisits" : null
  },
  "siteGroups" : [ {
    "siteName" : "Site Name",
    "targeting" : "A20-99",
    "targetClassification" : [ "DEMOGRAPHIC" ],
    "mediaType" : "VIDEO",
    "adFormat" : "PRE_ROLL",
    "buyType" : "PROGRAMMATIC",
    "corePlanningKpi" : "CPM",
    "platform" : "MULTISCREEN",
    "plannedValues" : {
      "netNet" : 1500.0,
      "servedImpressions" : 1300500,
      "measurableImpressions" : 1200300,
      "viewableImpressions" : 1200300,
      "viewableImpressionsIab" : 1200300,
      "videoViews" : 0,
      "ctr" : 3.2,
      "clicks" : 90000,
      "leads" : 0,
      "actions" : 0,
      "engagements" : 0,
      "followers" : 0,
      "videoPlayed25" : 0,
      "videoPlayed25Rate" : 0,
      "videoPlayed50" : 0,
      "videoPlayed50Rate" : 0,
      "videoPlayed75" : 0,
      "videoPlayed75Rate" : 0,
      "videoPlayed100" : 0,
      "videoPlayed100Rate" : 0,
      "qualityImpressions" : null,
      "uniqueImpressions" : null,
      "visits" : null,
      "revenue" : null,
      "qualityVisits" : null
    },
    "actualValues" : {
      "netNet" : 1500.0,
      "servedImpressions" : 1300500,
      "measurableImpressions" : 1200300,
      "viewableImpressions" : 1200300,
      "viewableImpressionsIab" : 1200300,
      "videoViews" : 0,
      "ctr" : 3.2,
      "clicks" : 90000,
      "leads" : 0,
      "actions" : 0,
      "engagements" : 0,
      "followers" : 0,
      "videoPlayed25" : 0,
      "videoPlayed25Rate" : 0,
      "videoPlayed50" : 0,
      "videoPlayed50Rate" : 0,
      "videoPlayed75" : 0,
      "videoPlayed75Rate" : 0,
      "videoPlayed100" : 0,
      "videoPlayed100Rate" : 0,
      "qualityImpressions" : null,
      "uniqueImpressions" : null,
      "visits" : null,
      "revenue" : null,
      "qualityVisits" : null
    },
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "netNet" : 1500.0,
        "servedImpressions" : 1300500,
        "measurableImpressions" : 1200300,
        "viewableImpressions" : 1200300,
        "viewableImpressionsIab" : 1200300,
        "videoViews" : 0,
        "ctr" : 3.2,
        "clicks" : 90000,
        "leads" : 0,
        "actions" : 0,
        "engagements" : 0,
        "followers" : 0,
        "videoPlayed25" : 0,
        "videoPlayed25Rate" : 0,
        "videoPlayed50" : 0,
        "videoPlayed50Rate" : 0,
        "videoPlayed75" : 0,
        "videoPlayed75Rate" : 0,
        "videoPlayed100" : 0,
        "videoPlayed100Rate" : 0,
        "qualityImpressions" : null,
        "uniqueImpressions" : null,
        "visits" : null,
        "revenue" : null,
        "qualityVisits" : null
      },
      "actualSummary" : {
        "netNet" : 1500.0,
        "servedImpressions" : 1300500,
        "measurableImpressions" : 1200300,
        "viewableImpressions" : 1200300,
        "viewableImpressionsIab" : 1200300,
        "videoViews" : 0,
        "ctr" : 3.2,
        "clicks" : 90000,
        "leads" : 0,
        "actions" : 0,
        "engagements" : 0,
        "followers" : 0,
        "videoPlayed25" : 0,
        "videoPlayed25Rate" : 0,
        "videoPlayed50" : 0,
        "videoPlayed50Rate" : 0,
        "videoPlayed75" : 0,
        "videoPlayed75Rate" : 0,
        "videoPlayed100" : 0,
        "videoPlayed100Rate" : 0,
        "qualityImpressions" : null,
        "uniqueImpressions" : null,
        "visits" : null,
        "revenue" : null,
        "qualityVisits" : null
      }
    } ]
  } ]
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/plans' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/plans' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.5.3. Get Digital Plan By ID

Get a single Digital plan for a campaign using GMP Campaign ID and Plan ID

Sample request
GET /api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/plans/5c41f5922944030003c58f77 HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 5289

{
  "id" : "5c41f5922944030003c58f77",
  "campaignId" : "578f5d2be4b0f4e880a76f02",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "plannedSummary" : {
    "netNet" : 1500.0,
    "servedImpressions" : 1300500,
    "measurableImpressions" : 1200300,
    "viewableImpressions" : 1200300,
    "viewableImpressionsIab" : 1200300,
    "videoViews" : 0,
    "ctr" : 3.2,
    "clicks" : 90000,
    "leads" : 0,
    "actions" : 0,
    "engagements" : 0,
    "followers" : 0,
    "videoPlayed25" : 0,
    "videoPlayed25Rate" : 0,
    "videoPlayed50" : 0,
    "videoPlayed50Rate" : 0,
    "videoPlayed75" : 0,
    "videoPlayed75Rate" : 0,
    "videoPlayed100" : 0,
    "videoPlayed100Rate" : 0,
    "qualityImpressions" : null,
    "uniqueImpressions" : null,
    "visits" : null,
    "revenue" : null,
    "qualityVisits" : null
  },
  "actualSummary" : {
    "netNet" : 1500.0,
    "servedImpressions" : 1300500,
    "measurableImpressions" : 1200300,
    "viewableImpressions" : 1200300,
    "viewableImpressionsIab" : 1200300,
    "videoViews" : 0,
    "ctr" : 3.2,
    "clicks" : 90000,
    "leads" : 0,
    "actions" : 0,
    "engagements" : 0,
    "followers" : 0,
    "videoPlayed25" : 0,
    "videoPlayed25Rate" : 0,
    "videoPlayed50" : 0,
    "videoPlayed50Rate" : 0,
    "videoPlayed75" : 0,
    "videoPlayed75Rate" : 0,
    "videoPlayed100" : 0,
    "videoPlayed100Rate" : 0,
    "qualityImpressions" : null,
    "uniqueImpressions" : null,
    "visits" : null,
    "revenue" : null,
    "qualityVisits" : null
  },
  "siteGroups" : [ {
    "siteName" : "Site Name",
    "targeting" : "A20-99",
    "targetClassification" : [ "DEMOGRAPHIC" ],
    "mediaType" : "VIDEO",
    "adFormat" : "PRE_ROLL",
    "buyType" : "PROGRAMMATIC",
    "corePlanningKpi" : "CPM",
    "platform" : "MULTISCREEN",
    "plannedValues" : {
      "netNet" : 1500.0,
      "servedImpressions" : 1300500,
      "measurableImpressions" : 1200300,
      "viewableImpressions" : 1200300,
      "viewableImpressionsIab" : 1200300,
      "videoViews" : 0,
      "ctr" : 3.2,
      "clicks" : 90000,
      "leads" : 0,
      "actions" : 0,
      "engagements" : 0,
      "followers" : 0,
      "videoPlayed25" : 0,
      "videoPlayed25Rate" : 0,
      "videoPlayed50" : 0,
      "videoPlayed50Rate" : 0,
      "videoPlayed75" : 0,
      "videoPlayed75Rate" : 0,
      "videoPlayed100" : 0,
      "videoPlayed100Rate" : 0,
      "qualityImpressions" : null,
      "uniqueImpressions" : null,
      "visits" : null,
      "revenue" : null,
      "qualityVisits" : null
    },
    "actualValues" : {
      "netNet" : 1500.0,
      "servedImpressions" : 1300500,
      "measurableImpressions" : 1200300,
      "viewableImpressions" : 1200300,
      "viewableImpressionsIab" : 1200300,
      "videoViews" : 0,
      "ctr" : 3.2,
      "clicks" : 90000,
      "leads" : 0,
      "actions" : 0,
      "engagements" : 0,
      "followers" : 0,
      "videoPlayed25" : 0,
      "videoPlayed25Rate" : 0,
      "videoPlayed50" : 0,
      "videoPlayed50Rate" : 0,
      "videoPlayed75" : 0,
      "videoPlayed75Rate" : 0,
      "videoPlayed100" : 0,
      "videoPlayed100Rate" : 0,
      "qualityImpressions" : null,
      "uniqueImpressions" : null,
      "visits" : null,
      "revenue" : null,
      "qualityVisits" : null
    },
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "netNet" : 1500.0,
        "servedImpressions" : 1300500,
        "measurableImpressions" : 1200300,
        "viewableImpressions" : 1200300,
        "viewableImpressionsIab" : 1200300,
        "videoViews" : 0,
        "ctr" : 3.2,
        "clicks" : 90000,
        "leads" : 0,
        "actions" : 0,
        "engagements" : 0,
        "followers" : 0,
        "videoPlayed25" : 0,
        "videoPlayed25Rate" : 0,
        "videoPlayed50" : 0,
        "videoPlayed50Rate" : 0,
        "videoPlayed75" : 0,
        "videoPlayed75Rate" : 0,
        "videoPlayed100" : 0,
        "videoPlayed100Rate" : 0,
        "qualityImpressions" : null,
        "uniqueImpressions" : null,
        "visits" : null,
        "revenue" : null,
        "qualityVisits" : null
      },
      "actualSummary" : {
        "netNet" : 1500.0,
        "servedImpressions" : 1300500,
        "measurableImpressions" : 1200300,
        "viewableImpressions" : 1200300,
        "viewableImpressionsIab" : 1200300,
        "videoViews" : 0,
        "ctr" : 3.2,
        "clicks" : 90000,
        "leads" : 0,
        "actions" : 0,
        "engagements" : 0,
        "followers" : 0,
        "videoPlayed25" : 0,
        "videoPlayed25Rate" : 0,
        "videoPlayed50" : 0,
        "videoPlayed50Rate" : 0,
        "videoPlayed75" : 0,
        "videoPlayed75Rate" : 0,
        "videoPlayed100" : 0,
        "videoPlayed100Rate" : 0,
        "qualityImpressions" : null,
        "uniqueImpressions" : null,
        "visits" : null,
        "revenue" : null,
        "qualityVisits" : null
      }
    } ]
  } ]
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/plans/5c41f5922944030003c58f77' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/plans/5c41f5922944030003c58f77' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.5.4. Digital Site model

All fields represented for a Digital Site object

Path Type Optional Description

idempotencyKey

String

false

Transaction key. If the key has already been used for a successful transmission of data the result of that upload will be returned, otherwise they payload is accepted and a new result returned

digitalSites

Array

false

List of Digital Sites to register in GMP

digitalSites.[].siteName

String

false

Site name or URL

digitalSites.[].externalCampaignId

String

true

Campaign ID used on your side

digitalSites.[].siteId

String

true

Site ID on your side

digitalSites.[].creativeAdName

String

true

Creative used

digitalSites.[].startDate

DateString

false

Start date for this site purchase

digitalSites.[].endDate

DateString

false

End date for this site purchase

digitalSites.[].targeting

String

true

Targeting for this site purchase

digitalSites.[].targetingClassifications

Array

true

List of Targeting Classification according to Digital Targeting Classification list for this site purchase

digitalSites.[].mediaType

String

false

Main media type (Social, Video, Display) according to Digital Media Type list for this site purchase

digitalSites.[].platform

String

false

Platform according to Digital Platform list for this site purchase

digitalSites.[].buyType

String

false

Buy type according to Digital Buy Type list for this site purchase

digitalSites.[].adFormat

String

false

Ad format according to Digital Format Type list for this site purchase

digitalSites.[].placementId

String

true

Placement ID

digitalSites.[].placementName

String

true

Placement on page

digitalSites.[].unitSize

String

false

Size in pixels WxH, can be several sizes separated by comma (,)

digitalSites.[].corePlanningKpi

String

false

How the purchase should be followed up according to Digital Cost Type list

digitalSites.[].costType

String

false

How the purchase was bought according to Digital Cost Type list

digitalSites.[].kpiDefinition

String

true

How the Kpi is defined

digitalSites.[].currency

String

false

Currency according to ISO 4217, need to be the country local currency

digitalSites.[].netNet

Number

false

Amount paid in specified currency

digitalSites.[].servedImpressions

Number

false

Number of served impressions tracked by ad server, integer.

digitalSites.[].measurableImpressions

Number

true

The number of served impressions that allow for verification of tracking variables such viewability (cannot be more than served).

digitalSites.[].viewableImpressions

Number

true

Number of viewable impressions, or video views if mediaType is VIDEO, as an integer

digitalSites.[].viewableImpressionsIab

Number

true

Total number of impressions according to Iab standard. Based no responses from an ad delivery system to an ad request from the user’s browser.

digitalSites.[].videoViews

Number

true

Total number of video views according to definition in videoViewDefinition

digitalSites.[].videoViewDefinition

String

true

How a view on a video is defined if corePlanningKpi or costType CPVV

digitalSites.[].qualityImpressions

Number

true

Total number of impressions delivered according to client quality definition

digitalSites.[].uniqueImpressions

Number

true

Total number of unique ip addresses reached by impressions

digitalSites.[].clicks

Number

false

Number of Clicks as an integer, Mandatory if corePlanningKpi or costType are CPC

digitalSites.[].actions

Number

true

Number of Actions. Mandatory if corePlanningKpi or costType are CPA

digitalSites.[].engagements

Number

true

Number of Engagements. Mandatory if corePlanningKpi or costType are CPE

digitalSites.[].followers

Number

true

Number of Followers. Mandatory if corePlanningKpi or costType are CPF

digitalSites.[].leads

Number

true

Number of Leads. Mandatory if corePlanningKpi or costType are CPL

digitalSites.[].costTypeUnits

Number

true

If corePlanningKpi or costType are FIXED, give the number of FIXED here

digitalSites.[].qualityVisits

Number

true

Amount of visits according to quality definition. Mandatory if corePlanningKpi or costType are CPQV or CPEV

digitalSites.[].visits

Number

true

Total amount of visits. Mandatory if corePlanningKpi or costType are CPVI

digitalSites.[].revenue

Number

true

Revenue expected from the investment. Mandatory if corePlanningKpi or costType are RPM

digitalSites.[].qualityScore

Number

true

Score given by search engines, used for mediaType SEARCH only

digitalSites.[].videoAverageDuration

String

true

Average length of video played in seconds

digitalSites.[].videoPlayed25

Number

true

Number of videos played 25% through

digitalSites.[].videoPlayed25Rate

Number

true

Percent of number of videos played 25% through out of the total video views

digitalSites.[].videoPlayed50

Number

true

Number of videos played 50% through

digitalSites.[].videoPlayed50Rate

Number

true

Percent of number of videos played 50% through out of the total video views

digitalSites.[].videoPlayed75

Number

true

Number of videos played 75% through

digitalSites.[].videoPlayed75Rate

Number

true

Percent of number of videos played 75% through out of the total video views

digitalSites.[].videoPlayed100

Number

true

Number of videos played 100% through

digitalSites.[].videoPlayed100Rate

Number

true

Percent of number of videos played 100% through out of the total video views

digitalSites.[].universeSize

Number

true

Total amount of people in the target group

digitalSites.[].reach

Number

true

Reach within target audience as a percent

digitalSites.[].frequency

Number

true

Frequency within target audience

digitalSites.[].managementFee

Number

true

Fee of management for purchase

digitalSites.[].dataCost

Number

true

Cost paid for data fees for purchase

digitalSites.[].techCost

Number

true

Cost paid for technology fees for purchase

digitalSites.[].adServerCost

Number

true

Cost paid to Ad server for purchase

6.5.5. Get Digital Sites for Campaign

Sample request
GET /api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1776

[ {
  "siteName" : "Instagram",
  "externalCampaignId" : "ext-campaign-id-5555555",
  "siteId" : "ext-siteId-123456789",
  "creativeAdName" : "The Ad name",
  "startDate" : "2018-01-01",
  "endDate" : "2018-01-31",
  "targeting" : "A18-25",
  "targetingClassifications" : [ "DEMOGRAPHIC" ],
  "mediaType" : "SOCIAL",
  "platform" : "MULTISCREEN",
  "buyType" : "SELF_SERVICE",
  "adFormat" : "SOCIAL_IMAGE",
  "placementId" : "abc123",
  "placementName" : "The Name of the placement",
  "unitSize" : "640x360",
  "corePlanningKpi" : "CPM",
  "costType" : "CPM",
  "kpiDefinition" : "test",
  "currency" : "SEK",
  "netNet" : 500,
  "servedImpressions" : 100000,
  "measurableImpressions" : 80000,
  "viewableImpressions" : 90000,
  "viewableImpressionsIab" : 91000,
  "videoViews" : 0,
  "videoViewDefinition" : "definition",
  "qualityImpressions" : 0,
  "uniqueImpressions" : 0,
  "clicks" : 0,
  "actions" : 0,
  "engagements" : 0,
  "followers" : 0,
  "leads" : 0,
  "costTypeUnits" : 0,
  "qualityVisits" : 0,
  "visits" : 0,
  "revenue" : 0,
  "qualityScore" : 0,
  "videoAverageDuration" : "0.000",
  "videoPlayed25" : 0,
  "videoPlayed25Rate" : 0,
  "videoPlayed50" : 0,
  "videoPlayed50Rate" : 0,
  "videoPlayed75" : 0,
  "videoPlayed75Rate" : 0,
  "videoPlayed100" : 0,
  "videoPlayed100Rate" : 0,
  "universeSize" : 0,
  "reach" : 0,
  "frequency" : 0,
  "managementFee" : 0,
  "dataCost" : 0,
  "techCost" : 0,
  "adServerCost" : 0,
  "adServer" : "SIZMEK",
  "campaignName" : "Test Campaign",
  "corePlanningKpiText" : "CPM",
  "mediaTypeText" : "Social",
  "platformText" : "Multi screen",
  "adFormatText" : "Social Image",
  "buyTypeText" : "Self Service",
  "costTypeText" : "CPM",
  "adServerText" : "Sizmek",
  "targetClassificationText" : "Demographic"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.5.6. Upload Digital sites to existing Campaign

Upload Digital sites to an existing Campaign. After upload, you can Check upload status described below. Uploaded sites are appended to the campaign’s existing sites. It is possible to remove all sites for a campaign via Remove Digital sites from existing Campaign

Sample request
PUT /api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites HTTP/1.1
Content-Type: application/json
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Content-Length: 1915
Host: www.gmp365.io

{
    "idempotencyKey": "23089234098-DRXTS-345",
    "digitalSites": [
      {
        "siteName": "Instagram",
        "externalCampaignId": "ext-campaignId-555555",
        "siteId": "ext-siteId-123456789",
        "creativeAdName": "The Ad Name",
        "startDate": "2018-01-01",
        "endDate": "2018-01-31",
        "targeting": "A18-25",
        "targetingClassifications": ["DEMOGRAPHIC"],
        "mediaType": "SOCIAL",
        "platform": "MULTISCREEN",
        "buyType": "SELF_SERVICE",
        "adFormat": "SOCIAL_IMAGE",
        "placementId": "abc123",
        "placementName": "The Name of the placement",
        "unitSize": "640x360",
        "corePlanningKpi": "CPM",
        "costType": "CPM",
        "kpiDefinition": "KPI Definition",
        "currency": "SEK",
        "netNet": 500,
        "servedImpressions": 100000,
        "measurableImpressions": 90000,
        "viewableImpressions": 80000,
        "viewableImpressionsIab": 80000,
        "videoViews": 0,
        "videoViewDefinition": "Video View Definition",
        "qualityImpressions": 0,
        "uniqueImpressions": 0,
        "clicks": 400,
        "actions": 0.000,
        "engagements": 0.000,
        "followers": 0.000,
        "leads": 0.000,
        "costTypeUnits": 0.000,
        "qualityVisits": 0.000,
        "visits": 0.000,
        "revenue": 0.000,
        "qualityScore": 0.000,
        "videoAverageDuration": "0.000",
        "videoPlayed25": 0.000,
        "videoPlayed25Rate": 0.000,
        "videoPlayed50": 0.000,
        "videoPlayed50Rate": 0.000,
        "videoPlayed75": 0.000,
        "videoPlayed75Rate": 0.000,
        "videoPlayed100": 0.000,
        "videoPlayed100Rate": 0.000,
        "universeSize": 0,
        "reach": 0.000,
        "frequency": 0.000,
        "managementFee": 0.000,
        "dataCost": 0.000,
        "techCost": 0.000,
        "adServerCost": 0.000
      }
    ]
}
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 270

{
  "statusId" : "FUL_0adfd9f416d04c07a83ab376",
  "created" : "2022-11-21T16:31:05.618Z",
  "percentDone" : 0.0,
  "state" : "PENDING",
  "errors" : [ ],
  "campaignId" : "578f5d2be4b0f4e880a76f02",
  "planIds" : [ "b68c41aa13414c5d9e2f544d" ],
  "campaignIds" : null
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites' -i -X PUT \
    -H 'Content-Type: application/json' \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -d '{
    "idempotencyKey": "23089234098-DRXTS-345",
    "digitalSites": [
      {
        "siteName": "Instagram",
        "externalCampaignId": "ext-campaignId-555555",
        "siteId": "ext-siteId-123456789",
        "creativeAdName": "The Ad Name",
        "startDate": "2018-01-01",
        "endDate": "2018-01-31",
        "targeting": "A18-25",
        "targetingClassifications": ["DEMOGRAPHIC"],
        "mediaType": "SOCIAL",
        "platform": "MULTISCREEN",
        "buyType": "SELF_SERVICE",
        "adFormat": "SOCIAL_IMAGE",
        "placementId": "abc123",
        "placementName": "The Name of the placement",
        "unitSize": "640x360",
        "corePlanningKpi": "CPM",
        "costType": "CPM",
        "kpiDefinition": "KPI Definition",
        "currency": "SEK",
        "netNet": 500,
        "servedImpressions": 100000,
        "measurableImpressions": 90000,
        "viewableImpressions": 80000,
        "viewableImpressionsIab": 80000,
        "videoViews": 0,
        "videoViewDefinition": "Video View Definition",
        "qualityImpressions": 0,
        "uniqueImpressions": 0,
        "clicks": 400,
        "actions": 0.000,
        "engagements": 0.000,
        "followers": 0.000,
        "leads": 0.000,
        "costTypeUnits": 0.000,
        "qualityVisits": 0.000,
        "visits": 0.000,
        "revenue": 0.000,
        "qualityScore": 0.000,
        "videoAverageDuration": "0.000",
        "videoPlayed25": 0.000,
        "videoPlayed25Rate": 0.000,
        "videoPlayed50": 0.000,
        "videoPlayed50Rate": 0.000,
        "videoPlayed75": 0.000,
        "videoPlayed75Rate": 0.000,
        "videoPlayed100": 0.000,
        "videoPlayed100Rate": 0.000,
        "universeSize": 0,
        "reach": 0.000,
        "frequency": 0.000,
        "managementFee": 0.000,
        "dataCost": 0.000,
        "techCost": 0.000,
        "adServerCost": 0.000
      }
    ]
}'
HTTPie request
$ echo '{
    "idempotencyKey": "23089234098-DRXTS-345",
    "digitalSites": [
      {
        "siteName": "Instagram",
        "externalCampaignId": "ext-campaignId-555555",
        "siteId": "ext-siteId-123456789",
        "creativeAdName": "The Ad Name",
        "startDate": "2018-01-01",
        "endDate": "2018-01-31",
        "targeting": "A18-25",
        "targetingClassifications": ["DEMOGRAPHIC"],
        "mediaType": "SOCIAL",
        "platform": "MULTISCREEN",
        "buyType": "SELF_SERVICE",
        "adFormat": "SOCIAL_IMAGE",
        "placementId": "abc123",
        "placementName": "The Name of the placement",
        "unitSize": "640x360",
        "corePlanningKpi": "CPM",
        "costType": "CPM",
        "kpiDefinition": "KPI Definition",
        "currency": "SEK",
        "netNet": 500,
        "servedImpressions": 100000,
        "measurableImpressions": 90000,
        "viewableImpressions": 80000,
        "viewableImpressionsIab": 80000,
        "videoViews": 0,
        "videoViewDefinition": "Video View Definition",
        "qualityImpressions": 0,
        "uniqueImpressions": 0,
        "clicks": 400,
        "actions": 0.000,
        "engagements": 0.000,
        "followers": 0.000,
        "leads": 0.000,
        "costTypeUnits": 0.000,
        "qualityVisits": 0.000,
        "visits": 0.000,
        "revenue": 0.000,
        "qualityScore": 0.000,
        "videoAverageDuration": "0.000",
        "videoPlayed25": 0.000,
        "videoPlayed25Rate": 0.000,
        "videoPlayed50": 0.000,
        "videoPlayed50Rate": 0.000,
        "videoPlayed75": 0.000,
        "videoPlayed75Rate": 0.000,
        "videoPlayed100": 0.000,
        "videoPlayed100Rate": 0.000,
        "universeSize": 0,
        "reach": 0.000,
        "frequency": 0.000,
        "managementFee": 0.000,
        "dataCost": 0.000,
        "techCost": 0.000,
        "adServerCost": 0.000
      }
    ]
}' | http PUT 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites' \
    'Content-Type:application/json' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

6.5.7. Upload Digital sites and create new Campaign

Upload Digital sites and create a Campaign. After upload, you can Check upload status described below. Note that the campaign can have other media types as well as digital. See Upload Campaigns for more details.

Sample request
PUT /api/v1/campaigns/digital/digital-sites HTTP/1.1
Content-Type: application/json
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Content-Length: 2601
Host: www.gmp365.io

{
    "idempotencyKey": "23089234098-DRXTS-345",
    "campaign":      {
        "name": "Springtime Campaign",
        "startDate": "2018-04-01",
        "endDate": "2018-05-15",
        "countryCode": "SE",
        "brand": "Brand Name",
        "fiscalYear": 2018,
        "regions": ["South"],
        "externalIds": [ {
               "externalProvider": "theAdServer",
               "externalId": "ADS-1293493i34_SE"
               } ],
        "mediaTypes": ["DIGITAL"],
        "digitalTypes": [{"briefedBudget": 55000.00}],
        "businessObjectives": "Business objectives for campaign",
        "advertisingObjectives": "Advertiser objectives for campaign",
        "campaignObjectives": "The campaign objectives"
      },
    "digitalSites": [
      {
        "siteName": "Instagram",
        "externalCampaignId": "ext-campaignId-555555",
        "siteId": "ext-siteId-123456789",
        "creativeAdName": "The Ad Name",
        "startDate": "2018-01-01",
        "endDate": "2018-01-31",
        "targeting": "A18-25",
        "targetingClassifications": ["DEMOGRAPHIC"],
        "mediaType": "SOCIAL",
        "platform": "MULTISCREEN",
        "buyType": "SELF_SERVICE",
        "adFormat": "SOCIAL_IMAGE",
        "placementId": "abc123",
        "placementName": "The Name of the placement",
        "unitSize": "640x360",
        "corePlanningKpi": "CPM",
        "costType": "CPM",
        "kpiDefinition": "KPI Definition",
        "currency": "SEK",
        "netNet": 500,
        "servedImpressions": 100000,
        "measurableImpressions": 90000,
        "viewableImpressions": 80000,
        "viewableImpressionsIab": 80000,
        "videoViews": 0,
        "videoViewDefinition": "Video View Definition",
        "qualityImpressions": 0,
        "uniqueImpressions": 0,
        "clicks": 400,
        "actions": 0.000,
        "engagements": 0.000,
        "followers": 0.000,
        "leads": 0.000,
        "costTypeUnits": 0.000,
        "qualityVisits": 0.000,
        "visits": 0.000,
        "revenue": 0.000,
        "qualityScore": 0.000,
        "videoAverageDuration": "0.000",
        "videoPlayed25": 0.000,
        "videoPlayed25Rate": 0.000,
        "videoPlayed50": 0.000,
        "videoPlayed50Rate": 0.000,
        "videoPlayed75": 0.000,
        "videoPlayed75Rate": 0.000,
        "videoPlayed100": 0.000,
        "videoPlayed100Rate": 0.000,
        "universeSize": 0,
        "reach": 0.000,
        "frequency": 0.000,
        "managementFee": 0.000,
        "dataCost": 0.000,
        "techCost": 0.000,
        "adServerCost": 0.000
      }
    ]
}
Table 5. Request fields
Path Type Optional Description

idempotencyKey

String

false

Transaction key. If the key has already been used for a successful transmission of data the result of that upload will be returned, otherwise they payload is accepted and a new result returned

campaign

Object

false

Campaign that will be created together with digital plan. Note that the campaign can have other media types

campaign.name

String

false

Campaign name

campaign.startDate

DateString

false

Start date of the Campaign

campaign.endDate

DateString

false

End date of the Campaign

campaign.regions

Array

true

Regions for the Campaign

campaign.countryCode

String

false

Country code according to ISO 3166-1

campaign.brand

String

false

Brand name

campaign.fiscalYear

Number

false

Fiscal year of the campaign

campaign.externalIds

Array

true

List of external ID key/value pairs

campaign.externalIds[].externalId

String

false

Key for the external ID

campaign.externalIds[].externalProvider

String

false

Value for external ID

campaign.mediaTypes

Array

true

All Media Types used in the Campaign. If empty, mediaType DIGITAL will de defaulted.

campaign.digitalTypes

Array

true

Details for Digital plans in the campaign

campaign.digitalTypes[].briefedBudget

Number

true

Briefed budget for the plan. Currency is that of the campaign’s country. If omitted, briefedBudget will be 0

campaign.businessObjectives

String

true

The business objectives for the campaign

campaign.advertisingObjectives

String

true

The advertising objectives for the campaign

campaign.campaignObjectives

String

true

The campaign objectives

digitalSites

Array

false

List of Digital Sites to register in GMP

digitalSites.[].siteName

String

false

Site name or URL

digitalSites.[].externalCampaignId

String

true

Campaign ID used on your side

digitalSites.[].siteId

String

true

Site ID on your side

digitalSites.[].creativeAdName

String

true

Creative used

digitalSites.[].startDate

DateString

false

Start date for this site purchase

digitalSites.[].endDate

DateString

false

End date for this site purchase

digitalSites.[].targeting

String

true

Targeting for this site purchase

digitalSites.[].targetingClassifications

Array

true

List of Targeting Classification according to Digital Targeting Classification list for this site purchase

digitalSites.[].mediaType

String

false

Main media type (Social, Video, Display) according to Digital Media Type list for this site purchase

digitalSites.[].platform

String

false

Platform according to Digital Platform list for this site purchase

digitalSites.[].buyType

String

false

Buy type according to Digital Buy Type list for this site purchase

digitalSites.[].adFormat

String

false

Ad format according to Digital Format Type list for this site purchase

digitalSites.[].placementId

String

true

Placement ID

digitalSites.[].placementName

String

true

Placement on page

digitalSites.[].unitSize

String

false

Size in pixels WxH, can be several sizes separated by comma (,)

digitalSites.[].corePlanningKpi

String

false

How the purchase should be followed up according to Digital Cost Type list

digitalSites.[].costType

String

false

How the purchase was bought according to Digital Cost Type list

digitalSites.[].kpiDefinition

String

true

How the Kpi is defined

digitalSites.[].currency

String

false

Currency according to ISO 4217, need to be the country local currency

digitalSites.[].netNet

Number

false

Amount paid in specified currency

digitalSites.[].servedImpressions

Number

false

Number of served impressions tracked by ad server, integer.

digitalSites.[].measurableImpressions

Number

true

The number of served impressions that allow for verification of tracking variables such viewability (cannot be more than served).

digitalSites.[].viewableImpressions

Number

true

Number of viewable impressions, or video views if mediaType is VIDEO, as an integer

digitalSites.[].viewableImpressionsIab

Number

true

Total number of impressions according to Iab standard. Based no responses from an ad delivery system to an ad request from the user’s browser.

digitalSites.[].videoViews

Number

true

Total number of video views according to definition in videoViewDefinition

digitalSites.[].videoViewDefinition

String

true

How a view on a video is defined if corePlanningKpi or costType CPVV

digitalSites.[].qualityImpressions

Number

true

Total number of impressions delivered according to client quality definition

digitalSites.[].uniqueImpressions

Number

true

Total number of unique ip addresses reached by impressions

digitalSites.[].clicks

Number

false

Number of Clicks as an integer, Mandatory if corePlanningKpi or costType are CPC

digitalSites.[].actions

Number

true

Number of Actions. Mandatory if corePlanningKpi or costType are CPA

digitalSites.[].engagements

Number

true

Number of Engagements. Mandatory if corePlanningKpi or costType are CPE

digitalSites.[].followers

Number

true

Number of Followers. Mandatory if corePlanningKpi or costType are CPF

digitalSites.[].leads

Number

true

Number of Leads. Mandatory if corePlanningKpi or costType are CPL

digitalSites.[].costTypeUnits

Number

true

If corePlanningKpi or costType are FIXED, give the number of FIXED here

digitalSites.[].qualityVisits

Number

true

Amount of visits according to quality definition. Mandatory if corePlanningKpi or costType are CPQV or CPEV

digitalSites.[].visits

Number

true

Total amount of visits. Mandatory if corePlanningKpi or costType are CPVI

digitalSites.[].revenue

Number

true

Revenue expected from the investment. Mandatory if corePlanningKpi or costType are RPM

digitalSites.[].qualityScore

Number

true

Score given by search engines, used for mediaType SEARCH only

digitalSites.[].videoAverageDuration

String

true

Average length of video played in seconds

digitalSites.[].videoPlayed25

Number

true

Number of videos played 25% through

digitalSites.[].videoPlayed25Rate

Number

true

Percent of number of videos played 25% through out of the total video views

digitalSites.[].videoPlayed50

Number

true

Number of videos played 50% through

digitalSites.[].videoPlayed50Rate

Number

true

Percent of number of videos played 50% through out of the total video views

digitalSites.[].videoPlayed75

Number

true

Number of videos played 75% through

digitalSites.[].videoPlayed75Rate

Number

true

Percent of number of videos played 75% through out of the total video views

digitalSites.[].videoPlayed100

Number

true

Number of videos played 100% through

digitalSites.[].videoPlayed100Rate

Number

true

Percent of number of videos played 100% through out of the total video views

digitalSites.[].universeSize

Number

true

Total amount of people in the target group

digitalSites.[].reach

Number

true

Reach within target audience as a percent

digitalSites.[].frequency

Number

true

Frequency within target audience

digitalSites.[].managementFee

Number

true

Fee of management for purchase

digitalSites.[].dataCost

Number

true

Cost paid for data fees for purchase

digitalSites.[].techCost

Number

true

Cost paid for technology fees for purchase

digitalSites.[].adServerCost

Number

true

Cost paid to Ad server for purchase

Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 221

{
  "statusId" : "FUL_46ba8dbf0a1a4eb782e9546b",
  "created" : "2022-11-21T16:31:05.725Z",
  "percentDone" : 0.0,
  "state" : "PENDING",
  "errors" : [ ],
  "campaignId" : null,
  "planIds" : [ ],
  "campaignIds" : null
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/digital/digital-sites' -i -X PUT \
    -H 'Content-Type: application/json' \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -d '{
    "idempotencyKey": "23089234098-DRXTS-345",
    "campaign":      {
        "name": "Springtime Campaign",
        "startDate": "2018-04-01",
        "endDate": "2018-05-15",
        "countryCode": "SE",
        "brand": "Brand Name",
        "fiscalYear": 2018,
        "regions": ["South"],
        "externalIds": [ {
               "externalProvider": "theAdServer",
               "externalId": "ADS-1293493i34_SE"
               } ],
        "mediaTypes": ["DIGITAL"],
        "digitalTypes": [{"briefedBudget": 55000.00}],
        "businessObjectives": "Business objectives for campaign",
        "advertisingObjectives": "Advertiser objectives for campaign",
        "campaignObjectives": "The campaign objectives"
      },
    "digitalSites": [
      {
        "siteName": "Instagram",
        "externalCampaignId": "ext-campaignId-555555",
        "siteId": "ext-siteId-123456789",
        "creativeAdName": "The Ad Name",
        "startDate": "2018-01-01",
        "endDate": "2018-01-31",
        "targeting": "A18-25",
        "targetingClassifications": ["DEMOGRAPHIC"],
        "mediaType": "SOCIAL",
        "platform": "MULTISCREEN",
        "buyType": "SELF_SERVICE",
        "adFormat": "SOCIAL_IMAGE",
        "placementId": "abc123",
        "placementName": "The Name of the placement",
        "unitSize": "640x360",
        "corePlanningKpi": "CPM",
        "costType": "CPM",
        "kpiDefinition": "KPI Definition",
        "currency": "SEK",
        "netNet": 500,
        "servedImpressions": 100000,
        "measurableImpressions": 90000,
        "viewableImpressions": 80000,
        "viewableImpressionsIab": 80000,
        "videoViews": 0,
        "videoViewDefinition": "Video View Definition",
        "qualityImpressions": 0,
        "uniqueImpressions": 0,
        "clicks": 400,
        "actions": 0.000,
        "engagements": 0.000,
        "followers": 0.000,
        "leads": 0.000,
        "costTypeUnits": 0.000,
        "qualityVisits": 0.000,
        "visits": 0.000,
        "revenue": 0.000,
        "qualityScore": 0.000,
        "videoAverageDuration": "0.000",
        "videoPlayed25": 0.000,
        "videoPlayed25Rate": 0.000,
        "videoPlayed50": 0.000,
        "videoPlayed50Rate": 0.000,
        "videoPlayed75": 0.000,
        "videoPlayed75Rate": 0.000,
        "videoPlayed100": 0.000,
        "videoPlayed100Rate": 0.000,
        "universeSize": 0,
        "reach": 0.000,
        "frequency": 0.000,
        "managementFee": 0.000,
        "dataCost": 0.000,
        "techCost": 0.000,
        "adServerCost": 0.000
      }
    ]
}'
HTTPie request
$ echo '{
    "idempotencyKey": "23089234098-DRXTS-345",
    "campaign":      {
        "name": "Springtime Campaign",
        "startDate": "2018-04-01",
        "endDate": "2018-05-15",
        "countryCode": "SE",
        "brand": "Brand Name",
        "fiscalYear": 2018,
        "regions": ["South"],
        "externalIds": [ {
               "externalProvider": "theAdServer",
               "externalId": "ADS-1293493i34_SE"
               } ],
        "mediaTypes": ["DIGITAL"],
        "digitalTypes": [{"briefedBudget": 55000.00}],
        "businessObjectives": "Business objectives for campaign",
        "advertisingObjectives": "Advertiser objectives for campaign",
        "campaignObjectives": "The campaign objectives"
      },
    "digitalSites": [
      {
        "siteName": "Instagram",
        "externalCampaignId": "ext-campaignId-555555",
        "siteId": "ext-siteId-123456789",
        "creativeAdName": "The Ad Name",
        "startDate": "2018-01-01",
        "endDate": "2018-01-31",
        "targeting": "A18-25",
        "targetingClassifications": ["DEMOGRAPHIC"],
        "mediaType": "SOCIAL",
        "platform": "MULTISCREEN",
        "buyType": "SELF_SERVICE",
        "adFormat": "SOCIAL_IMAGE",
        "placementId": "abc123",
        "placementName": "The Name of the placement",
        "unitSize": "640x360",
        "corePlanningKpi": "CPM",
        "costType": "CPM",
        "kpiDefinition": "KPI Definition",
        "currency": "SEK",
        "netNet": 500,
        "servedImpressions": 100000,
        "measurableImpressions": 90000,
        "viewableImpressions": 80000,
        "viewableImpressionsIab": 80000,
        "videoViews": 0,
        "videoViewDefinition": "Video View Definition",
        "qualityImpressions": 0,
        "uniqueImpressions": 0,
        "clicks": 400,
        "actions": 0.000,
        "engagements": 0.000,
        "followers": 0.000,
        "leads": 0.000,
        "costTypeUnits": 0.000,
        "qualityVisits": 0.000,
        "visits": 0.000,
        "revenue": 0.000,
        "qualityScore": 0.000,
        "videoAverageDuration": "0.000",
        "videoPlayed25": 0.000,
        "videoPlayed25Rate": 0.000,
        "videoPlayed50": 0.000,
        "videoPlayed50Rate": 0.000,
        "videoPlayed75": 0.000,
        "videoPlayed75Rate": 0.000,
        "videoPlayed100": 0.000,
        "videoPlayed100Rate": 0.000,
        "universeSize": 0,
        "reach": 0.000,
        "frequency": 0.000,
        "managementFee": 0.000,
        "dataCost": 0.000,
        "techCost": 0.000,
        "adServerCost": 0.000
      }
    ]
}' | http PUT 'https://www.gmp365.io/api/v1/campaigns/digital/digital-sites' \
    'Content-Type:application/json' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

6.5.8. Remove Digital sites from existing Campaign

Sample request
DELETE /api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites HTTP/1.1
Content-Type: application/json
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 274

{
  "statusId" : "FUL_c8f88ce2be524d1b9571c373",
  "created" : "2022-11-21T16:31:05.597Z",
  "percentDone" : 100.0,
  "state" : "COMPLETED",
  "errors" : [ ],
  "campaignId" : "578f5d2be4b0f4e880a76f02",
  "planIds" : [ "664013302a7a42eab241ca8b" ],
  "campaignIds" : null
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites' -i -X DELETE \
    -H 'Content-Type: application/json' \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'
HTTPie request
$ http DELETE 'https://www.gmp365.io/api/v1/campaigns/578f5d2be4b0f4e880a76f02/digital/digital-sites' \
    'Content-Type:application/json' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851'

6.5.9. Code Tables

Digital Targeting Classification

List available/accepted Digital Targeting Classification values.

Sample request
GET /api/v1/digital/metadata/targeting HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 234

[ {
  "value" : "BEHAVIORAL",
  "label" : "BEHAVIORAL"
}, {
  "value" : "DEMOGRAPHIC",
  "label" : "DEMOGRAPHIC"
}, {
  "value" : "GEOGRAPHICAL",
  "label" : "GEOGRAPHICAL"
}, {
  "value" : "RETARGETING",
  "label" : "RETARGETING"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/digital/metadata/targeting' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/digital/metadata/targeting' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Digital Media Type

List available/accepted Digital Media Type values.

Sample request
GET /api/v1/digital/metadata/media-type HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 344

[ {
  "value" : "DISPLAY",
  "label" : "DISPLAY"
}, {
  "value" : "VIDEO",
  "label" : "VIDEO"
}, {
  "value" : "SOCIAL",
  "label" : "SOCIAL"
}, {
  "value" : "AUDIO",
  "label" : "AUDIO"
}, {
  "value" : "SEARCH",
  "label" : "SEARCH"
}, {
  "value" : "NATIVE",
  "label" : "NATIVE"
}, {
  "value" : "E_COMMERCE",
  "label" : "E_COMMERCE"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/digital/metadata/media-type' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/digital/metadata/media-type' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Digital Platform

List available/accepted Digital Platform values.

Sample request
GET /api/v1/digital/metadata/platform HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 218

[ {
  "value" : "DESKTOP",
  "label" : "DESKTOP"
}, {
  "value" : "MOBILE",
  "label" : "MOBILE"
}, {
  "value" : "CONNECTED_TV",
  "label" : "CONNECTED_TV"
}, {
  "value" : "MULTISCREEN",
  "label" : "MULTISCREEN"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/digital/metadata/platform' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/digital/metadata/platform' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Digital Format Type

List available/accepted Digital Format Types.

Sample request
GET /api/v1/digital/metadata/format-type HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2526

[ {
  "value" : "AUDIO",
  "label" : "AUDIO"
}, {
  "value" : "CAROUSEL",
  "label" : "CAROUSEL"
}, {
  "value" : "CLICK_TO_PLAY_VIDEO",
  "label" : "CLICK_TO_PLAY_VIDEO"
}, {
  "value" : "DISCOVERY",
  "label" : "DISCOVERY"
}, {
  "value" : "EXPANDABLE",
  "label" : "EXPANDABLE"
}, {
  "value" : "IMAGE",
  "label" : "IMAGE"
}, {
  "value" : "DISPLAY_TAKEOVER",
  "label" : "DISPLAY_TAKEOVER"
}, {
  "value" : "INTERSCROLL",
  "label" : "INTERSCROLL"
}, {
  "value" : "INTERSTITIAL",
  "label" : "INTERSTITIAL"
}, {
  "value" : "MOBILE_RICH_MEDIA",
  "label" : "MOBILE_RICH_MEDIA"
}, {
  "value" : "MOBILE_STANDARD_MEDIA",
  "label" : "MOBILE_STANDARD_MEDIA"
}, {
  "value" : "OVERLAY",
  "label" : "OVERLAY"
}, {
  "value" : "PAGE_POST_VIDEO",
  "label" : "PAGE_POST_VIDEO"
}, {
  "value" : "PRE_ROLL",
  "label" : "PRE_ROLL"
}, {
  "value" : "PROMOTED_VIDEO",
  "label" : "PROMOTED_VIDEO"
}, {
  "value" : "RICH_MEDIA",
  "label" : "RICH_MEDIA"
}, {
  "value" : "SINGLE_IMAGE",
  "label" : "SINGLE_IMAGE"
}, {
  "value" : "SOCIAL_IMAGE",
  "label" : "SOCIAL_IMAGE"
}, {
  "value" : "SOCIAL_VIDEO",
  "label" : "SOCIAL_VIDEO"
}, {
  "value" : "STANDARD_MEDIA",
  "label" : "STANDARD_MEDIA"
}, {
  "value" : "SCROLLOVER",
  "label" : "SCROLLOVER"
}, {
  "value" : "TRUEVIEW",
  "label" : "TRUEVIEW"
}, {
  "value" : "MASTHEAD",
  "label" : "MASTHEAD"
}, {
  "value" : "VIDEO_IN_BANNER",
  "label" : "VIDEO_IN_BANNER"
}, {
  "value" : "VIDEO_IN_STREAM",
  "label" : "VIDEO_IN_STREAM"
}, {
  "value" : "VIDEO_OUT_STREAM",
  "label" : "VIDEO_OUT_STREAM"
}, {
  "value" : "WALLPAPER",
  "label" : "WALLPAPER"
}, {
  "value" : "WALLPAPER_RICH_MEDIA",
  "label" : "WALLPAPER_RICH_MEDIA"
}, {
  "value" : "NATIVE_AD",
  "label" : "NATIVE_AD"
}, {
  "value" : "NATIVE_VIDEO",
  "label" : "NATIVE_VIDEO"
}, {
  "value" : "BLOG",
  "label" : "BLOG"
}, {
  "value" : "SEARCH",
  "label" : "SEARCH"
}, {
  "value" : "STORIES",
  "label" : "STORIES"
}, {
  "value" : "BUMPER_AD",
  "label" : "BUMPER_AD"
}, {
  "value" : "VIDEO_TAKEOVER",
  "label" : "VIDEO_TAKEOVER"
}, {
  "value" : "CANVAS",
  "label" : "CANVAS"
}, {
  "value" : "TEXT",
  "label" : "TEXT"
}, {
  "value" : "COLLECTION",
  "label" : "COLLECTION"
}, {
  "value" : "MESSENGER",
  "label" : "MESSENGER"
}, {
  "value" : "E_COMMERCE_SEARCH",
  "label" : "E_COMMERCE_SEARCH"
}, {
  "value" : "E_COMMERCE_STANDARD",
  "label" : "E_COMMERCE_STANDARD"
}, {
  "value" : "STANDARD_ADS",
  "label" : "STANDARD_ADS"
}, {
  "value" : "SHOPPING_ADS",
  "label" : "SHOPPING_ADS"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/digital/metadata/format-type' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/digital/metadata/format-type' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Digital Buy Type

List available/accepted Digital Buy Type values.

Sample request
GET /api/v1/digital/metadata/digital-buy-type HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 460

[ {
  "value" : "DIRECT_BUY",
  "label" : "DIRECT_BUY"
}, {
  "value" : "PROGRAMMATIC",
  "label" : "PROGRAMMATIC"
}, {
  "value" : "PROGRAMMATIC_REMARKETING",
  "label" : "PROGRAMMATIC_REMARKETING"
}, {
  "value" : "SPECIFICS",
  "label" : "SPECIFICS"
}, {
  "value" : "SELF_SERVICE",
  "label" : "SELF_SERVICE"
}, {
  "value" : "PROGRAMMATIC_OPEN",
  "label" : "PROGRAMMATIC_OPEN"
}, {
  "value" : "PROGRAMMATIC_CLOSED",
  "label" : "PROGRAMMATIC_CLOSED"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/digital/metadata/digital-buy-type' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/digital/metadata/digital-buy-type' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Digital Cost Type

List available/accepted Digital Cost Type values.

Sample request
GET /api/v1/digital/metadata/digital-cost-type HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 648

[ {
  "value" : "CPM",
  "label" : "CPM"
}, {
  "value" : "VCPM",
  "label" : "VCPM"
}, {
  "value" : "QCPM",
  "label" : "QCPM"
}, {
  "value" : "CPC",
  "label" : "CPC"
}, {
  "value" : "CPV",
  "label" : "CPV"
}, {
  "value" : "CPVV",
  "label" : "CPVV"
}, {
  "value" : "CPL",
  "label" : "CPL"
}, {
  "value" : "CPA",
  "label" : "CPA"
}, {
  "value" : "CPE",
  "label" : "CPE"
}, {
  "value" : "CPF",
  "label" : "CPF"
}, {
  "value" : "CPQV",
  "label" : "CPQV"
}, {
  "value" : "FIXED",
  "label" : "FIXED"
}, {
  "value" : "CPVI",
  "label" : "CPVI"
}, {
  "value" : "CPEV",
  "label" : "CPEV"
}, {
  "value" : "RPM",
  "label" : "RPM"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/digital/metadata/digital-cost-type' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/digital/metadata/digital-cost-type' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.6. Cinema

6.6.1. Cinema Buy Type explained

The value of field buyType is used to determine which value of the fields nbrSpots, nbrTickets and nbrSeats to use for calculations. Note that all fields can have values.

6.6.2. Cinema Plan model

All fields represented in a Cinema plan object

Path Type Optional Description

id

String

false

GMP ID for the Cinema Plan

campaignId

String

false

GMP ID for Campaign

campaignName

String

false

Campaign name

countryCode

String

false

Country code according to ISO 3166-1

regions

Array

true

List of regions

brand

String

false

Brand name

planStatus

String

false

Plan status

startDate

DateString

false

Cinema Plan start date

endDate

DateString

false

Cinema Plan end date

fiscalYear

Number

false

Fiscal year

currency

String

false

Currency according to ISO 4217

poNumber

String

true

Purchase Order number

agencyRemuneration

Object

false

Agency fees, can be only null values

agencyRemuneration.percentOnNet

Number

false

Percent on Net

agencyRemuneration.percentOnNetNet

Number

false

Percent on NetNet

agencyRemuneration.fixedFee

Number

false

Fixed sum fee

plannedSummary

Object

true

Summary of planned values

plannedSummary.rateCard

Number

false

Total planned rate card in Cinema plan

plannedSummary.net

Number

false

Total planned Media net in Cinema plan

plannedSummary.netNet

Number

false

Total planned Media net net in Cinema plan

plannedSummary.discount

Number

false

Total planned discount

plannedSummary.agencyCommission

Number

false

Total planned agency commission (percent)

plannedSummary.nbrSpots

Number

false

Total number of planned spots in given equivalence

plannedSummary.nbrTickets

Number

false

Total number of planned tickets in given equivalence

plannedSummary.nbrSeats

Number

false

Total number of planned seats in given equivalence

actualSummary

Object

true

Summary of actual values

actualSummary.rateCard

Number

false

Total actual rate card in Cinema plan

actualSummary.net

Number

false

Total actual Media net in Cinema plan

actualSummary.netNet

Number

false

Total actual Media net net in Cinema plan

actualSummary.discount

Number

false

Total discount

actualSummary.agencyCommission

Number

false

Total agency commission (percent)

actualSummary.nbrSpots

Number

false

Total number of spots in given equivalence

actualSummary.nbrTickets

Number

false

Total number of tickets in given equivalence

actualSummary.nbrSeats

Number

false

Total number of seats in given equivalence

planningDetails

Array

true

List of planned Cinema details

planningDetails.[].supplier

String

false

Planned supplier

planningDetails.[].packageName

String

false

Planned package name

planningDetails.[].coverage

String

false

Planned coverage as found in Cinema Coverage list

planningDetails.[].region

String

true

Planned region or city name if coverage is regional

planningDetails.[].movieOriginType

String

false

Planned movie origin as found in Movie Origin list

planningDetails.[].movieReleaseType

String

false

Planned release type as found in Movie Release Type list

planningDetails.[].majorReleaseTitle

String

true

Planned release title if applicable

planningDetails.[].buyType

String

false

Planned buy type as found in Cinema Buy Type list

planningDetails.[].nbrSpots

Number

false

Planned number of spots

planningDetails.[].nbrTickets

Number

false

Planned number of tickets

planningDetails.[].nbrSeats

Number

false

Planned number of seats

planningDetails.[].premiumPlacementShare

Number

true

Planned share of premium placement in percent

planningDetails.[].startDate

String

false

Planned start date

planningDetails.[].endDate

String

false

Planned end date

planningDetails.[].rateCard

Number

false

Planned rate card

planningDetails.[].net

Number

false

Planned media net

planningDetails.[].netNet

Number

false

Planned media net net

planningDetails.[].discount

Number

false

Planned discount

planningDetails.[].agencyCommission

Number

false

Planned agency commission (percent)

planningDetails.[].creativeId

String

false

Planned Creative ID

planningDetails.[].periods

Array

true

Weeks for media plans. Only available for License Premium Periods

planningDetails.[].periods.[].year

Number

false

Year for the week

planningDetails.[].periods.[].month

Number

false

Month for the week

planningDetails.[].periods.[].week

Number

false

Week number for the week

planningDetails.[].periods.[].startDate

DateString

false

Start Date for the week

planningDetails.[].periods.[].endDate

DateString

false

End Date for the week

planningDetails.[].periods.[].plannedSummary

Object

true

Planned Values for week

planningDetails.[].periods.[].plannedSummary.rateCard

Number

false

Planned rate card for week

planningDetails.[].periods.[].plannedSummary.net

Number

false

Planned Media net for week

planningDetails.[].periods.[].plannedSummary.netNet

Number

false

Planned Media net net for week

planningDetails.[].periods.[].plannedSummary.discount

Number

false

Planned Discount for week

planningDetails.[].periods.[].plannedSummary.agencyCommission

Number

false

Planned agency commission (percent) for week

planningDetails.[].periods.[].plannedSummary.nbrSpots

Number

false

Number of planned spots in given equivalence for week

planningDetails.[].periods.[].plannedSummary.nbrTickets

Number

false

Number of planned tickets in given equivalence for week

planningDetails.[].periods.[].plannedSummary.nbrSeats

Number

false

Number of planned seats in given equivalence for week

planningDetails.[].periods.[].actualSummary

Object

true

Actual Values for week

planningDetails.[].periods.[].actualSummary.rateCard

Number

false

Actual rate card for week

planningDetails.[].periods.[].actualSummary.net

Number

false

Actual Media net for week

planningDetails.[].periods.[].actualSummary.netNet

Number

false

Actual Media net net for week

planningDetails.[].periods.[].actualSummary.discount

Number

false

Actual discount for week

planningDetails.[].periods.[].actualSummary.agencyCommission

Number

false

Actual agency commission (percent) for week

planningDetails.[].periods.[].actualSummary.nbrSpots

Number

false

Number of actual spots in given equivalence for week

planningDetails.[].periods.[].actualSummary.nbrTickets

Number

false

Number of actual tickets in given equivalence for week

planningDetails.[].periods.[].actualSummary.nbrSeats

Number

false

Number of actual seats in given equivalence for week

actualDetails

Array

true

List of actual Cinema details

actualDetails.[].supplier

String

false

Supplier name

actualDetails.[].packageName

String

false

Package name

actualDetails.[].coverage

String

false

Coverage as found in Cinema Coverage list

actualDetails.[].region

String

true

Region or city name if coverage is regional

actualDetails.[].movieOriginType

String

false

Movie origin as found in Movie Origin list

actualDetails.[].movieReleaseType

String

false

Release type as found in Movie Release Type list

actualDetails.[].majorReleaseTitle

String

true

Release title if applicable

actualDetails.[].buyType

String

false

Buy type as found in Cinema Buy Type list

actualDetails.[].nbrSpots

Number

false

Number of spots

actualDetails.[].nbrTickets

Number

false

Number of tickets

actualDetails.[].nbrSeats

Number

false

Number of seats

actualDetails.[].premiumPlacementShare

Number

true

Share of premium placement in percent

actualDetails.[].startDate

String

false

Start date

actualDetails.[].endDate

String

false

End date

actualDetails.[].rateCard

Number

false

Actual rate card

actualDetails.[].net

Number

false

Actual media net

actualDetails.[].netNet

Number

false

Actual media net net

actualDetails.[].discount

Number

false

Actual discount

actualDetails.[].agencyCommission

Number

false

Actual agency commission (percent)

actualDetails.[].creativeId

String

false

Creative ID

actualDetails.[].periods

Array

false

Weeks for media plans. Only available for License Premium Periods

actualDetails.[].periods.[].year

Number

false

Year for the week

actualDetails.[].periods.[].month

Number

false

Month for the week

actualDetails.[].periods.[].week

Number

false

Week number for the week

actualDetails.[].periods.[].startDate

DateString

false

Start Date for the week

actualDetails.[].periods.[].endDate

DateString

false

End Date for the week

actualDetails.[].periods.[].plannedSummary

Object

true

Planned Values for week

actualDetails.[].periods.[].plannedSummary.rateCard

Number

false

Planned rate card for week

actualDetails.[].periods.[].plannedSummary.net

Number

false

Planned Media net for week

actualDetails.[].periods.[].plannedSummary.netNet

Number

false

Planned Media net net for week

actualDetails.[].periods.[].plannedSummary.discount

Number

false

Planned Discount for week

actualDetails.[].periods.[].plannedSummary.agencyCommission

Number

false

Planned agency commission (percent) for week

actualDetails.[].periods.[].plannedSummary.nbrSpots

Number

false

Number of planned spots in given equivalence for week

actualDetails.[].periods.[].plannedSummary.nbrTickets

Number

false

Number of planned tickets in given equivalence for week

actualDetails.[].periods.[].plannedSummary.nbrSeats

Number

false

Number of planned seats in given equivalence for week

actualDetails.[].periods.[].actualSummary

Object

true

Actual Values for week

actualDetails.[].periods.[].actualSummary.rateCard

Number

false

Actual rate card for week

actualDetails.[].periods.[].actualSummary.net

Number

false

Actual Media net for week

actualDetails.[].periods.[].actualSummary.netNet

Number

false

Actual Media net net for week

actualDetails.[].periods.[].actualSummary.discount

Number

false

Actual discount for week

actualDetails.[].periods.[].actualSummary.agencyCommission

Number

false

Actual agency commission (percent) for week

actualDetails.[].periods.[].actualSummary.nbrSpots

Number

false

Number of actual spots in given equivalence for week

actualDetails.[].periods.[].actualSummary.nbrTickets

Number

false

Number of actual tickets in given equivalence for week

actualDetails.[].periods.[].actualSummary.nbrSeats

Number

false

Number of actual seats in given equivalence for week

6.6.3. Get Cinema Plans for Campaign

Get all Cinema plans for a specific Campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/cinema/plans HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 3463

[ {
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "PO-NBR-123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 0.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 4500.0,
    "netNet" : 4050.0,
    "rateCard" : 5000.0,
    "nbrSpots" : 100.0,
    "nbrTickets" : 0.0,
    "nbrSeats" : 0.0,
    "discount" : 10.0,
    "agencyCommission" : 10.0
  },
  "actualSummary" : {
    "net" : 4500.0,
    "netNet" : 4050.0,
    "rateCard" : 5000.0,
    "nbrSpots" : 100.0,
    "nbrTickets" : 0.0,
    "nbrSeats" : 0.0,
    "discount" : 10.0,
    "agencyCommission" : 10.0
  },
  "planningDetails" : [ {
    "supplier" : "Supplier name",
    "packageName" : "Package name",
    "coverage" : "REGIONAL",
    "region" : "North Region",
    "movieOriginType" : "FOREIGN",
    "movieReleaseType" : "MAJOR",
    "majorReleaseTitle" : "Star Wars",
    "buyType" : "SPOTS",
    "nbrSpots" : 100,
    "nbrTickets" : 0,
    "nbrSeats" : 0,
    "startDate" : "2019-02-25",
    "endDate" : "2019-03-10",
    "creativeId" : "Commercial film",
    "rateCard" : 5000,
    "net" : 4500,
    "netNet" : 4050,
    "discount" : 10,
    "agencyCommission" : 10,
    "premiumPlacementShare" : 78,
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 4500.0,
        "netNet" : 4050.0,
        "rateCard" : 5000.0,
        "nbrSpots" : 100.0,
        "nbrTickets" : 0.0,
        "nbrSeats" : 0.0,
        "discount" : 10.0,
        "agencyCommission" : 10.0
      },
      "actualSummary" : {
        "net" : 4500.0,
        "netNet" : 4050.0,
        "rateCard" : 5000.0,
        "nbrSpots" : 100.0,
        "nbrTickets" : 0.0,
        "nbrSeats" : 0.0,
        "discount" : 10.0,
        "agencyCommission" : 10.0
      }
    } ]
  } ],
  "actualDetails" : [ {
    "supplier" : "Supplier name",
    "packageName" : "Package name",
    "coverage" : "REGIONAL",
    "region" : "North Region",
    "movieOriginType" : "FOREIGN",
    "movieReleaseType" : "MAJOR",
    "majorReleaseTitle" : "Star Wars",
    "buyType" : "SPOTS",
    "nbrSpots" : 100,
    "nbrTickets" : 0,
    "nbrSeats" : 0,
    "startDate" : "2019-02-25",
    "endDate" : "2019-03-10",
    "creativeId" : "Commercial film",
    "rateCard" : 5000,
    "net" : 4500,
    "netNet" : 4050,
    "discount" : 10,
    "agencyCommission" : 10,
    "premiumPlacementShare" : 78,
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 4500.0,
        "netNet" : 4050.0,
        "rateCard" : 5000.0,
        "nbrSpots" : 100.0,
        "nbrTickets" : 0.0,
        "nbrSeats" : 0.0,
        "discount" : 10.0,
        "agencyCommission" : 10.0
      },
      "actualSummary" : {
        "net" : 4500.0,
        "netNet" : 4050.0,
        "rateCard" : 5000.0,
        "nbrSpots" : 100.0,
        "nbrTickets" : 0.0,
        "nbrSeats" : 0.0,
        "discount" : 10.0,
        "agencyCommission" : 10.0
      }
    } ]
  } ]
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/cinema/plans' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/cinema/plans' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.6.4. Get Cinema Plan by ID

Get a specific Cinema plan using GMP Campaign ID and Cinema Plan ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/cinema/plans/5c41f5922944030003c58f7e HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 3459

{
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "PO-NBR-123456",
  "agencyRemuneration" : {
    "percentOnNet" : 1.0,
    "percentOnNetNet" : 0.0,
    "fixedFee" : 100.0
  },
  "plannedSummary" : {
    "net" : 4500.0,
    "netNet" : 4050.0,
    "rateCard" : 5000.0,
    "nbrSpots" : 100.0,
    "nbrTickets" : 0.0,
    "nbrSeats" : 0.0,
    "discount" : 10.0,
    "agencyCommission" : 10.0
  },
  "actualSummary" : {
    "net" : 4500.0,
    "netNet" : 4050.0,
    "rateCard" : 5000.0,
    "nbrSpots" : 100.0,
    "nbrTickets" : 0.0,
    "nbrSeats" : 0.0,
    "discount" : 10.0,
    "agencyCommission" : 10.0
  },
  "planningDetails" : [ {
    "supplier" : "Supplier name",
    "packageName" : "Package name",
    "coverage" : "REGIONAL",
    "region" : "North Region",
    "movieOriginType" : "FOREIGN",
    "movieReleaseType" : "MAJOR",
    "majorReleaseTitle" : "Star Wars",
    "buyType" : "SPOTS",
    "nbrSpots" : 100,
    "nbrTickets" : 0,
    "nbrSeats" : 0,
    "startDate" : "2019-02-25",
    "endDate" : "2019-03-10",
    "creativeId" : "Commercial film",
    "rateCard" : 5000,
    "net" : 4500,
    "netNet" : 4050,
    "discount" : 10,
    "agencyCommission" : 10,
    "premiumPlacementShare" : 78,
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 4500.0,
        "netNet" : 4050.0,
        "rateCard" : 5000.0,
        "nbrSpots" : 100.0,
        "nbrTickets" : 0.0,
        "nbrSeats" : 0.0,
        "discount" : 10.0,
        "agencyCommission" : 10.0
      },
      "actualSummary" : {
        "net" : 4500.0,
        "netNet" : 4050.0,
        "rateCard" : 5000.0,
        "nbrSpots" : 100.0,
        "nbrTickets" : 0.0,
        "nbrSeats" : 0.0,
        "discount" : 10.0,
        "agencyCommission" : 10.0
      }
    } ]
  } ],
  "actualDetails" : [ {
    "supplier" : "Supplier name",
    "packageName" : "Package name",
    "coverage" : "REGIONAL",
    "region" : "North Region",
    "movieOriginType" : "FOREIGN",
    "movieReleaseType" : "MAJOR",
    "majorReleaseTitle" : "Star Wars",
    "buyType" : "SPOTS",
    "nbrSpots" : 100,
    "nbrTickets" : 0,
    "nbrSeats" : 0,
    "startDate" : "2019-02-25",
    "endDate" : "2019-03-10",
    "creativeId" : "Commercial film",
    "rateCard" : 5000,
    "net" : 4500,
    "netNet" : 4050,
    "discount" : 10,
    "agencyCommission" : 10,
    "premiumPlacementShare" : 78,
    "periods" : [ {
      "year" : 2019,
      "month" : 3,
      "week" : 11,
      "startDate" : "2019-03-01",
      "endDate" : "2019-03-03",
      "plannedSummary" : {
        "net" : 4500.0,
        "netNet" : 4050.0,
        "rateCard" : 5000.0,
        "nbrSpots" : 100.0,
        "nbrTickets" : 0.0,
        "nbrSeats" : 0.0,
        "discount" : 10.0,
        "agencyCommission" : 10.0
      },
      "actualSummary" : {
        "net" : 4500.0,
        "netNet" : 4050.0,
        "rateCard" : 5000.0,
        "nbrSpots" : 100.0,
        "nbrTickets" : 0.0,
        "nbrSeats" : 0.0,
        "discount" : 10.0,
        "agencyCommission" : 10.0
      }
    } ]
  } ]
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/cinema/plans/5c41f5922944030003c58f7e' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/cinema/plans/5c41f5922944030003c58f7e' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.6.5. Code Tables

Cinema Coverage

List available/accepted Cinema Coverage values.

Sample request
GET /api/v1/cinema/metadata/coverage HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 106

[ {
  "value" : "NATIONAL",
  "label" : "NATIONAL"
}, {
  "value" : "REGIONAL",
  "label" : "REGIONAL"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/cinema/metadata/coverage' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/cinema/metadata/coverage' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Movie Origin

List available/accepted Movie Origin values.

Sample request
GET /api/v1/cinema/metadata/origin HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 146

[ {
  "value" : "DOMESTIC",
  "label" : "DOMESTIC"
}, {
  "value" : "FOREIGN",
  "label" : "FOREIGN"
}, {
  "value" : "MIX",
  "label" : "MIX"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/cinema/metadata/origin' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/cinema/metadata/origin' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Movie Release Type

List available/accepted Movie Release Type values.

Sample request
GET /api/v1/cinema/metadata/release-type HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 98

[ {
  "value" : "MAJOR",
  "label" : "MAJOR"
}, {
  "value" : "REGULAR",
  "label" : "REGULAR"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/cinema/metadata/release-type' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/cinema/metadata/release-type' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'
Cinema Buy Type

List available/accepted Cinema Release Type values.

Sample request
GET /api/v1/cinema/metadata/buy-type HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 144

[ {
  "value" : "SPOTS",
  "label" : "SPOTS"
}, {
  "value" : "TICKETS",
  "label" : "TICKETS"
}, {
  "value" : "SEATS",
  "label" : "SEATS"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/cinema/metadata/buy-type' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/cinema/metadata/buy-type' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.7. Other Media

6.7.1. Other Media model

All fields represented for an Other Media object

Path Type Optional Description

id

String

false

GMP ID for the Other Media Plan

campaignId

String

false

GMP ID for Campaign

campaignName

String

false

Campaign name

countryCode

String

false

Country code according to ISO 3166-1

regions

Array

true

List of regions

brand

String

false

Brand name

planStatus

String

false

Plan status

startDate

DateString

false

Other Media Plan start date

endDate

DateString

false

Other Media Plan end date

fiscalYear

Number

false

Fiscal year

currency

String

false

Currency according to ISO 4217

poNumber

String

true

PO Number

mediaType

String

false

Media Type for Other Media plan

plannedSummary

Object

true

Summary of planned values

plannedSummary.net

Number

false

Total planned Media net in Other Media plan

plannedSummary.netNet

Number

false

Total planned Media net net in Other Media plan

actualSummary

Object

true

Summary of actual values

actualSummary.net

Number

false

Total actual Media net in Other Media plan

actualSummary.netNet

Number

false

Total actual Media net net in Other Media plan

periods

Array

true

Weeks for media plans. Only available for License Premium Periods

periods.[].year

Number

false

Year for the week

periods.[].month

Number

false

Month for the week

periods.[].week

Number

false

Week number for the week

periods.[].startDate

DateString

false

Start Date for the week

periods.[].endDate

DateString

false

End Date for the week

periods.[].plannedSummary

Object

true

Summary of planned values for week

periods.[].plannedSummary.net

Number

false

Planned Media net for week

periods.[].plannedSummary.netNet

Number

false

Planned Media net net for week

periods.[].actualSummary

Object

true

Summary of actual values for week

periods.[].actualSummary.net

Number

false

Actual Media net for week

periods.[].actualSummary.netNet

Number

false

Actual Media net net for week

6.7.2. Get Other Media Plans for Campaign

Get all Other Media plans for a specific Campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-media/plans HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 825

[ {
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0
  },
  "periods" : [ {
    "year" : 2019,
    "month" : 3,
    "week" : 11,
    "startDate" : "2019-03-01",
    "endDate" : "2019-03-03",
    "plannedSummary" : {
      "net" : 1800.0,
      "netNet" : 1800.0
    },
    "actualSummary" : {
      "net" : 1800.0,
      "netNet" : 1800.0
    }
  } ],
  "mediaType" : "SPONSORSHIP"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-media/plans' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-media/plans' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.7.3. Get Other Media Plan by ID

Get a specific Other Media plan using GMP Campaign ID and Plan ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-media/plans/5c41f5922944030003c58f7e HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 821

{
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0
  },
  "periods" : [ {
    "year" : 2019,
    "month" : 3,
    "week" : 11,
    "startDate" : "2019-03-01",
    "endDate" : "2019-03-03",
    "plannedSummary" : {
      "net" : 1800.0,
      "netNet" : 1800.0
    },
    "actualSummary" : {
      "net" : 1800.0,
      "netNet" : 1800.0
    }
  } ],
  "mediaType" : "SPONSORSHIP"
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-media/plans/5c41f5922944030003c58f7e' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-media/plans/5c41f5922944030003c58f7e' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.7.4. Code Tables

Other Media Types

List available/accepted Other Media Type values. Please note that this list differs depending on advertiser setup.

Sample request
GET /api/v1/other-media/metadata/media-types HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2192

[ {
  "value" : "ONLINE_DIRECT_BUY",
  "label" : "ONLINE_DIRECT_BUY"
}, {
  "value" : "ONLINE_PROGRAMMATIC",
  "label" : "ONLINE_PROGRAMMATIC"
}, {
  "value" : "ONLINE_SOCIAL",
  "label" : "ONLINE_SOCIAL"
}, {
  "value" : "ONLINE_VIDEO",
  "label" : "ONLINE_VIDEO"
}, {
  "value" : "ONLINE_DISPLAY",
  "label" : "ONLINE_DISPLAY"
}, {
  "value" : "ONLINE_SEARCH",
  "label" : "ONLINE_SEARCH"
}, {
  "value" : "SEARCH_ENGINE_OPTIMIZATION",
  "label" : "SEARCH_ENGINE_OPTIMIZATION"
}, {
  "value" : "VIDEO_ON_DEMAND",
  "label" : "VIDEO_ON_DEMAND"
}, {
  "value" : "MOBILE",
  "label" : "MOBILE"
}, {
  "value" : "INSERTS",
  "label" : "INSERTS"
}, {
  "value" : "ONLINE",
  "label" : "ONLINE"
}, {
  "value" : "CINEMA_SIMPLE",
  "label" : "CINEMA_SIMPLE"
}, {
  "value" : "MEDIA_PURCHASE_BY_CLIENT",
  "label" : "MEDIA_PURCHASE_BY_CLIENT"
}, {
  "value" : "SPONSORSHIP",
  "label" : "SPONSORSHIP"
}, {
  "value" : "PARTNERSHIP",
  "label" : "PARTNERSHIP"
}, {
  "value" : "PR",
  "label" : "PR"
}, {
  "value" : "DIRECT",
  "label" : "DIRECT"
}, {
  "value" : "DIRECT_MAIL",
  "label" : "DIRECT_MAIL"
}, {
  "value" : "OOH_TV",
  "label" : "OOH_TV"
}, {
  "value" : "CONTENT_SYNDICATION",
  "label" : "CONTENT_SYNDICATION"
}, {
  "value" : "DIGITAL_DIRECT_PUBLISHERS",
  "label" : "DIGITAL_DIRECT_PUBLISHERS"
}, {
  "value" : "COOPERATION",
  "label" : "COOPERATION"
}, {
  "value" : "INFLUENCERS",
  "label" : "INFLUENCERS"
}, {
  "value" : "PENALTY_MITIGATION",
  "label" : "PENALTY_MITIGATION"
}, {
  "value" : "E_COMMERCE",
  "label" : "E_COMMERCE"
}, {
  "value" : "PLACEHOLDER_BUDGET",
  "label" : "PLACEHOLDER_BUDGET"
}, {
  "value" : "DIGITAL_OOH_PROGRAMMATIC_CPM",
  "label" : "DIGITAL_OOH_PROGRAMMATIC_CPM"
}, {
  "value" : "ADDED_VALUE",
  "label" : "ADDED_VALUE"
}, {
  "value" : "ADDED_VALUE_TV",
  "label" : "ADDED_VALUE_TV"
}, {
  "value" : "ADDED_VALUE_RADIO",
  "label" : "ADDED_VALUE_RADIO"
}, {
  "value" : "ADDED_VALUE_OOH",
  "label" : "ADDED_VALUE_OOH"
}, {
  "value" : "ADDED_VALUE_PRINT",
  "label" : "ADDED_VALUE_PRINT"
}, {
  "value" : "ADDED_VALUE_DIGITAL",
  "label" : "ADDED_VALUE_DIGITAL"
}, {
  "value" : "ADDED_VALUE_CINEMA",
  "label" : "ADDED_VALUE_CINEMA"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/other-media/metadata/media-types' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/other-media/metadata/media-types' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.8. Other Spend

6.8.1. Other Spend model

All fields represented for an Other Spend object

Path Type Optional Description

id

String

false

GMP ID for the Other Spend Plan

campaignId

String

false

GMP ID for Campaign

campaignName

String

false

Campaign name

countryCode

String

false

Country code according to ISO 3166-1

regions

Array

true

List of regions

brand

String

false

Brand name

planStatus

String

false

Plan status

startDate

DateString

false

Other Spend Plan start date

endDate

DateString

false

Other Spend Plan end date

fiscalYear

Number

false

Fiscal year

currency

String

false

Currency according to ISO 4217

poNumber

String

true

PO Number

spendType

String

false

Spend Type for Other Spend plan

plannedSummary

Object

true

Summary of planned values

plannedSummary.net

Number

false

Total planned Spend net in Other Spend plan

plannedSummary.netNet

Number

false

Total planned Spend net net in Other Spend plan

actualSummary

Object

true

Summary of actual values

actualSummary.net

Number

false

Total actual Spend net in Other Spend plan

actualSummary.netNet

Number

false

Total actual Spend net net in Other Spend plan

periods

Array

true

Weeks for media plans. Only available for License Premium Periods

periods.[].year

Number

false

Year for the week

periods.[].month

Number

false

Month for the week

periods.[].week

Number

false

Week number for the week

periods.[].startDate

DateString

false

Start Date for the week

periods.[].endDate

DateString

false

End Date for the week

periods.[].plannedSummary

Object

true

Summary of planned values for week

periods.[].plannedSummary.net

Number

false

Planned Media net for week

periods.[].plannedSummary.netNet

Number

false

Planned Media net net for week

periods.[].actualSummary

Object

true

Summary of actual values for week

periods.[].actualSummary.net

Number

false

Actual Media net for week

periods.[].actualSummary.netNet

Number

false

Actual Media net net for week

6.8.2. Get Other Spend Plans for Campaign

Get all Other Spend plans for a specific Campaign using GMP Campaign ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-spend/plans HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 816

[ {
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0
  },
  "periods" : [ {
    "year" : 2019,
    "month" : 3,
    "week" : 11,
    "startDate" : "2019-03-01",
    "endDate" : "2019-03-03",
    "plannedSummary" : {
      "net" : 1800.0,
      "netNet" : 1800.0
    },
    "actualSummary" : {
      "net" : 1800.0,
      "netNet" : 1800.0
    }
  } ],
  "spendType" : "PR"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-spend/plans' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-spend/plans' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.8.3. Get Other Spend Plan by ID

Get a specific Other Spend plan using GMP Campaign ID and Plan ID

Sample request
GET /api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-spend/plans/5c41f5922944030003c58f7e HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 812

{
  "id" : "5c41f5922944030003c58f7e",
  "campaignId" : "5bade5a3fb512a0003ec42ea",
  "campaignName" : "Campaign Name",
  "countryCode" : "SE",
  "regions" : [ "National" ],
  "brand" : "Brand 1",
  "planStatus" : "In Followup",
  "startDate" : "2019-02-25",
  "endDate" : "2019-03-10",
  "fiscalYear" : 2019,
  "currency" : "SEK",
  "poNumber" : "123456",
  "plannedSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0
  },
  "actualSummary" : {
    "net" : 1800.0,
    "netNet" : 1800.0
  },
  "periods" : [ {
    "year" : 2019,
    "month" : 3,
    "week" : 11,
    "startDate" : "2019-03-01",
    "endDate" : "2019-03-03",
    "plannedSummary" : {
      "net" : 1800.0,
      "netNet" : 1800.0
    },
    "actualSummary" : {
      "net" : 1800.0,
      "netNet" : 1800.0
    }
  } ],
  "spendType" : "PR"
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-spend/plans/5c41f5922944030003c58f7e' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/campaigns/5bade5a3fb512a0003ec42ea/other-spend/plans/5c41f5922944030003c58f7e' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

6.8.4. Code Tables

Other Spend Types

List available/accepted Other Spend Type values. Please note that this list differs depending on advertiser setup.

Sample request
GET /api/v1/other-spend/metadata/media-types HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 584

[ {
  "value" : "RESEARCH",
  "label" : "RESEARCH"
}, {
  "value" : "TECHNICAL_COST",
  "label" : "TECHNICAL_COST"
}, {
  "value" : "INSTALLATION_COST",
  "label" : "INSTALLATION_COST"
}, {
  "value" : "PRODUCTION_COST",
  "label" : "PRODUCTION_COST"
}, {
  "value" : "CASH_EXTRACTION",
  "label" : "CASH_EXTRACTION"
}, {
  "value" : "RECALL_CAMPAIGN",
  "label" : "RECALL_CAMPAIGN"
}, {
  "value" : "OTHER_SPEND",
  "label" : "OTHER_SPEND"
}, {
  "value" : "CUSTOM_INTEGRATIONS",
  "label" : "CUSTOM_INTEGRATIONS"
}, {
  "value" : "AD_SERVING_COST",
  "label" : "AD_SERVING_COST"
} ]
CURL request
$ curl 'https://www.gmp365.io/api/v1/other-spend/metadata/media-types' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/other-spend/metadata/media-types' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

7. Upload status

7.1. Upload status model

All fields represented for an Upload status model

Path Type Optional Description

statusId

String

false

GMP ID of the upload status

created

DateTimeString

false

Timestamp for when the status post was created

campaignId

String

false

GMP ID of the Campaign linked to plan upload

campaignIds

Array

false

GMP ID of any Campaigns created using campaign upload endpoint

planIds

Array

false

List of Media Plan Ids created as a result of upload

percentDone

Number

false

How many percent done is the processing of the uploaded data

state

String

false

State of the processing of the uploaded data

errors

Array

false

List of errors if the state is ERROR

7.2. Check upload status

Check status of an upload. /api/v1/status/{statusId-to-check}

Sample request
GET /api/v1/status/FUL_b1971a34e0bf444ea333bb00 HTTP/1.1
X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851
Accept: application/json
Host: www.gmp365.io
Sample response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 248

{
  "statusId" : "FUL_b1971a34e0bf444ea333bb00",
  "created" : "2022-11-21T16:30:02.908Z",
  "percentDone" : 0,
  "state" : "COLLECTING_DATA",
  "errors" : [ ],
  "campaignId" : "4dc8ecad5d9a4603b57da496",
  "planIds" : [ ],
  "campaignIds" : [ ]
}
CURL request
$ curl 'https://www.gmp365.io/api/v1/status/FUL_b1971a34e0bf444ea333bb00' -i -X GET \
    -H 'X-auth: ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    -H 'Accept: application/json'
HTTPie request
$ http GET 'https://www.gmp365.io/api/v1/status/FUL_b1971a34e0bf444ea333bb00' \
    'X-auth:ffa0f657-6ac7-4fc2-b8ab-09faad9d5851' \
    'Accept:application/json'

7.3. Possible upload status states

The Upload status can have the following list of states when polled

Table 6. List of possible upload status states
Status Description

CHECKING_DATA

Evaluating the uploaded data

PENDING

Waiting for available worker

COLLECTING_DATA

Collecting uploaded data for processing

PARSING_DATA

Parsing uploaded data

CATEGORIZING_DATA

Categorizing and interpreting data

AGGREGATING

Preforming calculations

SAVING

Saving result

COMPLETED

Processing completed without error

ERROR

One or more errors have occured during data processing

DATA_REMOVED

Data for upload has been removed

8. Appendix

8.1. Formats

These are the formats that are accepted by the API.

Dates (DateString)

Dates sent as Strings and should be formatted as: yyyy-MM-dd. Example: 2018-12-31

Time Stamps (DateTimeString)

Timestamps should be formatted as yyyy-MM-ddTHH:mm:ss.SSSZ where SSS indicates milliseconds and Z is UTC time zone offset (or just the letter Z if UTC). Example: 2018-12-31T08:15:25.123Z

Numbers

All non-integer numbers must have . as decimal separator. Quotes are optional. Example: "123.500" or 123.500

Country Codes

API uses the Alpha-2 code representation of country codes as described by ISO 3166-1

Currency Codes

API uses ISO 4217 to describe currencies

8.2. Request status codes

List of possible response status codes

200 OK

Successful request and response

400 Bad Request

Malformed or other bad request. If there are multiple errors these will be separated by a semicolon (;).

401 Unauthorized

Requested resource require you to be an authorized user to access. You have forgotten to provide X-auth as a request header or the used token is expired

403 Forbidden

Login has failed - bad credentials or closed account

405 Method not allowed

The wrong request method has been used.

408 Request Timeout

Request have timed out. We have a limit of 30 seconds for a request/response cycle. If the full payload was received we will most likely be able to process it behind the scenes. You can utilize the same idempotencyKey for next attempt to retrieve the result. If the problem persist you can try a smaller payload.

500 Internal Server Error

We had a problem with our server. Try again later. If the problem persist, please contact GMP Support

8.3. Encoding

All requests and responses use UTF-8 encoding.

8.4. API Versioning

Version 1 will be kept for all non-breaking additions. Breaking changes to the API will cause the version number to go up.