Demand Tag API



Creating a Demand Tag

SDK

Use tab completion with SDK to auto-complete function names or show field options!

In [1]: import springserve

In [2]: tag = springserve.demand_tags.new({"name": "TEST API DOCS", "rate": 10.0, 'vast_endpoint_url': 'http://myvastendpoint.com/123', 'demand_partner_id':4321})

In [3]: print tag.ok, tag.id
True, 30424

REST API

POST /api/v0/demand_tags

Headers

Content-Type application/json
Authorization "yourAuthToken"

Body (example)

{
    "name": "TEST API DOCS",
    "rate": 0.2,
    "vast_endpoint_url": "https://s3.amazonaws.com/...",
    "demand_partner_id": 4321
}



Response

Status code 200

{
  'account_id': 1,
  'active': True,
  'allowed_player_sizes': [
    's',
    'm',
    'l',
    'u'
  ],
  'bid_floor_type': 'dynamic',
  'bid_margin': 1.0,
  'bid_optional_params': {'context': 0},
  'bid_params': {'placementId': '1'},
  'bid_platform': None,
  'budget_metric': None,
  'budget_pacing': None,
  'budget_period': None,
  'budget_value': None,
  'campaign_id': None,
  'country_codes': [],
  'country_targeting': 'All',
  'demand_code': None,
  'demand_group_id': None,
  'demand_partner_id': 1764,
  'tag_pixels': [],
  'demand_class': 3,
  'direct_connect': False,
  'dma_codes': [],
  'dma_targeting': 'All',
  'domain_list_ids': [],
  'domain_targeting': 'All',
  'end_date': None,
  'frequency_cap_metric': None,
  'frequency_cap_period': None,
  'frequency_cap_value': None,
  'format': 'video',
  'id': 30424,
  'key_value_targeting': True,
  'name': 'TEST API DOCS',
  'player_size_targeting': 'All',
  'rate': '0.01',
  'start_date': None,
  'demand_tag_priorities': [{'supply_tag_id': 123456, 'priority': 1, 'tier': 0},
  {'supply_tag_id': 123456, 'priority': 1, 'tier': 1}],
  'targeting_demand_ids': [],
  'targeting_demand_white_list': '',
  'timeout': 20000,
  'updated_at': '2017-07-28T15:06:47.191Z',
  'user_agent_devices': [],
  'user_agent_operating_systems': [],
  'vast_endpoint_url': 'http://test.com'
}

Get a demand tag by id

SDK

In [1]: tag = springserve.demand_tags.get(30424)

In [2]: print tag.name

"TEST API DOCS"


REST API

GET /api/v0/demand_tags/<id>

Headers

Content-Type application/json
Authorization "yourAuthToken"


Response

Status code 200

{
  'account_id': 1,
  'active': True,
  'id': 30424,
  'name': 'TEST API DOCS',
   ...
  'rate': '0.01',
  'demand_tag_priorities': [{'supply_tag_id': 123456, 'priority': 1, 'tier': 0},
  {'supply_tag_id': 123456, 'priority': 1, 'tier': 1}],
  'demand_partner_id': 1764,
  'vast_endpoint_url': 'http://test.com'
}

Get demand tags based on multiple conditions

SDK

In [1]: active_tags_by_account = springserve.demand_tags.get(account_id=123, active=True)

In [2]: print active_tags_by_account[0].name

"TEST ACTIVE DEMAND TAG"

REST API

GET /api/v0/demand_tags

Headers

Content-Type application/json
Authorization "yourAuthToken"

Body

{
  "account_id": 123,
  "active": "True"
}


Response

Status code 200

[
	{
  		'account_id': 123,
  		'active': True,
  		'id': 30424,
        ...
	},
	{
		'account_id': 123,
  		'active': True,
  		'id': 30425,
		...
	}
]

Edit a Demand Tag

SDK

In [1]: tag = springserve.demand_tags.get(30424)

In [2]: tag.name = "I want to change the name"

In [3]: changed = tag.save()


In [4]: changed.ok
Out [4]: True

In [5]: print changed.name

"I want to change the name"

REST API

PUT /api/v0/demand_tags/<id>

Headers

Content-Type application/json
Authorization "yourAuthToken"

Body (example)

{
    "name": "I want to change the name"
}


Response

Status code 200

{
  'account_id': 1,
  'active': True,
  'demand_partner_id': 1764,
  'id': 30424,
  'name': 'I want to change the name',
    ...
  'rate': '0.01',
  'demand_tag_priorities': [{'supply_tag_id': 123456, 'priority': 1, 'tier': 0},
  {'supply_tag_id': 123456, 'priority': 1, 'tier': 1}],
  'vast_endpoint_url': 'http://test.com'
}

Duplicate a Demand Tag

Please note that this works for both Managed and Direct Connect tags. 

SDK

In [1]: tag = springserve.demand_tags.get(30424)

ln [2]: dupe = tag.duplicate()

ln [3]: dupe.ok
Out [3]: True

In [4]: print dupe.id
72302

REST API

GET /api/v0/demand_tags/<id>/duplicate

Headers

Content-Type application/json
Authorization "yourAuthToken"


Response

Status code 201

{
  'account_id': 1,
  'active': True,
  'demand_partner_id': 1764,
  'id': 72302,
  'name': 'I want to change the name (copy)',
  ...
  'rate': '0.01',
  'demand_tag_priorities': [{'supply_tag_id': 123456, 'priority': 1, 'tier': 0},
  {'supply_tag_id': 123456, 'priority': 1, 'tier': 1}],
  'vast_endpoint_url': 'http://test.com'
}

Add Content Targeting to Demand Tag

SDK

import springserve as ss

tag = ss.demand_tags.get(30424)

# The content targeting on a demand tag object is a list of dictionaries.
## Include the macro you want to target, allow/block list, values or list, ...
## ...targeted values or parameter list ids, and whether or not the param is required.

content_targeting = [
    {
        "macro_param": "{{CONTENT_TITLE}}",
        "list_type": "white_list",
        "source_type": "values",
        "targeted_values": ["Breaking Bad"],
        "param_required": False
    },
    {
        "macro_param": "{{CONTENT_GENRE}}",
        "list_type": "black_list",
        "source_type": "list",
        "parameter_list_ids": [46],
        "param_required": False
    },
    {
        "macro_param": "{{CONTENT_EPISODE}}",
        "list_type": "white_list_partial_match",
        "source_type": "values",
        "targeted_values": ["1", "2"],
        "param_required": True
    },
    {
        "macro_param": "{{LANGUAGE}}",
        "list_type": "black_list_partial_match",
        "source_type": "values",
        "targeted_values": ["es"],
        "param_required": False
    }
]

tag.targeted_macros = content_targeting
if tag.ok:
	resp = tag.save()
	if not resp.ok:
		print(resp.error)


REST API

PUT /api/v0/demand_tags/<id>

Headers

Content-Type application/json
Authorization "yourAuthToken"

Body (example)

curl  -X PUT \
  'https://console.springserve.com/api/v0/demand_tags/1226067' \
  --header 'Accept: application/json' \
  --header 'Authorization: authtokenhere' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "targeted_macros_enabled": true,
  "targeted_macros": [
    {
      "macro_param": "{{CONTENT_GENRE}}",
      "list_type": "white_list",
      "source_type": "list",
      "parameter_list_ids": [46],
      "param_required": false
    },
    {
      "macro_param": "{{RATING}}",
      "list_type": "black_list",
      "source_type": "values",
      "targeted_values": [
        "r",
        "tv-ma"
      ],
      "param_required": false
    }
  ]
}'