Using the ton-upload script from https://github.com/twitterdev/ton-upload and the following arguments results in the following (edited)
ton_upload -m upload -b ta_partner -f ~/twitterTests/audience_hashed.txt -t
POST https://ton.twitter.com/1.1/ton/bucket/ta_partner HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: text/plain\r\nContent-Length: 212745\r\nX-Ton-Expires: Mon, 26 Oct 2015 13:41:59 GMT\r\nAuthorization: OAuth oauth_body_hash=\"{REDACTED}\", oauth_consumer_key=\"{REDACTED}\", oauth_nonce=\"{REDACTED}\", oauth_signature=\"{REDACTED}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445002919\", oauth_token=\"{REDACTED}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ton.twitter.com\r\n\r\n"
<- "1f9304bd3037d5a567bf167c4c21181aa44eaf9427e289dd372f4f201531b222\n{Data removed for brevity}"
-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-length: 0\r\n"
-> "content-type: text/plain\r\n"
-> "date: Fri, 16 Oct 2015 13:39:15 GMT\r\n"
-> "location: /1.1/ton/data/ta_partner/33267772/yV_nGa0VBpmCbDv.txt\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144500275493230462; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 13:39:15 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-connection-hash: e29c24d0abb965e3d46dce9f2fd3de40\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-rate-limit-limit: 50\r\n"
-> "x-rate-limit-remaining: 46\r\n"
-> "x-rate-limit-reset: 1445003596\r\n"
-> "x-response-time: 238\r\n"
-> "x-tsa-request-body-time: 358\r\n"
-> "\r\n"
reading 0 bytes...
-> ""
read 0 bytes
Conn close
File stored at /1.1/ton/data/ta_partner/33267772/yV_nGa0VBpmCbDv.txt
Next, via twurl we create the tailored audience:
twurl -H ads-api.twitter.com -X POST -d "name=audienceForDebug&list_type=TWITTER_ID" /0/accounts/jt1ks/tailored_audiences -t
trace follows (edited)
opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "POST /0/accounts/jt1ks/tailored_audiences HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{REDACTED}\", oauth_nonce=\"{REDACTED}\", oauth_signature=\"{REDACTED}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445003887\", oauth_token=\"{REDACTED}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 42\r\n\r\n"
<- "name=audienceForDebug&list_type=TWITTER_ID"
-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 295\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 13:55:22 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144500372266650009; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 13:55:22 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: 8571adc04a798e34acba348fa405f84a\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 300\r\n"
-> "x-rate-limit-remaining: 299\r\n"
-> "x-rate-limit-reset: 1445003782\r\n"
-> "x-response-time: 37\r\n"
-> "x-runtime: 0.026809\r\n"
-> "x-transaction: 65d0b1d2d2b6f075\r\n"
-> "x-tsa-request-body-time: 0\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 295 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00t\x90\xCDN\x840\x14\x85\xDF\xA5k&\x99\xA2\xB8\xE8\xCE\x00*\t#\x060\x1A'\xA6\xE9@\x9D\xA0\xA5\xC5\xFE\x98\x8C\x13\xDE\xDD[\f\xE8\x86\xDDm\xEEwN\xEF9g\xD42\xCB\xA8=\r\x1C\x11dY'\x94\xE6-e\xAE\xED\xB8l\xB8A\xC1\x04 r\x86\xA5>r\xCB\x0E\x02\xC87&\f\x0F\x90d\xBD\x97\xCD\xF4\x8D\xD2\t?\xB8#\x88\xFE\xE0\xC9\xDB \xB2Gq\xB9\x83M\xFA\x1C\xE7\x8FI\x9AP\xFF|\r\x16\xF1|\xC3/\xD5\xB50\x9Ez\xF3\x05\xB3\xE6\xCC(i\xA8T\x96\xFE?b\x8F\x1E\xCA\"N\xAB*\xBB\xBF\x05\xAC.\nZ\xED\xAE\xF3\xDC\xBB\x8A\xCE\xD8\xD9\xB1~\xCA\xEA:-i\x96\x00\xD5\x80\x9B\xF5\t-l\xC2-\x8E6x\xBB\xC1W5\xBE \xD1%\xC1\xF8\x05\x187\xB4\xABLD\xC2\xD03\x03\xD3VrM\x8Dr\xBA\xF1\xBF\x14\xF5]Z\xFA\xBA\xB8\xE0 ^:Z\xF2\x99\xEE\e8\xE9\x84\x18}\xA6O\xC7\x8D\xF5\xBD\x82\x13\xEB\x8D\x9FX\xD3('-\x9D\xC2\xBF[\xFC\xE1\xEB_\xEFx%\xE38\x8E?\x00\x00\x00\xFF\xFF\x03\x00\x03\xEE\x85\xF1\xD6\x01\x00\x00"
{"data_type":"tailored_audiences","data":{"targetable":false,"name":"audienceForDebug","targetable_types":["CRM","EXCLUDED_CRM"],"audience_type":"CRM","id":"ymsv","reasons_not_targetable":["PROCESSING","TOO_SMALL"],"list_type":"TWITTER_ID","created_at":"2015-10-16T13:54:11Z","updated_at":"2015-10-16T13:55:22Z","partner_source":"OTHER","deleted":false,"audience_size":null},"request":{"params":{"account_id":"jt1ks","name":"audienceForDebug","list_type":"TWITTER_ID"}}}read 295 bytes
Conn close
Adding the uploaded file to the new audience via twurl:
twurl -H ads-api.twitter.com -X POST -d "tailored_audience_id=ymsv&operation=ADD&input_file_path=/1.1/ton/data/ta_partner/33267772/yV_nGa0VBpmCbDv.txt" /0/accounts/jt1ks/tailored_audience_changes -t
results in: (edited)
opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "POST /0/accounts/jt1ks/tailored_audience_changes HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{REDACTED}\", oauth_nonce=\"{REDACTED}\", oauth_signature=\"{REDACTED}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445004296\", oauth_token=\"{REDACTED}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 121\r\n\r\n"
<- "tailored_audience_id=ymsv&operation=ADD&input_file_path=%2F1.1%2Fton%2Fdata%2Fta_partner%2F33267772%2FyV_nGa0VBpmCbDv.txt"
-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 216\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 14:02:11 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144500413146701454; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 14:02:11 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: b585c71d24980293d392e2f70a85ac95\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 300\r\n"
-> "x-rate-limit-remaining: 299\r\n"
-> "x-rate-limit-reset: 1445004191\r\n"
-> "x-response-time: 50\r\n"
-> "x-runtime: 0.042466\r\n"
-> "x-transaction: 23fd034569d3b5c9\r\n"
-> "x-tsa-request-body-time: 1\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 216 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00\xA4\x8F1\v\xC2@\f\x85\xFFK\xE6b\xB5\x82\x057\xB5\xE2\xA2\xE8 N\x85#\xB6QO\xDB\xEBy\x97\x8AE\xFA\xDFMuSpq{\xBC$\xEF}y@\x8E\x8C\x8A\eK0\x06F]T\x8Er\x85u\xAE\xC9d\xA4\xB2\x13\x9A#A\xF0Z\x83\xF1\x03\xB4\xB15\xAB\x83.HY\xE4\x93\x1C\xA5\xA1\x04Xtl\xC8\xA5\xE1p\x18\x8D\xE28\x8E\xD2\xB0\xD9)\xB3\xC0\xFEnj\xCB\xD9>\xB9\xF5\xF8\xCE\x92\xF3]\xA1s\tiJ\x7F\x93\xA9g\xE4\x0Ed\xB6^m\x96\xF3\xED<\x11\xEF5/\x8E\x91\x17]Yr\xC8\xBA2bM\x92\x04\xDA\x00\x1C]k\xF2\xDC\xB1\t\x04\x96\xBES\xBF[\xFE\xFD\xE1\x93\"\x00\xCC\xB2\xAA6\xFCn9\xF3\xE0\xE2\xA1m\xDB'\x00\x00\x00\xFF\xFF\x03\x00\xC4\x97\xAC\x80]\x01\x00\x00"
{"data_type":"tailored_audience_change","data":{"input_file_path":"\/ta_partner\/33267772\/yV_nGa0VBpmCbDv.txt","tailored_audience_id":"ymsv","state":"COMPLETED","id":"lg2s","operation":"ADD"},"request":{"params":{"tailored_audience_id":"ymsv","input_file_path":"\/ta_partner\/33267772\/yV_nGa0VBpmCbDv.txt","operation":"ADD","account_id":"jt1ks"}}}read 216 bytes
Conn close
Immediately after the add we check it’s status via twurl and it shows as completed:
twurl -H ads-api.twitter.com -X GET /0/accounts/jt1ks/tailored_audience_changes/lg2s -t
opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "GET /0/accounts/jt1ks/tailored_audience_changes/lg2s HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{REDACTED}\", oauth_nonce=\"{REDACTED}\", oauth_signature=\"9cbhyglDVxgia8kg%2F3oy0mHFN4A%3D\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445004641\", oauth_token=\"{REDACTED}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 0\r\n\r\n"
<- ""
-> "HTTP/1.1 200 OK\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 211\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 14:07:56 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144500447618649929; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 14:07:56 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: 046e269ff3620a51aaab2784d8ab53aa\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 2000\r\n"
-> "x-rate-limit-remaining: 1998\r\n"
-> "x-rate-limit-reset: 1445005346\r\n"
-> "x-response-time: 25\r\n"
-> "x-runtime: 0.014434\r\n"
-> "x-transaction: c1e9c21dc3366355\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 211 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00t\x8F\xC1\n\xC2@\fD\xFF%g\xB1Z\xC1Boj\xC5\x8B\xA2\a\xF1TXb\eu\xB5\xDD\xAE\xBBi\xB1H\xFF\xDDT/\x82x\ef\x92\x97\xC9\x13rdT\xDCZ\x82\x18\x18uQ9\xCA\x15\xD6\xB9&\x93\x91\xCA.h\xCE\x04\x83\xF7\x18\xC4O\xD0\xC6\xD6\xACN\xBA e\x91/\xB2\x94\x06\x02\xB0\xE8\xD8\x90K\x83\xC9$\x9CFQ\x14\xA6A{Pf\x85\xA3\xC3\xDC\x96\x8Bc\xD2\f\xF9\xC1\xC2\xF9=\xA1s\x81\xB4\xA5o$\xF5\x8C\xDC\x17Yl7\xBB\xF5r\xBFL\xC4{\xE7\xC59\xF4\xA2+K\x0EYWF\xACY\x92@7\x00G\xF7\x9A<\xF7\xDD\xA4\x04\x96\xBEW\xFF\x1EQ\xDF0\xCC\xB2\xAA6\xFC\xF1\xAE<\xBEy\xE8\xBA\xEE\x05\x00\x00\xFF\xFF\x03\x00\\.$\xB9\x12\x01\x00\x00"
{"data_type":"tailored_audience_change","data":{"input_file_path":"\/ta_partner\/33267772\/yV_nGa0VBpmCbDv.txt","tailored_audience_id":"ymsv","state":"COMPLETED","id":"lg2s","operation":"ADD"},"request":{"params":{"tailored_audience_change_id":"lg2s","account_id":"jt1ks"}}}read 211 bytes
Conn close
Please let me know if we’re doing anything wrong.