Yield Management Floor service

The Yield Management Floor Service is used to create and update floors within an existing Yield Management Profile.

A floor can be thought of as the minimum price a network or publisher would like to receive for a creative. There are subtleties, however.

Warning

Floor settings supersede any reserve prices set via the Placement Service.

Example: You have a soft floor setting, but no hard floor, and you've set a reserve price at the Placement level. Since you're using Yield Management tools, however, your reserve price setting will be ignored. You must set it here via a hard floor.

REST API

HTTP Method Endpoint Description
GET https://api.appnexus.com/ym-floor?member_id=MEMBER_ID View all floors associated with a given member.
GET - https://api.appnexus.com/ym-floor?ym_profile_id=YM_PROFILE_ID
- https://api.appnexus.com/ym-floor?ym_profile_code=YM_PROFILE_CODE
View all floors associated with a given Yield Management Profile.
GET - https://api.appnexus.com/ym-floor?id=YM_FLOOR_ID
- https://api.appnexus.com/ym-floor?code=YM_FLOOR_CODE
View a specific floor.
GET https://api.appnexus.com/ym-floor?id=1,2,3 View multiple yield management floors by ID using a comma-separated list.
POST - https://api.appnexus.com/ym-floor?ym_profile_id=YM_PROFILE_ID
- https://api.appnexus.com/ym-floor?ym_profile_code=YM_PROFILE_CODE
(ym-floor JSON)
Add a new floor.
PUT - https://api.appnexus.com/ym-floor?member_id=MEMBER_ID
- https://api.appnexus.com/ym-floor?code=YM_FLOOR_CODE
(ym-floor JSON)
Modify an existing floor.
DELETE - https://api.appnexus.com/ym-floor?id=YM_FLOOR_ID
- https://api.appnexus.com/ym-floor?code=YM_FLOOR_CODE
Delete an existing floor.

Note: You cannot delete a floor that is used as the base floor for one or more Yield Management Profiles.

JSON fields

Field Type Description
member_id int The unique identifier for the member with which the floor is associated.
Default: NULL
Required On: PUT, in query string.
id int The unique identifier for a yield management floor.
Default: Auto-incremented Number (i.e. 123).
Required On: PUT
name string The name used to describe a yield management floor.
Default: None
Required On: POST
code string The optional custom code used to reference a yield management floor.
Default: NULL
description string The optional description of how the yield management floor is being used.
Default: NULL
hard_floor double The CPM floor used as the hard reserve price to be applied.
Default: None
Required On: POST
soft_floor double The CPM floor used as the soft reserve, defined as the lowest price at which price reduction will occur. This must be greater than or equal to the hard floor if set. This value is ignored if floor_optimization_enabled is true.
Default: NULL
default_calculation_type enum Whether the floor should be applied to the gross or net bid.
Possible values: gross or net. A default_calculation_type of net is a floor applied to the media cost paid out to the publisher.
Default: gross
profile_id int An optional profile_id is used to determine when to apply a floor. A profile is a generic set of rules for targeting inventory, and certain floors may only apply to certain slices of inventory. For details, see the Profile Service.
Default: NULL
priority int The priority field (optional) is used to create a hierarchy of how the floor should to be applied. Value may be between 1-10, where priority 10 is treated as the highest priority value.
Default: 5
ym_profile_id int The ID of the yield management profile that the yield management floor is associated with. For details, see the Yield Management Profile Service.

Note: This ID cannot be changed once it is set.

Default: NULL
Required On: POST
floor_application_target enum The type of bids to which the price floor is applied.
Possible values:
- external_only: The price floor is applied only to external bids (buying member and selling member are different). Use this option if you would rather serve an available managed learn impression than serve a default, even if this means exceeding the maximum % of daily volume for learn (max_learn_pct field in Publisher Service).
- external_non_preferred: The price floor is applied to external bids (buying member and selling member are different) or when the impression is an available managed learn impression that exceeds the maximum % of daily volume for learn. Use this option if you would rather serve a default than serve an available managed learn impression that would exceed the maximum % of daily volume for learn.
- all: The price floor is applied to all bids except managed learn impressions within the maximum % of daily volume for learn.
Default: all
apply_floor_to_direct Boolean Removed. Use floor_application_target instead.
allow_tag_reserve_override Boolean If true, allow a reserve price sent in via the ad tag query string to override the existing hard floor. The floor will only be overridden if the tag-supplied reserve price is greater than the floor price.
Default: false
floor_optimization_enabled Boolean If true, soft floors are ignored and floors to move up and and down depending on market conditions, but never allow the amount to go below the hard floor.
Default: false
members array The members to which the yield management floor should be applied. If left set to NULL, the floor will apply to all members. For more details, see Members below.
Default: NULL
brands array The brands to which the yield management floor should be applied. For more details, see Brands below.
Default: NULL
categories array The brands or creative categories to which this yield management floor should be applied. For more details, see Categories below.
Default: NULL
allowed_media_types array The media types to which this yield management floor should be applied. For more details, see Media Types below.
Default: NULL
allowed_media_subtypes array The media subtypes to which this yield management floor should be applied. For more details, see Media Subtypes below.
Default: NULL

Members

Field Type Description
id int The id of the buyer member (as found in the Platform Member Service) for which the floor should be applied.
Required On: POST/PUT
name string The name of the buyer member.This field is read-only.

Brands

Field Type Description
id int The ID of the brand of the creative (as found in the Brand Service) for which the floor should be applied.
Required On: POST/PUT
name string The name of the brand. This field is read-only.

Categories

Field Type Description
id int The ID of the brand or creative category (as described in the Category Service) to which this floor should be applied.
Required On: POST/PUT
name string The name of the brand or creative category. This field is read-only.

Media types

Field Type Description
id int The ID of the media type (as described in the Media Type Service) to which this floor should be applied.
Required On: POST/PUT
name string The name of the media type. This field is read-only.

Media subtypes

Field Type Description
id int The ID of the media subtype (as described in the Media Subtype Service) to which this floor should be applied.
Required On: POST/PUT
name string The name of the media subtype. This field is read-only.

Examples

View a specific floor

$ curl -b cookies -c cookies  "https://api.appnexus.com/ym-floor?id=1234"
{
    "ym-floor": {
        "member_id": 3,
        "id": 1234,
        "name": "Germany Floor",
        "description": "This rule will used to set the floor for a set of demand attributes across Germany inventory.",
        "hard_floor": 1.20,
        "soft_floor": null,
        "default_calculation_type": "gross",
        "apply_floor_to_direct": true,
        "floor_application_target": "all",
        "profile_id": 1542,
        "priority": 6,
        "ym_profile_id": 1234,
        "members": [{
            "id": 100,
            "name": "eBay"
        }, {
            "id": 256,
            "name": "MiG"
        }],
        "brands": [{
            "id": 102,
            "name": "Netflix"
        }, {
            "id": 256,
            "name": "Blockbuster"
        }],
        "categories": [{
            "id": 2,
            "name": "Apparel"
        }, {
            "id": 8,
            "name": "Dating"
        }],
        "allowed_media_types": [{
            "id": 1,
            "name": "Banner"
        }, {
            "id": 4,
            "name": "Video"
        }],
        "allowed_media_subtypes": [{
            "id": 1,
            "name": "Standard Banner"
        }, {
            "id": 8,
            "name": "30-second VAST"
        }]
    }
}

View all floors associated with a Yield Management Profile

Notice that the following floors target by optional {{profile_id}} rather than via the {{members}} array. For details, see JSON fields above.

$ curl -b cookies "https://api.appnexus.com/ym-floor?ym_profile_id=9999"
{
    "response": {
        "start_element": null,
        "count": 2,
        "ym-floors": [{
            "priority": 5,
            "last_modified": "2011-11-03 23:04:24",
            "soft_floor": 0.23999999999999999,
            "member_id": 123,
            "name": "Placement 60 + Size 300x250 Floor",
            "floor_application_target": "all",
            "default_calculation_type": "gross",
            "brands": null,
            "ym_profile_id": 9999,
            "code": "Tattooed Bikers Galore",
            "hard_floor": 0,
            "id": 555,
            "description": null,
            "profile_id": 23,
            "members": null,
            "categories": null,
            "allowed_media_types": null,
            "allowed_media_subtypes": null
        }, {
            "priority": 5,
            "last_modified": "2011-11-04 01:18:35",
            "soft_floor": 0.050000000000000003,
            "member_id": 1,
            "name": "Placement+Size 728x90 Floor",
            "floor_application_target": "all",
            "default_calculation_type": "gross",
            "brands": null,
            "ym_profile_id": 9999,
            "code": "Tattooed Bikers Knit and Sew",
            "hard_floor": 0,
            "id": 4,
            "description": null,
            "profile_id": 9,
            "members": null,
            "categories": null,
            "allowed_media_types": null,
            "allowed_media_subtypes": null
        }],
        "status": "OK",
        "num_elements": null
    }
}