Creating a Supply Tag

SDK

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

In [1]: import springserve

In [2]: tag = springserve.supply_tags.new({'name': 'TEST API DOCS', 'rate': 0.02, 'demand_tag_priorities':[{'demand_tag_id':30424, 'priority':1}]})

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

Note that for flat waterfalls, the tier parameter defaults to 1. Same goes for any demand tag included in demand_tag_priorities that does not specify the tier parameter.

REST API

POST /api/v0/supply_tags

Headers

Content-Type application/json
Authorization "yourAuthToken"

Body (example)


{
   "name": "TEST API DOCS",
   "rate": 0.02,
   "demand_tag_priorities":[{"demand_tag_id":30424, "priority":1}]
}


Required parameters: name, demand_tag_priorities

Response

Status code 200


{
  'account_id': 1,
  'active': True,
  'allowed_player_sizes': [
    's',
    'm',
    'l',
    'u'
  ],
  'country_codes': [],
  'country_targeting': 'All',
  'demand_tag_priorities': [
    {
      'demand_tag_id': 30424,
      'locked': False,
      'priority': 1,
      'tier': 1
    }
  ],
  'detected_domain_targeting': False,
  'detected_player_size_targeting': False,
  'direct_connect': False,
  'dma_codes': [],
  'dma_targeting': 'All',
  'domain_list_ids': [],
  'domain_targeting': 'All',
  'environment': 'desktop',
  'flash_vpaid_enabled': False,
  'id': 28852,
  'js_vpaid_enabled': True,
  'js_vpaid_flash_enabled': True,
  'key_ids': [],
  'name': 'TEST API DOCS',
  'optimization': {
    'active': True,
    'learn_pct': '1.0',
    'settings': {
      'lookback_minutes': '60',
      'metric': 'fill_speed',
      'minimum_requests': '250'
    },
    'version': ''
  },
  'payment_terms': 'CPM',
  'player_size_targeting': 'All',
  'post_imp_detection_enabled': True,
  'pre_bid_blocking_enabled': True,
  'pre_bid_blocking_components': ['whiteops', 'springserve'],
  'rate': '0.02',
  'segment_user_as': [],
  'supply_group_id': None,
  'supply_partner_id': None,
  'supply_type': None,
  'tag_health': None,
  'targeting_supply_ids': [],
  'targeting_supply_white_list': '',
  'timeout': None,
  'tracking_player_cost': False,
  'updated_at': '2017-07-07T15:17:28.315Z',
  'user_agent_devices': [],
  'user_agent_operating_systems': []
}


Get a Supply Tag

SDK

In [1]: tag = springserve.supply_tags.get(28852)

In [2]: print tag.name

"TEST API DOCS"

REST API

GET /api/v0/supply_tags/<id>

Headers

Content-Type application/json
Authorization "yourAuthToken"

Response

Status code 200

{
  'account_id': 1,
  'active': True,
  'allowed_player_sizes': [
    's',
    'm',
    'l',
    'u'
  ],
  'country_codes': [],
  'country_targeting': 'All',
  'demand_tag_priorities': [
    {
      'demand_tag_id': 30424,
      'locked': False,
      'priority': 1,
      'tier': 1
    }
  ],
  'detected_domain_targeting': False,
  'detected_player_size_targeting': False,
  'direct_connect': False,
  'dma_codes': [],
  'dma_targeting': 'All',
  'domain_list_ids': [],
  'domain_targeting': 'All',
  'environment': 'desktop',
  'flash_vpaid_enabled': False,
  'id': 28852,
  'js_vpaid_enabled': True,
  'js_vpaid_flash_enabled': True,
  'key_ids': [],
  'name': 'TEST API DOCS',
  'optimization': {
    'active': True,
    'learn_pct': '1.0',
    'settings': {
      'lookback_minutes': '60',
      'metric': 'fill_speed',
      'minimum_requests': '250'
    },
    'version': ''
  },
  'payment_terms': 'CPM',
  'player_size_targeting': 'All',
  'post_imp_detection_enabled': True,
  'pre_bid_blocking_enabled': True,
  'pre_bid_blocking_components': ['whiteops', 'springserve'],
  'rate': '0.02',
  'segment_user_as': [],
  'supply_group_id': None,
  'supply_partner_id': None,
  'supply_type': None,
  'tag_health': None,
  'targeting_supply_ids': [],
  'targeting_supply_white_list': '',
  'timeout': None,
  'tracking_player_cost': False,
  'updated_at': '2017-07-07T15:17:28.315Z',
  'user_agent_devices': [],
  'user_agent_operating_systems': []
}

Edit a Supply Tag

SDK

In [1]: tag = springserve.supply_tags.get(28852)

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"

Note that when enabling post_imp_detection, you must also set at least one of post_imp_percentage_whiteops, post_imp_percentage_moat, post_imp_percentage_ias to >0 before saving your changes.

REST API

PUT /api/v0/supply_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,
  'allowed_player_sizes': [
    's',
    'm',
    'l',
    'u'
  ],
  'country_codes': [],
  'country_targeting': 'All',
  'demand_tag_priorities': [
    {
      'demand_tag_id': 30424,
      'locked': False,
      'priority': 1,
      'tier': 1
    }
  ],
  'detected_domain_targeting': False,
  'detected_player_size_targeting': False,
  'direct_connect': False,
  'dma_codes': [],
  'dma_targeting': 'All',
  'domain_list_ids': [],
  'domain_targeting': 'All',
  'environment': 'desktop',
  'flash_vpaid_enabled': False,
  'id': 28852,
  'js_vpaid_enabled': True,
  'js_vpaid_flash_enabled': True,
  'key_ids': [],
  'name': 'I want to change the name',
  'optimization': {
    'active': True,
    'learn_pct': '1.0',
    'settings': {
      'lookback_minutes': '60',
      'metric': 'fill_speed',
      'minimum_requests': '250'
    },
    'version': ''
  },
  'payment_terms': 'CPM',
  'player_size_targeting': 'All',
  'post_imp_detection_enabled': True,
  'pre_bid_blocking_enabled': True,
  'pre_bid_blocking_components': ['whiteops', 'springserve'],
  'rate': '0.02',
  'segment_user_as': [],
  'supply_group_id': None,
  'supply_partner_id': None,
  'supply_type': None,
  'tag_health': None,
  'targeting_supply_ids': [],
  'targeting_supply_white_list': '',
  'timeout': None,
  'tracking_player_cost': False,
  'updated_at': '2017-07-07T15:17:28.315Z',
  'user_agent_devices': [],
  'user_agent_operating_systems': []
}

Duplicate a Supply Tag

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

SDK

In [1]: tag = springserve.supply_tags.get(28852)

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

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

In [5]: print dupe.id
65034

REST API

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

Headers

Content-Type application/json
Authorization "yourAuthToken"

Response

Status code 200

{
  'account_id': 1,
  'active': True,
  'allowed_player_sizes': [
    's',
    'm',
    'l',
    'u'
  ],
  'country_codes': [],
  'country_targeting': 'All',
  'demand_tag_priorities': [
    {
      'demand_tag_id': 30424,
      'locked': False,
      'priority': 1,
      'tier': 1
    }
  ],
  'detected_domain_targeting': False,
  'detected_player_size_targeting': False,
  'direct_connect': False,
  'dma_codes': [],
  'dma_targeting': 'All',
  'domain_list_ids': [],
  'domain_targeting': 'All',
  'environment': 'desktop',
  'flash_vpaid_enabled': False,
  'id': 65034,
  'js_vpaid_enabled': True,
  'js_vpaid_flash_enabled': True,
  'key_ids': [],
  'name': 'I want to change the name',
  'optimization': {
    'active': True,
    'learn_pct': '1.0',
    'settings': {
      'lookback_minutes': '60',
      'metric': 'fill_speed',
      'minimum_requests': '250'
    },
    'version': ''
  },
  'payment_terms': 'CPM',
  'player_size_targeting': 'All',
  'post_imp_detection_enabled': True,
  'pre_bid_blocking_enabled': True,
  'pre_bid_blocking_components': ['whiteops', 'springserve'],
  'rate': '0.02',
  'segment_user_as': [],
  'supply_group_id': None,
  'supply_partner_id': None,
  'supply_type': None,
  'tag_health': None,
  'targeting_supply_ids': [],
  'targeting_supply_white_list': '',
  'timeout': None,
  'tracking_player_cost': False,
  'updated_at': '2017-07-07T15:17:28.315Z',
  'user_agent_devices': [],
  'user_agent_operating_systems': []
}


Create a Direct Connect Supply Tag

SDK

In [1]: import springserve

In [2]: tag = springserve.connected_supply.new({'direct_connect':'true', 'supply_partner_id":10000, 'name': 'TEST API DC', 'rate': 0.02, 'demand_tag_priorities':[{'demand_tag_id':30420, 'priority':1}]})

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

Note that for flat waterfalls, the tier parameter defaults to 1. Same goes for any demand tag included in demand_tag_priorities that does not specify the tier parameter.

REST API

POST /api/v0/connected_supply

Headers

Content-Type application/json
Authorization "yourAuthToken"

Body (example)

{
   "name": "TEST API DC",
"direct_connect":true,
"supply_partner_id":10000,
"rate": 0,
"demand_tag_priorities":[{"demand_tag_id":30424, "priority":1}]
}


Required parameters: name, demand_tag_priorities, supply_partner_id, direct_connect, rate

Response

Status code 200

{
  'account_id': 1,
  'active': True,
  'allowed_player_sizes': [
    's',
    'm',
    'l',
    'u'
  ],
  'country_codes': [],
  'country_targeting': 'All',
  'demand_tag_priorities': [
    {
      'demand_tag_id': 30424,
      'locked': False,
      'priority': 1,
      'tier': 1
    }
  ],
  'detected_domain_targeting': False,
  'detected_player_size_targeting': False,
  'direct_connect': False,
  'dma_codes': [],
  'dma_targeting': 'All',
  'domain_list_ids': [],
  'domain_targeting': 'All',
  'environment': 'desktop',
  'flash_vpaid_enabled': False,
  'id': 65034,
  'js_vpaid_enabled': True,
  'js_vpaid_flash_enabled': True,
  'key_ids': [],
  'name': 'I want to change the name',
  'optimization': {
    'active': True,
    'learn_pct': '1.0',
    'settings': {
      'lookback_minutes': '60',
      'metric': 'fill_speed',
      'minimum_requests': '250'
    },
    'version': ''
  },
  'payment_terms': 'CPM',
  'player_size_targeting': 'All',
  'post_imp_detection_enabled': True,
  'pre_bid_blocking_enabled': True,
  'pre_bid_blocking_components': ['whiteops', 'springserve'],
  'rate': '0',
  'segment_user_as': [],
  'supply_group_id': None,
  'supply_partner_id': None,
  'supply_type': None,
  'tag_health': None,
  'targeting_supply_ids': [],
  'targeting_supply_white_list': '',
  'timeout': None,
  'tracking_player_cost': False,
  'updated_at': '2017-07-07T15:17:28.315Z',
  'user_agent_devices': [],
  'user_agent_operating_systems': []
}


Enabling a Supply Tag for Open Market

SDK

In [1]: import springserve

In [2]: tag = springserve.supply_tags.get(123456)

In [3]: tag.open_market_enabled = True

In [4]: saved_tag = tag.save()

In [5]: print saved_tag.ok, saved_tag.id
True, 123456


REST API

PATCH /api/v0/supply_tags/<id>

Headers

Content-Type application/json
Authorization "yourAuthToken"

Body (example)

{
    "open_market_enabled": true
}


Response

Status code 200

{
    "id": 123456,
    "account_id": 1,
    "name": "Supply Tag with Open Market",
    "active": true,
    "rate": "1.0",
    "domain_targeting": "All",
    "app_name_targeting": "All",
    "app_bundle_targeting": "All",
    "ip_targeting": "All",
    "country_targeting": "All",
    "player_size_targeting": "All",
    "dma_targeting": "All",
    "allowed_player_sizes": [
        "xs",
        "s",
        "m",
        "l",
        "xl",
        "u"
    ],
    "country_codes": [],
    "domain_list_ids": [],
    "app_name_list_ids": [],
    "app_bundle_list_ids": [],
    "ip_list_ids": [],
    "dma_codes": [],
    "user_agent_devices": [],
    "user_agent_operating_systems": [],
    "user_agent_browsers": [],
    "updated_at": "2019-09-27T21:02:53.466Z",
    "created_at": "2019-05-14T20:25:01.156Z",
    "direct_connect": false,
    "supply_label_ids": [],
    "supply_partner_id": 244,
    "supply_type": null,
    "payment_terms": "CPM",
    "tracking_player_cost": false,
    "optimization": {
        "active": true,
        "version": null,
        "learn_pct": "1.0",
        "mode": "white_box",
        "settings": {
            "metric": "opportunity_fill",
            "lookback_minutes": "60"
        }
    },
    "timeout": null,
    "environment": "desktop",
    "js_vpaid_enabled": false,
    "detected_domain_targeting": false,
    "detected_player_size_targeting": false,
    "targeting_supply_ids": [],
    "targeting_supply_white_list": "",
    "post_imp_detection_enabled": false,
    "post_imp_percentage_whiteops": 0,
    "post_imp_percentage_ias": 0,
    "post_imp_percentage_moat": 0,
    "post_imp_percentage_protected": 0,
    "post_imp_percentage_forensiq": 0,
    "pre_bid_blocking_enabled": false,
    "pre_bid_blocking_components": [],
    "tag_health": null,
    "key_ids": [],
    "vpaid_none_allow_vpaid_demand": true,
    "rpm_floor": "1.2",
    "rpm_floor_openrtb": true,
    "openrtb_floor": "1.2",
    "tier_0_broadfall": true,
    "tier_1_broadfall": true,
    "tier_2_broadfall": true,
    "tier_3_broadfall": true,
    "tier_4_broadfall": true,
    "tier_5_broadfall": true,
    "vast_version": "3.0",
    "min_aspect_ratio": null,
    "max_aspect_ratio": null,
    "bulk_add_enabled": true,
    "format": "video",
    "allow_traffic_exclusions": true,
    "open_market_enabled": true,
    "auto_add_external_bidders": false,
    "evaluation_learn_pct": "50.0",
    "tag_pixels": [],
    "demand_tag_priorities": [
        {
            "demand_tag_id": 21892,
            "priority": 1,
            "tier": 0,
            "locked": false
        }
    ],
    "give_up_percents": [],
    "budgets": [],
    "frequency_caps": [],
    "open_market_external_bidders": [
        {
            "other_account_id": 20,
            "openrtb_floor": null
        },
        {
            "other_account_id": 23,
            "openrtb_floor": null
        },
        {
            "other_account_id": 27,
            "openrtb_floor": null
        },
        {
            "other_account_id": 14,
            "openrtb_floor": null
        },
        {
            "other_account_id": 55,
            "openrtb_floor": null
        },
        {
            "other_account_id": 56,
            "openrtb_floor": null
        },
        {
            "other_account_id": 28,
            "openrtb_floor": null
        },
        {
            "other_account_id": 15,
            "openrtb_floor": null
        },
        {
            "other_account_id": 3,
            "openrtb_floor": null
        },
        {
            "other_account_id": 58,
            "openrtb_floor": null
        },
        {
            "other_account_id": 46,
            "openrtb_floor": null
        },
        {
            "other_account_id": 4,
            "openrtb_floor": null
        },
        {
            "other_account_id": 62,
            "openrtb_floor": null
        },
        {
            "other_account_id": 17,
            "openrtb_floor": null
        },
        {
            "other_account_id": 65,
            "openrtb_floor": null
        },
        {
            "other_account_id": 64,
            "openrtb_floor": null
        },
        {
            "other_account_id": 80,
            "openrtb_floor": null
        },
        {
            "other_account_id": 79,
            "openrtb_floor": null
        },
        {
            "other_account_id": 81,
            "openrtb_floor": null
        }
    ]
}

NOTE: Enabling Open Market in the API without specifying bidders will add all eligible bidders.

Adding Open Market Bidders to a Supply Tag

SDK

In [1]: import springserve

In [2]: tag = springserve.supply_tags.get(123456)

In [3]: tag.open_market_external_bidders = [{'other_account_id':58},{'openrtb_floor': 2.2, 'other_account_id':4},{'other_account_id':28}]

In [4]: saved_tag = tag.save()

In [5]: print saved_tag.ok, saved_tag.id
True, 123456

The 'other_account_id' represents the bidder account id to add to the open market for this supply tag. There's an optional 'openrtb_floor' field that allows you to set a specific floor for a bidder (otherwise, the default Open Market floor is used). 

REST API

PATCH /api/v0/supply_tags/<id>

Headers

Content-Type application/json
Authorization "yourAuthToken"

Body (example)

{
    "open_market_external_bidders": [{"other_account_id": 4}, {"other_account_id": 27, "openrtb_floor" : 12.0}]

}


Response

Status code 200

{
    "id": 123456,
    "account_id": 1,
    "name": "Supply Tag with Open Market",
    "active": true,
    "rate": "1.0",
    "domain_targeting": "All",
    "app_name_targeting": "All",
    "app_bundle_targeting": "All",
    "ip_targeting": "All",
    "country_targeting": "All",
    "player_size_targeting": "All",
    "dma_targeting": "All",
    "allowed_player_sizes": [
        "xs",
        "s",
        "m",
        "l",
        "xl",
        "u"
    ],
    "country_codes": [],
    "domain_list_ids": [],
    "app_name_list_ids": [],
    "app_bundle_list_ids": [],
    "ip_list_ids": [],
    "dma_codes": [],
    "user_agent_devices": [],
    "user_agent_operating_systems": [],
    "user_agent_browsers": [],
    "updated_at": "2019-09-27T21:02:53.466Z",
    "created_at": "2019-05-14T20:25:01.156Z",
    "direct_connect": false,
    "supply_label_ids": [],
    "supply_partner_id": 244,
    "supply_type": null,
    "payment_terms": "CPM",
    "tracking_player_cost": false,
    "optimization": {
        "active": true,
        "version": null,
        "learn_pct": "1.0",
        "mode": "white_box",
        "settings": {
            "metric": "opportunity_fill",
            "lookback_minutes": "60"
        }
    },
    "timeout": null,
    "environment": "desktop",
    "js_vpaid_enabled": false,
    "detected_domain_targeting": false,
    "detected_player_size_targeting": false,
    "targeting_supply_ids": [],
    "targeting_supply_white_list": "",
    "post_imp_detection_enabled": false,
    "post_imp_percentage_whiteops": 0,
    "post_imp_percentage_ias": 0,
    "post_imp_percentage_moat": 0,
    "post_imp_percentage_protected": 0,
    "post_imp_percentage_forensiq": 0,
    "pre_bid_blocking_enabled": false,
    "pre_bid_blocking_components": [],
    "tag_health": null,
    "key_ids": [],
    "vpaid_none_allow_vpaid_demand": true,
    "rpm_floor": "1.2",
    "rpm_floor_openrtb": true,
    "openrtb_floor": "1.2",
    "tier_0_broadfall": true,
    "tier_1_broadfall": true,
    "tier_2_broadfall": true,
    "tier_3_broadfall": true,
    "tier_4_broadfall": true,
    "tier_5_broadfall": true,
    "vast_version": "3.0",
    "min_aspect_ratio": null,
    "max_aspect_ratio": null,
    "bulk_add_enabled": true,
    "format": "video",
    "allow_traffic_exclusions": true,
    "open_market_enabled": true,
    "auto_add_external_bidders": false,
    "evaluation_learn_pct": "50.0",
    "tag_pixels": [],
    "demand_tag_priorities": [
        {
            "demand_tag_id": 21892,
            "priority": 1,
            "tier": 0,
            "locked": false
        }
    ],
    "give_up_percents": [],
    "budgets": [],
    "frequency_caps": [],
    "open_market_external_bidders": [
        {
            "other_account_id": 27,
            "openrtb_floor": 12.0
        },
        {
            "other_account_id": 4,
            "openrtb_floor": null
        }
    ]
}