OpenRTB

From LoopMe Wiki
Jump to: navigation, search

Introduction

The LoopMe openRTB endpoint is created to support all kind of ad formats for 3rd party servers. The LoopMe ad server supports the following ad formats:

  • VAST/VPAID video ads
  • Fullscreen video ads
  • Fullscreen rich media ads
  • 728x90 tablet leaderboard ads
  • 300x250 MPU/MRectangle ads
  • 320x50 banner ads

This document describes the endpoint, the required parameters and contains request/response examples. The API compliant with IAB open RTB specification v.2.3. https://www.iab.com/wp-content/uploads/2015/05/OpenRTB_API_Specification_Version_2_3_1.pdf

Endpoint and access to API

Endpoint URL: http://ortb.loopme.me
Method: HTTP POST
Header: Content-Type: application/json
Body: JSON Object

All calls return HTTP code 200 except for an empty bid response(when ads for your specific request was not found) which returns HTTP code 204.

For start using openRTB endpoint contact your LoopMe account manager for providing you unique application keys. Each application key is required for single ad format(video, banner etc.).

OpenRTB request

Attribute Type Description
id string; recommended Your unique request ID
app object; required Your app detail. Required for every request because must consist at least 1 attribute: LoopMe application key
imp object array; required Array of Imp objects representing the impressions what you want to get. At least 1 Imp object which equals to LoopMe application key ad format is required. Example: when you send LoopMe key for video then Imp should include video object
device object; required Details about the user’s device to which the impression will be delivered
site object Your website details. Only applicable and recommended for websites
user object; recommended Details about the human user of the device
- - And other request attributes are compatible to openRTB protocol v.2.3 (section 3.2.1 Object: BidRequest)


Simple request example

{
	"id": "17d59c6c-7d99-4915-98ce-cee5e9e76c36",
	"app": {
		"id": "test_interstitial_l",
		"name": "LoopMe Tester",
		"bundle": "com.loopme.tester", 
		"version": "2.1107"
	},
	"imp": [{
		"id": "1510587039033",
		"secure": 1,
		"banner": {
			"w": 360,
			"h": 640,
			"id": 1,
			"api": [5, 3],
			"battr": [3, 8]
		},
		"video": {
			"maxduration": 1800,
			"protocols": [2, 3],
			"battr": [3, 8],
			"w": 360,
			"linearity": 1,
			"boxingallowed": 1,
			"h": 640,
			"mimes": ["video\/mp4"],
			"startdelay": 1,
			"delivery": [2],
			"sequence": 1,
			"minduration": 5,
			"maxbitrate": 1024
		}
	}],
	"device": {
		"ua": "Mozilla\/5.0 (Linux; Android 6.0.1; SM-G920F Build\/MMB29K; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/62.0.3202.84 Mobile Safari\/537.36",
		"devicetype": 4,
		"w": 1440,
		"h": 2560,
		"js": 0,
		"osv": "23",
		"connectiontype": 2,
		"os": "android",
		"language": "en",
		"make": "samsung",
		"hwv": "samsungexynos7420",
		"model": "SM-G920F"
	},
	"user": {
		"id": "asdasc-12e-cx-asf3-23red"
	},
	"tmax": 250,
	"bcat": ["IAB25-3", "IAB25", "IAB26"]
}


Object: app

This object is required and should be included at least 1 attribute 'app.id' which contains your unique LoopMe key. Also, this object should be included if the ad-supported content is a non-browser application (typically in mobile) as opposed to a website. The request must not contain both an App and a Site object. At a minimum, it is useful to provide an App Name or bundle, but this is not strictly required.

Attribute Type Description
id string; required Your unique LoopMe key
name string; recommended App name
bundle string; recommended Application bundle or package name (e.g., com.foo.mygame); intended to be a unique ID across exchanges
version string; recommended Application version
domain string Domain of the app (e.g., “mygame.foo.com”)
- - And other request.app attributes are compatible to openRTB protocol v.2.3 (section 3.2.7 Object: App)


Object: imp

This object describes an ad placement. A single request can include multiple Imp objects. Each Imp object has a required ID so that bids can reference them individually. The presence of Banner or Video objects subordinate to the Imp object indicates the type of impression being offered. But at least 1 Imp object which equals to LoopMe application key ad format is required.

Attribute Type Description
id string A unique identifier for this impression
banner object A banner object required if this impression is offered as a banner ad opportunity and LoopMe key has banner ad format
video object A video object required if this impression is offered as a video ad opportunity and LoopMe key has video ad format
secure integer; default 1 Flag to indicate if the impression requires secure HTTPS URL creative assets and markup, where 0 = non-secure, 1 = secure. LoopMe sends only secure creative assets
instl integer; default 0 1 = the ad is interstitial or full screen, 0 = not interstitial
- - And other request.imp attributes are compatible to openRTB protocol v.2.3 (section 3.2.2 Object: Imp). Note: LoopMe does not support native video ads. Price sets on LoopMe application key level and no needs to send Imp.bidfloor in request. Ask LoopMe account manager about price details


Object: banner

This object represents the most general type of impression. Although the term “banner” may have very specific meaning in other contexts, here it can be many things including a simple static image, an expandable ad unit, or even in-banner video. An array of Banner objects can also appear within the Video to describe optional companion ads defined in the VAST specification.
The presence of a Banner as a subordinate of the Imp object indicates that this impression is offered as a banner type impression and LoopMe key has banner ad format.

Attribute Type Description
w integer; recommended Width of the impression in pixels. If neither wmin nor wmax are specified, this value is an exact width requirement. Otherwise it is a preferred width
h integer; recommended Height of the impression in pixels. If neither hmin nor hmax are specified, this value is an exact height requirement. Otherwise it is a preferred height
id string Unique identifier for this banner object. Recommended when Banner objects are used with a Video object to represent an array of companion ads. Values usually start at 1 and increase with each object; should be unique within an impression
api integer array List of supported API frameworks for this impression. Refer to openRTB protocol v.2.3 (section 5.6 API Frameworks). If an API is not explicitly listed, it is assumed not to be supported
battr integer array Blocked creative attributes. Refer to openRTB protocol v.2.3 (section 5.3 Creative Attributes)
- - And other request.imp.banner attributes are compatible to openRTB protocol v.2.3 (section 3.2.3 Object: Banner)


Object: video

This object represents an in-stream video impression. Many of the fields are non-essential for minimally viable transactions but are included to offer fine control when needed. Video in openRTB generally assumes compliance with the VAST and VPAID standard. As such, the notion of companion ads is supported by optionally including an array of Banner objects that define these companion ads.
The presence of a Video as a subordinate of the Imp object indicates that this impression is offered as a video type impression and LoopMe key has banner ad format.

Attribute Type Description
mimes string array; required Content MIME types supported. Popular MIME types may include “video/mp4”
protocols integer array; required Array of supported video bid response protocols. Refer to openRTB protocol v.2.3 (section 5.8 Video Bid Response Protocols)
minduration integer; recommended Minimum video ad duration in seconds
maxduration integer; recommended Maximum video ad duration in seconds
w integer; recommended Width of the video player in pixels
h integer; recommended Height of the video player in pixels
- - And other request.imp.video attributes are compatible to openRTB protocol v.2.3 (section 3.2.4 Object: Video)


Object: device

This object is required and provides information pertaining to the device through which the user is interacting. Device information includes its hardware, platform, location, and carrier data. The device can refer to a mobile handset, a desktop computer, set top box, or other digital device.

Attribute Type Description
ua string; required Browser user agent string
geo object; recommended Location of the device assumed to be the user’s current location defined by a Geo object refer to openRTB protocol v.2.3 (section 3.2.12 Object: Geo)
dnt integer; recommended Standard “Do Not Track” flag as set in the header by the browser, where 0 = tracking is unrestricted, 1 = do not track
lmt integer; recommended “Limit Ad Tracking” signal commercially endorsed (e.g., iOS, Android), where 0 = tracking is unrestricted, 1 = tracking must be limited per commercial guidelines
ip string; recommended IPv4 address closest to device
- - And other request.device attributes are compatible to openRTB protocol v.2.3 (section 3.2.11 Object: Device)


Object: site

This object should be included if the ad supported content is a website as opposed to a non-browser application. A request can contain both a Site and an App object(with only 'app.id' attribute). At a minimum, it is useful to provide a site ID or page URL, but this is not strictly required.

Attribute Type Description
id string Your site id
name string Site name
domain string Domain of the site (e.g., “mysite.foo.com”)
page string URL of the page where the impression will be shown
- - And other request.site attributes are compatible to openRTB protocol v.2.3 (section 3.2.6 Object: Site)


Object: user

This object contains information known or derived about the human user of the device (i.e., the audience for advertising). The user id is an exchange artifact and may be subject to rotation or other privacy policies. However, this user ID must be stable long enough to serve reasonably as the basis for frequency capping and retargeting.

Attribute Type Description
id string; recommended ID for the user
- - And other request.user attributes are compatible to openRTB protocol v.2.3 (section 3.2.13 Object: User)


OpenRTB response

OpenRTB responses contain ads that reference specific impressions within a request. HTTP code 204 constitutes a no-ads.

Attribute Type Description
id string ID of the request to which this is a response
seatbid object array; required Array of seatbid objects


Simple response example

{
    "id": "17d59c6c-7d99-4915-98ce-cee5e9e76c36",
    "seatbid": [
        {
            "bid": [
                {
                    "id": "5a1dc8aeb571b0e4c9930677",
                    "impid": "1510587039033",
                    "adid": "29553",
                    "adm": "<VAST version=\"3.0\"><Ad id=\"6029\"><InLine><AdSystem version=\"2.0.1599\">LoopMe LTD</AdSystem><AdTitle>Wiki Ad APIs test</AdTitle><Error><![CDATA[https://tk0x1.com/sj/tr?et=ERROR&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE&vastcode=[ERRORCODE]]]></Error><Impression><![CDATA[https://tk0x1.com/sj/tr?et=CUSTOM&name=imp_tracker&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Impression><Impression><![CDATA[https://tk0x1.com/sj/tr?et=INBOX_OPEN&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Impression><Impression><![CDATA[https://track.loopme.me/sj/vt?vt=asdasc-12e-cx-asf3-23red]]></Impression><Impression id=\"Client Impression\"/><Creatives><Creative id=\"29553\" sequence=\"1\"><Linear skipoffset=\"00:00:15\"><Duration>00:00:30</Duration><TrackingEvents><Tracking event=\"start\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_STARTS&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_25&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://tk0x1.com/sj/tr?et=AD_VIEWABLE&name=25_percent_video&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_50&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_75&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"complete\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_COMPLETES&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"mute\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_MUTE&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"unmute\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_UNMUTE&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"pause\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_PAUSE&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"resume\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_RESUME&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"fullscreen\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_FULLSCREEN&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"exitFullscreen\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_EXIT_FULLSCREEN&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"skip\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_SKIP&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE&playtime=[CONTENTPLAYHEAD]]]></Tracking><Tracking event=\"progress\" offset=\"00:00:02\"><![CDATA[https://tk0x1.com/sj/tr?et=AD_VIEWABLE&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE&name=2_seconds_video]]></Tracking><Tracking event=\"progress\" offset=\"00:00:05\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_5SEC&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"progress\" offset=\"00:00:10\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_10SEC&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"progress\" offset=\"00:00:15\"><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_15SEC&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking><Tracking event=\"close\"><![CDATA[https://tk0x1.com/sj/tr?et=AD_CLOSE&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE&playtime=[CONTENTPLAYHEAD]]]></Tracking></TrackingEvents><VideoClicks><ClickThrough><![CDATA[https://tk0x1.com/sj/go/5a1dc8aeb571b0e4c9930677?meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE&lmhref=https%3A%2F%2Floopme.com&lmhref=https%3A%2F%2Floopme.com]]></ClickThrough><ClickTracking><![CDATA[https://tk0x1.com/sj/tr?et=VIDEO_CLICK&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE&playtime=[CONTENTPLAYHEAD]]]></ClickTracking><ClickTracking><![CDATA[https://tk0x1.com/sj/tr?et=CUSTOM&name=postback_click&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></ClickTracking></VideoClicks><MediaFiles><MediaFile id=\"29553\" delivery=\"progressive\" type=\"video/mp4\" bitrate=\"358\" width=\"640\" height=\"480\"><![CDATA[https://i.loopme.me/11e4070ef8b31209.mp4]]></MediaFile></MediaFiles></Linear></Creative><Creative id=\"29553\" sequence=\"1\"><CompanionAds><Companion width=\"1024\" height=\"748\"><StaticResource creativeType=\"image/jpeg\"><![CDATA[https://i.loopme.me/44c822d1eef05f23.jpg]]></StaticResource><TrackingEvents><Tracking event=\"creativeView\"><![CDATA[https://tk0x1.com/sj/tr?et=COMPANION_SHOW&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></Tracking></TrackingEvents><CompanionClickThrough><![CDATA[https://tk0x1.com/sj/go/5a1dc8aeb571b0e4c9930677?meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE&lmhref=https%3A%2F%2Floopme.com&lmhref=https%3A%2F%2Floopme.com]]></CompanionClickThrough><CompanionClickTracking><![CDATA[https://tk0x1.com/sj/tr?et=COMPANION_CLICK&id=5a1dc8aeb571b0e4c9930677&meta=Mjk1NTM6NzI4Njphc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQ&ctx=Chhhc2Rhc2MtMTJlLWN4LWFzZjMtMjNyZWQSAlVBGPY4IPHmASoECAMYAzE]]></CompanionClickTracking></Companion></CompanionAds></Creative></Creatives></InLine></Ad></VAST>",
                    "adomain": [
                        "google.com"
                    ],
                    "iurl": "https://i.loopme.me/44c822d1eef05f23.jpg",
                    "cid": "6029",
                    "crid": "29553",
                    "attr": [
                        6
                    ]
                }
            ]
        }
    ]
}

Object: SeatBid

Attribute Type Description
bid object array; required Array of bid objects with only one impression


Object: Bid

A SeatBid object contains one Bid object which relates to a specific impression in the request via the 'imp.id' attribute.

Attribute Type Description
id string; required LoopMe unique generated ad ID to assist with tracking
impid string; required LoopMe creative ID
adid string; required Creative ID to assist with ad quality checking
adm string; required Ad tag with LoopMe impression. XML for VAST/VPAID ads or HTML for other ad formats
adomain string array Advertiser domain for block list checking (e.g., “ford.com”)
iurl string; required URL to an image that is representative of the content of the campaign
cid string LoopMe advertiser Campaign ID to assist with ad quality checking
crid string Creative ID to assist with ad quality checking
attr integer array Set of attributes describing the creative. Refer to openRTB protocol v.2.3 (section 5.3 Creative Attributes)