Neurotic Media’s Neurolinq™ API Services

  • Release date: 2014
  • Update date: 06/26/2014
  • Version: v4.0
  • Print →
Get API Key

Contact Neurolinq Support | Print API Doc
© Copyright 2001-2014 Neurotic Media LLC.

Neurotic Media’s Neurolinq™ API Services

This guide is designed to provide detailed instruction and samples on using Neurotic Media’s Neurolinq™ API Services. Our API Services enable developers to weave Neurotic Media’s services in whole or in part into sites, applications and widgets. It enables you as a Neurotic Media customer to merchandize digital products on your own site together with other products you sell. You may process consumers through your own checkout process and then place a Web services call to NeuroLinq™ for file delivery. NeuroLinq™ then delivers the product to your consumer seamlessly.


Neurotic Media operates the digital content business behind the scenes – by addressing content owner licensing, weekly reporting, and royalty reconciliation and payments, allowing you to keep focused on your core business. While you serve song samples and album images from our CDN services, your consumers, shoppers and fans would never know we existed – since you remain in control of the entire consumer experience. The download and streaming activity itself can flow through your own user experience (UX) as well.

Neurolinq™ API Services can empower a plethora of business models and concepts, including:

  • Music download sales
  • Music download rewards and incentives
  • Music download promotions
  • Music Locker services
  • Music subscription services
  • Music streaming services

Pre-licensed content can be included in the service, or you may work with content owners directly on licenses and payments while we serve as your technical platform. Contact us to discuss specifics about the business models you seek to explore. Irrespective of how you address content licensing issues, Neurotic Media can act as your technology and operations partners with respect to delivery.

What you essentially "outsource" by partnering with Neurotic Media and using Neurolinq™ API Services includes:

  • Content licensing and approval process (excludes streaming models, which you need to license yourself with labels and publishers)
  • Content ingestion (receiving millions of songs, addressing daily, constant ingestion and data normalization)
  • Content storage (multi-terabytes stored redundantly in the cloud)
  • Databases and platform maintenance
  • Content delivery services and CDN (includes the UITS requirement)
  • Reporting services (daily, weekly, monthly as the case may be)
  • Merchandising and promotions (optional)
  • Customer service (optional)

In total, this translates to a lot of cost savings, reduced R&D risk, and improved time to market.


To move forward, follow up with your Neurotic Media contact to set up a technical and business discussion(s), or ping us with questions at hello@neuroticmedia.com.

Neurolinq™ API – General Use Case

The following use case illustrates a typical Merchant interaction with NeuroLinq™ API Services.

Assumptions:

  • Merchant has established relationship with Neurotic Media (signed our Agreement and has been approved as a Merchant by X labels), or directly with Content Provider(s) represented in our platform.
  • The Merchant has a web service (may it be a widget, mobile application, or web site), potentially with an ecommerce engine (NOTE: if you do not have an ecommerce engine, you may use NeuroLinq Checkout to process sales), or with reward point redemption services, subscription services, advertising services, or other means of generating revenue.
  • The Merchant has either (A) populated their storefront catalog with product details exported from NeuroLinq Products, including product images and preview links; and/or (B) has decided to integrate our light, RESTful API services into their site, app or widget to source catalog information that way.
  • The Merchant has populated their storefront with supplemental metadata and retail pricing information and/or real estate designed to display same when light calls are made to our system to fetch specific data.
  • The Merchant is authorized to sell, stream or offer the products in another pre-authorized business model (e.g., valid sale dates), as the case may be, by Neurotic Media and/or the relevant Content Provider(s).

The typical Merchant use case is as follows:

  • The consumer (end user) views the Merchant’s site/store/app/widget; search, discover, and preview products; and selects a download or stream for ordering. Previews and album images are displayed pulling from Neurolinq™ CDN service links.
  • The transaction is processed (if e-commerce, normally through the Merchant’s ecommerce engine) and recorded by Neurotic Media (properly tracking the business type involved in each transaction)
  • The Merchant’s back-end service calls NeuroLinq™ API service to invoke file delivery via a secure Web Service request.
  • The file location(s) is/are passed to the client for download or stream, as the case may be. Specific file format determination may be made based on end user device and browser (applicable to steaming and to mobile delivery).
  • Online Merchants have the option to invoke Neurotic Media’s Download Manager to allow the latter to handle the download process. Conversely, Merchants can create their own download managers or workflow and take over the user experience from here.

Implementation Guidelines

  1. Consumer Data Submission:

    1. Zip code is required: Neurotic Media requires that you submit the consumer's zip code and the product retail price though the API for all Orders and Consumers. There's a separate tax field to submit collected sales taxes through (collection should be based on your business "tax nexus" if you are managing your own shopping cart and merchant banking). This allows us to properly report to certain entities based on standard business obligations.

    2. Consumer's personal data is not required: You do not have to submit personal consumer data through the NeuroLinq™ API Service. However, we recommend you pass at least a username (email address) so that Neurotic Media can address Customer Care inquiries for you and locate consumer records in our CRM based on email address. This provides us visibility to certain technical difficulties a consumer may have encountered so that we can better serve their needs.

    3. Email receipt services are optional: If you submit email addresses through the API to our system, our system will generate daily Receipts and email those to your shoppers (only in the case of a monetary transaction). Therefore, if you desire for Neurotic Media to email the receipts to your consumers, submit the correct consumer email address as their UserName. However, if you do not desire this and rather handle your own receipt mail-outs, then the simple solution is to add an odd character to the real consumer email address. For example, you can add “~” priori to every email address you pass to us, i.e. usename@site.com. Doing so both allows Neurotic Media to locate consumer records with an email address (as outlined in paragraph b above) while preventing the system from generating outgoing receipt emails.
       
  2. File formats: We offer music primarily in high resolution, 320kpbs MP3. We also have 64kbps aacPlus version of all files, which is geared towards mobile delivery. In addition, we are capable to render Ogg Vorbis and other formats using our transcoder, upon request. All files are none-encrypted, no DRM files; however, for certain applications we can and do add various levels of encryption to our delivery.

  3. Territory: Neurotic Media applies territorial restrictions to file downloads based on the consumer's IP address. If you transact with a person that’s located overseas, their download attempt will be blocked. To reduce customer service issues and consumer frustration, we highly recommend you gate yourself on the forefront accordingly too.

    Remember that in each territory we'd hand over a different API KeyID and the catalog and all related pricing tables will be different for each country.

  4. 30-second song previews and album images can only be used by you on your sites and applications in conjunction with products being merchandised for sale. You are not allowed to use our clips and previous in any other manner, unless we allow otherwise in writing.

  5. Creating a "My History" page in your service: We highly recommend that you create a "My History" or "My Downloads" section in your site, widget or applications, where you can expose download links to consumers if their original download was somehow interrupted. Neurotic Media tracks the completion of each download file by size and once it has been downloaded 100% twice it will no longer be made available to the consumer. If the download was interrupted and it failed to complete, it will remain available. Consumers can then visit the history section to retrieve such files.

  6. Creating a "My Locker" page in your service: The abovementioned issue may also be simply resolved on a My Locker service page if you have been approved by content owner to offer a Purchased Content Locker. In such cases, all API delivery calls from this page will be Locker calls and not regular product delivery calls.

  7. Customer Care Methods: We allow flashing a file' status to allow redelivery. This is available for your CRM reps to do in our platform’s admin (involves training on our admin). Conversely, we can offer an API call that allows your system to post such specifics to us as needed.

  8. Displaying download progression: Displaying download progression: If you elect to build a download management method on your own consumer interface, and provide a progression percentage bar, NeuroLinq™ provides you with a method of displaying accurate progression. Our order API service call returns include each file’s size in Bites. You can use this to track the throttling of the downloaded file through your own user interface, and display the download progress in percentages.

  9. Using our download managers: We offer a .Net (PC)/Cocoa (Mac) Download Manager for optional use. This download manager allows auto-synch to iTunes and to Windows Media Player. You will find a dedicated section about this download manager later in this document, guiding you with how to take advantage of it via API calls.

  10. Naming Conventions: The content providers do not follow the same guidelines when it comes to artist naming convention, IDs, and other portions of the metadata and the pricing. As a result, expect to find inconsistencies in the data you receive, which Neurotic Media is not always in liberty to correct programmatically. If you find what seems to be problems in metadata and files, please bring such occurrences to our attention (to service at neuroticmedia.com) and we will address such cases with the respective content owner.

  11. Products can be set for the following:
    1. Active and sellable: Simply sellable product
    2. Active but not sellable: If this is an item, it may be available "with album only"; if this is a bundle, it may be that some or all of its tracks are separately sellable but we are not allowed to sell the bundle for a bundle price (typical for compilations where for example, only 7 of 12 tracks are sellable, we obviously would not offer the album for standard pricing sale when it would involve a partial album delivery)

    Label pricing is sometimes not logical and definitely inconsistent. For example, a bundle might have ten tracks at $0.99 SRP each, but the bundle album might be priced at $12.99 instead of the sum of all singles, simply because the label had to match the "CD price".

  12. Pre-Order with Instant Gratification ("Instant Grat"): This feature enables content owners to create products with a mix of asset types which are delivered to customers at different times. There are two elements of this feature:

    Pre- Order: Shoppers can purchase an album before the Street Date. The product will become available for download on the Street Date.

    Instant Gratification: As a reward for the pre-order, shoppers are given immediate access to bonus assets -- most often it is to a single or two from the album ahead of album street date (in other words, an MP3 or two, but other files can also be offered such as video, PDF lyrics, JPEG wallpaper etc.). The instant gratification song(s) is available automatically upon payment for the album.

    Typical Use Case:

    • The Consumer views the Merchant’s catalog and selects a Pre-Order product.
    • The transaction is processed the Merchant’s eCommerce engine (or through NeuroLinq™ API calls).
    • The Merchant’s back-end service calls NeuroLinq™ API for Web Service order process, i.e. (i) Creates the ConsumerID, (ii) Creates the OrderID with the ProductID, and (iii) requests delivery and (iv) gets the URLS for BOTH the “instant gratification” track(s) AND the tracks that will be available later, on Street Date (accompanied by that Street Date as detailed below).
    • The download locations for the Instant Gratification item(s) are passed to the client. The Instant Gratification item is immediately available for download and later play.
    • When the Street Date of the album arrives, Neurotic Media’s system will automatically generate an email notifying consumers that the download link is now active for download and later play. This email will invite the consumer to login to the Merchant’s store and visit their "My History" page where a link to download the pre-ordered Product will now be active (this happens at street date / midnight EST). Here is the standard copy we use – if you are choosing to handle your own consumer-facing emails, you’re welcome to use this to generate your own equivalent notices:

Subject: Your Pre-ordered items are now available.

Thank you for your purchase user@name.com,

Your pre-ordered album has been released and is now available for you to download. Please log into the store and go to your My History page. You will be able to click and download the album.

Product: Name of Album

WebSite: http://www.YourStore.com


If you have questions or problems with your download please open a support ticket.


Thanks, Customer Care.

Catalog Services

We offer two methods by which a customer can access our catalog data. These methods address two very unique business strategies and technical implementation strategies, and you are welcome to decide which one is right for you. You may even decide to use both, each for certain specific functionalities you want to establish in your own systems.

  • Method A: Product Catalog Export. With the export method (XML SOAP), you obtain entire catalog metadata to host in your own DB, which you may weave into your own search service and into your CMS. Services enable you to host a customized subset of our digital product metadata that has been provisioned uniquely for you. This has been the preferred method for retailers who cross-merchandise digital music with other products. It is a "server-to-server" functionality, and you will need to develop significant capabilities on your servers in order to communicate with our Neurolinq™ API Services. Merchants receive an initial “catalog export” data dump of significant size. Merchants then pull a catalog DB delta file on a daily basis to update their digital catalog DB with changes.
  • Method B: Search Services. Using an item-specific search method (XML SOAP + JSON), Merchants use as-needed light search calls that return light payloads. This is perfect for web sites, widgets and apps, and allows you to construct search result pages on the fly using our payload. Each Service call will include the appropriate URL and code for making system requests in an approximately RESTful manner. These calls can support server to server or client to server (in the case of a mobile app or even an AJAX request on a web site directly to our servers – we do offer CORS support) calls into the digital catalogs on our system. Instead of installing and hosting a metadata catalog of all digital products – or obtaining daily delta files (Method A), Merchants can just make a light call for the specific data they require in each unique instance. It should be noted that REST methods return their data in the JSON format.

Method A: Product Catalog Export

The Product Catalog Exports is the service that enables Merchants to retrieve a list of authorized products. This list could be a complete catalog (catalog of all policies to all Content Owners’ products the Merchant has a relationship with or has been authorized by the content owners and Neurotic Media to sell). This list could also be filtered by a single or group of filters, causing the export responses to return a catalog for one Content Owner’s products, a specific group of catalogs, or filtered by genres, labels, artists or products, including both "inclusions" and "exclusion". The response will be returned in multiple zipped exports, as indicated below.

Since some of the zipped files will be rather large, Neurotic Media personnel will deliver those to you early on in your onboarding process. Files will be divided into several ZIP exports that are partitioned into multiple files. When a specific exported ZIP is partitioned, you need to re-assemble that specific exported data.

Description
There are a total of six main export files to "get" in the beginning of the implementation process:

1) Four core DB Exports are provided:

  • Artist_export - export artist data
  • Bundle_export - export Bundle (albums, etc.) data
  • Product_export - export Product (Tracks, or Items etc.) data
  • Sample_export - export URLs to 30-second preview clips

2) As well as four supplementary files:

  • productSubType_export
  • productType_export

Each one of these methods takes in an API Key which is unique to your store.

The return value is the actual data in a zipped XML file (or multiple file partitions, each a 100MB or smaller file size). The XML inside the zip file will follow the schema of whichever method you chose to run (we offer SOAP, HTTP Get, and HTTP Post).

To view the file once extracted, right click on the file and choose open or open with and pick Internet Explorer. All of the necessary data should be broken down into XML according to the above schemas. Note: Some of these files are extremely large and might take a long time to open.

Neurotic Media will provide you with your initial file exports, and moving forward you can use the methods described below to obtain your updates, which we recommend you pull every Monday afternoon for “new music Tuesday” deployments.

However, if you attempt to obtain such exports yourself, note that all the export calls run in an asynchronous manner. You have to make the initial call, and then wait 1 hour before requesting the zip file.

DAILY OR WEEKLY UPDATE FILES:
The other four methods export the desired catalog change set from a given date:

  • Artist_export_since_date
  • Bundle_export_since_date
  • Product_export_since_date
  • Sample_export_since_date

These change set files should be used and queried against the customer database for new or updated information. For example, once the initial catalog has been imported and these change sets are downloaded, there are two options for proceeding. One, all IDs in the change set must be compared to the database to see if they exist, and if they do update the necessary fields. Every other record must be added to the database once the update completes. The second method is to delete all ID’s from the database that exist in the change set and re-add them to guarantee the most current information we have for all fields and records. To handle products that have been deleted we simply mark them as IsActive="0".

Each one of these methods takes in an APIKey and a Date in the form of MM/DD/YYYY. You should be able to pass in an APIKey GUID and a date such as 3/15/2009. This will give you back a response in the form of a Simple Message. The return value of this message will be a link to a zip file containing all the artists for a particular shop that have been added or changed since March 15 2009. We recommend you automate daily change updates so you can capture last minute changes, deletions and additions.

This Simple Message has a schema located at
https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd

The return value is the actual data in a zipped XML file. To access this file just copy and paste the return value into the address bar and download and extract the zip file. The XML inside the zip file will follow the schema of whichever method you chose to run.

Artist_export and Artist_export_since_date
https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ArtistInfoResponse.xsd

Bundle_export and Bundle_export_since_date
https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/BundleInfoResponse.xsd

Product_export and Product_export_since_date
https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductInfoResponse.xsd

Sample_export and Sample_export_since_date
https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/SampleInfoResponse.xsd

 

Examples:
Here are examples for how each method URL string should be built. Use “&Date=MM//DD/YY”

Artist_export_since_date
https://securegate.nmp.neuroticmedia.net/WebServices/CatalogService.asmx/artist_export_since_date?APIKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&Date=9/17/07

Bundle_export_since_date
https://securegate.nmp.neuroticmedia.net/WebServices/CatalogService.asmx/bundle_export_since_date?APIKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&Date=9/17/07

Product_export_since_date
https://securegate.nmp.neuroticmedia.net/WebServices/CatalogService.asmx/product_export_since_date?APIKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&Date=9/17/07

Sample_export_since_date
https://securegate.nmp.neuroticmedia.net/WebServices/CatalogService.asmx/sample_export_since_date?APIKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&Date=9/17/07

The rest of the exports are not store-specific but rather system-wise exports, obtained as follows:

productSubType_export: https://securegate.nmp.neuroticmedia.net/webservices/catalogservice.asmx/productSubType_export
productType_export: https://securegate.nmp.neuroticmedia.net/webservices/catalogservice.asmx/productType_export

The various Requests follow on upcoming pages*:
* These are included here for reference; to get the latest specs go to https://securegate.nmp.neuroticmedia.net/WebServices/CatalogService.asmx

 

Technical Notes:
In the case of the Product Export API calls, you cannot use the auto forms provided, they will not work because the responses popup window will be http:// not https:// as it needs to be. To do manual / test entries, you can utilize the HTTP GET method as illustrated in the examples below.

  • The method names (at the very end) ARE case sensitive.

  • All fields of data types other than “strings” have a corresponding “Specified” field which is a Boolean type. This “Specified” field must be set to true for the actual value to be passed in. The most common example is a field the Secure Web Services such as CustomerCreate name RequestID. The corresponding “Specified” field is named RequestIDSpecified and must be set to true for the value to be passed on.

  • When you export our Catalog Exports for inclusion in a DB on your end, use a simple parser. Note that you’ll want to load the files into memory, and parse or format only parts of the files and incrementally load arrays into the database and then clear out what has just been loaded to free up ram, even if its 10 tracks or whatever at a time. There’s no reason to try and parse and format the entire file at once and then do one giant db load. You can find a simple parser by searching the web for “xml+php+parser+stream+expat” – this is just one example that streams through the files, and adds product elements to the DB. Depending on your backend, you may be able to use SSIS for SQL Server 2005. Or, .NET has XML Serializers and Deserializers that can be uses to create and consume the data based on the XSD. Or, as mentioned above, just search for an expat parser that is “event” driven, so as it parses the file, each product element can fire an event that adds/updates that product in your DB. This means you are only processing a very small chunk of the file at a time.

artist_export_since_date

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1
Host: securegate.nmp.neuroticmedia.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://securegate.nmp.neuroticmedia.net/WebServices/artist_export_since_date"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<artist_export_since_date xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<APIKey>string</APIKey>
<Date>string</Date>
</artist_export_since_date>
</soap:Body>
</soap:Envelope> HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<artist_export_since_dateResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<artist_export_since_dateResult
xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</artist_export_since_dateResult>
</artist_export_since_dateResponse>
</soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<artist_export_since_date xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<APIKey>string</APIKey>
<Date>string</Date>
</artist_export_since_date>
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<artist_export_since_dateResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<artist_export_since_dateResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</artist_export_since_dateResult>
</artist_export_since_dateResponse>
</soap12:Body>
</soap12:Envelope>

 

HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /WebServices/CatalogService.asmx/artist_export_since_date?APIKey=string&Date=string
HTTP/1.1 Host: securegate.nmp.neuroticmedia.net
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

 

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx/artist_export_since_date HTTP/1.1
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

APIKey=string&Date=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

bundle_export_since_date

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1
Host: securegate.nmp.neuroticmedia.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://securegate.nmp.neuroticmedia.net/WebServices/bundle_export_since_date"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<bundle_export_since_date xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<APIKey>string</APIKey>
<Date>string</Date>
</bundle_export_since_date>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<bundle_export_since_dateResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<bundle_export_since_dateResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</bundle_export_since_dateResult>
</bundle_export_since_dateResponse>
</soap:Body>
</soap:Envelope>


SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<bundle_export_since_date xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<APIKey>string</APIKey>
<Date>string</Date>
</bundle_export_since_date>
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<bundle_export_since_dateResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<bundle_export_since_dateResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</bundle_export_since_dateResult>
</bundle_export_since_dateResponse>
</soap12:Body>
</soap12:Envelope>


HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /WebServices/CatalogService.asmx/bundle_export_since_date?APIKey=string&Date=string HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx/bundle_export_since_date HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

APIKey=string&Date=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

productSubType_export

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://securegate.nmp.neuroticmedia.net/WebServices/productSubType_export"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<productSubType_export xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/" /> </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<productSubType_exportResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<productSubType_exportResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductSubTypeInfoResponse.xsd">
<ProductSubType_data>
<ProductSubType ProductSubTypeName="string" ProductSubTypeID="string">
<ProductTypeID>string</ProductTypeID>
</ProductSubType>
<ProductSubType ProductSubTypeName="string" ProductSubTypeID="string">
<ProductTypeID>string</ProductTypeID>
</ProductSubType>
</ProductSubType_data>
</productSubType_exportResult>
</productSubType_exportResponse>
</soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<productSubType_export xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/" />
</soap12:Body>
</soap12:Envelope>

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<productSubType_exportResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<productSubType_exportResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductSubTypeInfoResponse.xsd">
<ProductSubType_data>
<ProductSubType ProductSubTypeName="string" ProductSubTypeID="string">
<ProductTypeID>string</ProductTypeID>
</ProductSubType>
<ProductSubType ProductSubTypeName="string" ProductSubTypeID="string">
<ProductTypeID>string</ProductTypeID>
</ProductSubType>
</ProductSubType_data>
</productSubType_exportResult>
</productSubType_exportResponse>
</soap12:Body>
</soap12:Envelope>

HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /WebServices/CatalogService.asmx/productSubType_export? HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<ProductSubTypeResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductSubTypeInfoResponse.xsd">
<ProductSubType_data>
<ProductSubType ProductSubTypeName="string" ProductSubTypeID="string">
<ProductTypeID>string</ProductTypeID>
</ProductSubType>
<ProductSubType ProductSubTypeName="string" ProductSubTypeID="string">
<ProductTypeID>string</ProductTypeID>
</ProductSubType>
</ProductSubType_data>
</ProductSubTypeResponse>

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx/productSubType_export HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<ProductSubTypeResponse
xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductSubTypeInfoRespons
e.xsd">
<ProductSubType_data>
<ProductSubType ProductSubTypeName="string" ProductSubTypeID="string">
<ProductTypeID>string</ProductTypeID>
</ProductSubType>
<ProductSubType ProductSubTypeName="string" ProductSubTypeID="string">
<ProductTypeID>string</ProductTypeID>
</ProductSubType>
</ProductSubType_data>
</ProductSubTypeResponse>

productType_export

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://securegate.nmp.neuroticmedia.net/WebServices/productType_export"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<productType_export xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/" />
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<productType_exportResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<productType_exportResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductTypeInfoResponse.xsd">
<ProductType_data>
<ProductType ProductTypeName="string" ProductTypeID="string" />
<ProductType ProductTypeName="string" ProductTypeID="string" />
</ProductType_data>
</productType_exportResult>
</productType_exportResponse>
</soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<productType_export xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/" />
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<productType_exportResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<productType_exportResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductTypeInfoResponse.xsd">
<ProductType_data>
<ProductType ProductTypeName="string" ProductTypeID="string" />
<ProductType ProductTypeName="string" ProductTypeID="string" />
</ProductType_data>
</productType_exportResult>
</productType_exportResponse>
</soap12:Body>
</soap12:Envelope>

HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /WebServices/CatalogService.asmx/productType_export? HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<ProductTypeResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductTypeInfoResponse.xsd">
<ProductType_data>
<ProductType ProductTypeName="string" ProductTypeID="string" />
<ProductType ProductTypeName="string" ProductTypeID="string" />
</ProductType_data>
</ProductTypeResponse>

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx/productType_export HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<ProductTypeResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses2/ProductTypeInfoResponse.xsd">
<ProductType_data>
<ProductType ProductTypeName="string" ProductTypeID="string" />
<ProductType ProductTypeName="string" ProductTypeID="string" />
</ProductType_data>
</ProductTypeResponse>

product_export_since_date

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://securegate.nmp.neuroticmedia.net/WebServices/product_export_since_date"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<product_export_since_date xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<APIKey>string</APIKey>
<Date>string</Date>
</product_export_since_date>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<product_export_since_dateResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<product_export_since_dateResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</product_export_since_dateResult>
</product_export_since_dateResponse>
</soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<product_export_since_date xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<APIKey>string</APIKey>
<Date>string</Date>
</product_export_since_date>
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<product_export_since_dateResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<product_export_since_dateResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</product_export_since_dateResult>
</product_export_since_dateResponse>
</soap12:Body>
</soap12:Envelope>


HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /WebServices/CatalogService.asmx/product_export_since_date?APIKey=string&Date=string HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>


HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx/product_export_since_date HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

APIKey=string&Date=string
HTTP/1.1 200 OK C
ontent-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx/product_export_since_date HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

APIKey=string&Date=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

sample_export_since_date

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values. 

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: text/xml; charset=utf-8
Content-Length: length

SOAPAction: "https://securegate.nmp.neuroticmedia.net/WebServices/sample_export_since_date"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<sample_export_since_date xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<APIKey>string</APIKey>
<Date>string</Date>
</sample_export_since_date>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<sample_export_since_dateResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<sample_export_since_dateResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd"> <SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</sample_export_since_dateResult>
</sample_export_since_dateResponse>
</soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx HTTP/1.1 
Host: securegate.nmp.neuroticmedia.net
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<sample_export_since_date xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<APIKey>string</APIKey>
<Date>string</Date>
</sample_export_since_date>
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length


<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<sample_export_since_dateResponse xmlns="https://securegate.nmp.neuroticmedia.net/WebServices/">
<sample_export_since_dateResult xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd"> <SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</sample_export_since_dateResult>
</sample_export_since_dateResponse>
</soap12:Body>
</soap12:Envelope>

HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /WebServices/CatalogService.asmx/sample_export_since_date?APIKey=string&Date=string 
HTTP/1.1
Host: securegate.nmp.neuroticmedia.net
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /WebServices/CatalogService.asmx/sample_export_since_date 
HTTP/1.1 Host: securegate.nmp.neuroticmedia.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

APIKey=string&Date=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SimpleResponse xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
<SimpleResponse_data>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
<Message>
<ReturnValue>string</ReturnValue>
<ErrorMessage>string</ErrorMessage>
<ResponseCode>int</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

Parameters:

Note that our data format is UTF-8.

Name Type Description
ArtistID String GUIDs are char(36) or UNIQUEIDENTIFIER in MS SQL
Artist Name String We store the first 256 characters of artist names.
ProductID String GUIDs are char(36) or UNIQUEIDENTIFIER in MS SQL
ParentID String Parent ID to a product is the Bundle’s Product ID, the album. GUIDs are char(36) or UNIQUEIDENTIFIER in MS SQL.
StartDate and EndDate Int This will indicate when a Product is going live (midnight of the date stated - i.e. 00:00:00) and, if and when applicable, when is it to be removed (midnight of the date stated).
IsActive String Yes means the product is active. If no, the product may not be used, it is inactive and should not be displayed or sold.
IsSellable String Yes means the product can be uniquely sold. For example, say you have a bundle/album with 12 tracks, they are all active, but only ten are IsSellable and the last two are not sellable. We display this with replacing the price button with the text “w/ album only” – because the album/bundle is its own product, and if the non-sellable tracks are active, they will be sold/delivered within the album. Conversely, you can have an album where the album is not sold for a package price of $9.99 because it is “not sellable” – but all of its 12 tracks are independently sellable for $0.99 each. 
AMGID String An alpha-numeric AMG ID.
ISRC String An alpha-numeric Product ID – unique per song (international convention).
IsEdited String Product is Edited version - make sure to note this in the row displaying the product. Add on comment – some labels only flag the album as edited and explicit and we don’t know if specific tracks are explicit or not, some go down to the track level.
IsExplicit String Product is Explicit - make sure to note this in the row displaying the product, as well as display Parental Advisory JPEG near the bundle info.
LabelCreatedDate String When the label created the digital product. You’ll notice sometimes that for oldies, the digital product was created, well, obviously in the last decade or so, sometimes driven by re-releases. It is the date the label gives us as their internal digital copy creation date (remember digital albums have a unique UPC from the physical CD).
ProductTypeID String See export at https://securegate.nmp.neuroticmedia.net/webservices/catalogservice.asmx/productType_export 
ProductSubTypeID String See export at https://securegate.nmp.neuroticmedia.net/webservices/catalogservice.asmx/productSubType_export
LongDescription Text A sentence or paragraph describing the product which can be displayed in the store's front end. There is no limit in our system for this text field.
TrackNum String The number of the track on the CD.
ComponentNum String When an album came off of a multi-CD package, the Component tracks the CD it came from, as in CD2, CD3, etc. Use this+track number to figure out how to display all tracks for a multi-CD album. The Bundle level tells you the number of Components and the total number of tracks.
FormatID String Such as WMA and MP3, WMV and M4V.
Format String You can ignore the Format here. It is used by us to help differentiate between WMA and MP3 Bundles.
Catalog String The Catalog owner name, an umbrella group – such as RedEye, EMI, WMG, UMG, SonyBMG, or Independent (the latter is a catch-all we use for small indies who come to us directly)
Copyright String The Copyright Line provided by the content owner. We store the first 384 characters of this line.
Licensor String The record company – this is the very specific name of the record company associated with this product’s release (various labels have used multiple permutations of their name and their DBA names over time).
NM Wholesale Price Num The amount due by the product seller/merchant to Neurotic Media for this product.
Suggested Retail Price Num The SRP for the product, which is the default retail price set by Neurotic Media for the product, which the seller/merchant may change.
File Size Num File size in bites is provided in Product export and Streaming export. It can be used to compute MB sizes for display of file size to consumer in a UI (progress bar), and to compute percentage of delivery thru an application you may have on your end.

Dictionary:

Bundle Export

Attribute DataType Length What is it?

ShopProductID

int

4

 

ShopID

int

4

 

ProductID

uniqueidentifier

16

 

PrdID

int

4

 

ProductName

varchar

512

The name of the item or bundle

ProductTypeID

int

4

See XML Exports

IsBundle

tinyint

1

 

ProductSubTypeID

int

4

See XML Exports

ProductImageName

varchar

256

URL to the location of the image

LongDescription

text

16

Rarely used

CreditCost

int

4

This is an internal price table value for redemptions

StartDate

datetime

8

The date this product should go live at midnight

EndDate

datetime

8

A removal date at midnight

IsSellable

tinyint

1

Can the product be sold separately (some albums are Sellable while their items are Not Sellable which means you can only buy the songs with the album bundle purchase but not separately)

MSRP

money

8

Suggested Retail Price

ParentID

uniqueidentifier

16

 

NMWholeSale

money

8

Neurotic Media Wholesale Price is what we invoice you for when you sell or deliver this product

IsActive

tinyint

1

A yes/no status. No before start date and after end date or deactivation date.

ChangedDate

datetime

8

We track latest changes and this will affect what gets into your periodic DB change dumps.

ArtistID

int

4

 

Genres

varchar

2000

A product can be associated with multiple genres, normally separated with a comma.

SampleFileID

int

4

The ID of the 30-second clip

UPC

varchar

20

This is the product (normally bundle) UPC submitted by the label – it is normally a “digital” UPC and is not a match of the equivalent “physical CD” UPC

ParentUPC

varchar

20

 

LicensorName

varchar

14%

This is the record company name.

ComponentNum

int

4

Component means which CD in a multi-CD release was the track on

IsEdited

tinyint

1

If a track is Edited you must display an “Edited” flag or word in the track listing in your store.

CatalogID

uniqueidentifier

16

Each label represents a “Catalog” and we identify it with an ID.

WebDataProductID

uniqueidentifier

16

 

Copyright

varchar

384

This is the copyright owner specific name as disclosed also on the web site front end.

YearPublished

char

4

The year this digital product was released by the label.

PublishersInfo

varchar

500

Additional information about the publisher

TrackNum

int

4

The sequence of the track on its original CD (Component).

Duration

datetime

8

Minutes and seconds.

IsExplicit

tinyint

1

If the product is explicit you should flag it in the store as such in rows with words or flags AND you MUST include the standard Parental Advisory logo near the album itself.

LabelCreatedDate

datetime

8

Date this product was created by the label.

AMGID

varchar

20

We have room for it but have not ingested any.

PublisherName

varchar

250

The text name of the publisher

CatalogName

varchar

128

Name of the Catalog.

FormatID

int

4

 

DisplayName

varchar

200

200

FileSize

int

4

Bits

 

ArtistExport

Attribute DataType Length What is it?

ArtistName

varchar

256

Name of the artist.

ArtistID

uniqueidentifier

16

Internal

IsActive

tinyint

1

Yes/no

ImageName

varchar

64

URL to artist image.

 

DigitalProductSubTypeExport

Attribute DataType Length What is it?

DigitalProductSubTypeID

int

4

 

DigitalProductTypeID

int

4

 

Name

varchar

32

Name of the product  sub type.

Sequence

int

4

It’s priority sequence in our system (mainly relevant for mobile products)

 

DigitalProductTypeExport

Attribute DataType Length What is it?

DigitalProductTypeID

int

4

 

Name

varchar

50

Name of this type

Sequence

int

4

It’s priority sequence in our system (mainly relevant for mobile products)

 

SampleURL

Attribute DataType Length What is it?

ProductID

uniqueidentifier

16

Internal, to connect with all other exports

FormatID

int

4

Which format is being served

FormatName

varchar

50

The name of the sample file

SampleURL

varchar

1024

The URL to the preview sample.

 

CustomerOrderExport

Attribute DataType Length

CustomerID

uniqueidentifier

16

FirstName

varchar

64

LastName

varchar

64

UserName

varchar

64

Password

varchar

256

IsActive

tinyint

1

OrderID

uniqueidentifier

16

OrderNumber

int

4

OrderDate

datetime

8

PaymentID

uniqueidentifier

16

PaymentTypeID

int

4

CustomerID

uniqueidentifier

16

Amount

money

8

Description

varchar

64

IsCleared

tinyint

1

PaymentDate

datetime

8

ClearedDate

datetime

8

ProcessorTransactionID

varchar

50

NameOnCard

varchar

64

Number

varchar

256

Last4Num

char

4

ExpirationMonth

int

4

ExpirationYear

int

4

ApprovalCode

varchar

20

Street1

varchar

64

Street2

varchar

64

City

varchar

64

Province

char

2

PostalCode

varchar

12

BillingPhone

varchar

20

CountryDestinationID

uniqueidentifier

16

OrderItemID

uniqueidentifier

16

ProductID

uniqueidentifier

16

Quantity

int

4

NMWholesale

money

8

Price

money

8

OrderItemDownloadID

uniqueidentifier

16

DigitalProductID

uniqueidentifier

16

FullProductName

varchar

2048

CustomerDownloadID

int

4

PercentComplete

money

8

StartTime

datetime

8

EndTime

datetime

8

BytesSent

int

4

ErrorCode

int

4

CustomerLicenseID

int

4

LicenseDate

datetime

8

ErrorCode

int

4

 

CustomerServiceGet

Attribute DataType Length

CustomerID

uniqueidentifier

16

FirstName

varchar

64

LastName

varchar

64

UserName

varchar

64

Phone

varchar

20

CellPhone

varchar

20

DateOfBirth

datetime

8

 

OrderItemGet

Attribute DataType Length

OrderItemID

uniqueidentifier

16

OrderID

uniqueidentifier

16

ProductID

uniqueidentifier

16

Quantity

int

4

RoyaltyDate

datetime

8

CustomerID

uniqueidentifier

16

 

Artist Export

Attribute DataType Length

ArtistName

varchar

256

ArtistID

uniqueidentifier

16

IsActive

tinyint

1

ShopID

int

4

ChangedDate

datetime

8

DigitalProductID

int

4

ImageName

varchar

64

 

Song Export / Album

Attribute DataType Length

ShopProductID

int

4

ShopID

int

4

ProductID

uniqueidentifier

16

PrdID

int

4

ProductName

varchar

512

ProductTypeID

int

4

IsBundle

tinyint

1

ProductSubTypeID

int

4

ProductImageName

varchar

256

LongDescription

text

16

CreditCost

int

4

StartDate

datetime

8

EndDate

datetime

8

IsSellable

tinyint

1

MSRP

money

8

ParentID

uniqueidentifier

16

NMWholeSale

money

8

IsActive

tinyint

1

ChangedDate

datetime

8

ArtistID

int

4

Price

money

8

Genres

varchar

2000

SampleFileID

int

4

UPC

varchar

20

ParentUPC

varchar

20

LicensorName

varchar

64

ComponentNum

int

4

IsEdited

tinyint

1

CatalogID

uniqueidentifier

16

WebDataProductID

uniqueidentifier

16

Copyright

varchar

384

YearPublished

char

4

PublishersInfo

varchar

500

TrackNum

int

4

Duration

datetime

8

IsExplicit

tinyint

1

LabelCreatedDate

datetime

8

AMGID

varchar

20

PublisherName

varchar

250

CatalogName

varchar

128

FormatID

int

4

DisplayName

varchar

200

FileSize

int

4

Method B: Search Services

The Search function allows a Consumer to search for specific products on a storefront. Only the digital products available on the Merchant’s storefront are available to be searched. Consumers can search for albums, artists, and tracks. You have to pass in the content type (album, artist, song) and a query text – and you receive a list of results to display.


SOAP WSDL

Merchants have the ability to use SOAP WSDL methodology. This is the method used with the standard Neurolinq™ API discussed in “Method A” previously.

The URL associated with the Search Services API is:

http://securegateplus.nmp.neuroticmedia.net/Search.svc?wsdl

Assumptions

  • The Consumer is searching for information on an artist or an artist’s album or song.
  • Our payload allows the Merchant to build the resulting page User Experience (UX) in real time within their widget, app or store

Samples:
There are three core search services in this section:

  • Search by Artist
  • Search by Album
  • Search by Song

Search by Artist

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Search/Metal%20Church/?searchType=artist&maxResults=20&currentPageIndex=1 HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 0

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 22:11:04 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=x2om2l55v2ctcs3s2dtspdad; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 3333
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"AlbumResults":null,"ArtistAlbumResults":null,
"ArtistResults":
[{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Charlotte Church"},{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"J Church"},
{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Eric Church"},{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Metal Urbain"},
{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Lords of the New Church"},{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Eric Church"},
{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Eric Church"},{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"J Church"},
{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Church of House"},{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Voodoo Church"},
{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Lakewood Church"},{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Eagles of Death Metal"},
{"ArtistGuid":"00000000-0000-0000-0000-000000000000","Name":"Bethany Church"},{"ArtistGuid":"06d5bf09-4143-4ca1-99d9-

Search by Album

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Search/Metal%20Church/?searchType=album&maxResults=20&currentPageIndex=1 HTTP/1.1

api-key: b6fff46b-9557-42f0-ab88-2fa53c098e84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 0


RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 22:11:48 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=sbilelmxpg5a2l31qmbkhi55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 28278 {"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"AlbumResults":[{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_075596047128.jpg","AlbumName":null,"AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Metal Church","ComponentNum":0,"CreditPrice":10,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Metal Church","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":null,"Price":9.9900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(1238472000000-0400)\/","TrackNum":0},
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_075596047128.jpg","AlbumName":null,"AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Metal Church","ComponentNum":0,"CreditPrice":8,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Metal Church","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":null,"Price":8.2400,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":0},…]

Search by Song

REQUEST:

GET https://securegateplus..nmp.neuroticmedia.net/Search/Metal%20Church/?searchType=song&maxResults=20&currentPageIndex=1 HTTP/1.1
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
api-key: b6fff46b-9557-42f0-ab88-2fa53c098e84
Content-Type: application/json; charset=utf-8

 

RESPONSE:

HTTP/1.1 200 OK
Date: Thu, 04 Aug 2011 21:31:20 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=kzp12f451zvvw255o5zbtpya; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 46041
{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"","AlbumResults":null,"ArtistAlbumResults":null,"ArtistResults":null,"NumberOfResults":40,"SongResults":[{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_075596047128.jpg","AlbumName":"Metal Church","AlbumStartDate":"\/Date(1238472000000-0400)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Metal Church","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":false,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Metal Church (Album Version)","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"http:\/\/images.amplified.com\/FLVStream\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/081227836726_004_128_0002_102.mp3","Price":0.9900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":4,"ShowActionButton":true,"StartDate":"\/Date(1238472000000-0400)\/","StreetDate":"\/Date(1238472000000-0400)\/","TrackNum":2},{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","

Search Mixed using partial or full query

This search method is designed to allow for autocomplete type search functionality.  i.e. the function in a user interface where the user begins typing in a search box, and after a few keystrokes and a pause, the system pops up suggested results, similar to Google search.  This search returns albums, artists, and songs that are deemed relevant to the query.  The query returns most relevant 20 artists, most relevant 15 albums, and most relevant 15 songs.  A GUI can then decide how to quickly and gracefully output those to the user.  NOTE that using the exact same request, but substituting Mixed for Partial in the URL will result in artist’s most recent album image being returned for each artist.  This query is best suited for when users run a search and you want to display a full, nice search result page.

 

REQUEST

GET https://securegateplus.nmp.neuroticmedia.net/Search/Partial/ten 
HTTP/1.1
User-Agent: Fiddler
api-key: 908ce706-fd3e-4875-a750-28d7132d9570
Content-Type: application/json; charset=utf-8
Host: securegateplus.nmp.neuroticmedia.net

RESPONSE

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"","AlbumResults":[{"ActionButtonAlternateText":null,"AlbumGuid":"689491f5-2ae7-4257-9085-fbb9a78e4502","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/e6691a61-68f0-428c-873e-bf667dcd863b\/Product\/689491f5-2ae7-4257-9085-fbb9a78e4502\/Mid_00000000000022625183-1425x1425_300dpi_RGB_q100.jpg","AlbumName":"Ten","AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"de10aaad-8c3e-424f-8c39-47a984cb972a","ArtistName":"Pearl Jam","ComponentNum":1,"Copyright":"(P) 1991 Sony Music Entertainment Inc.","CreditPrice":10,"Description":null,"Duration":"3\/24\/2014 12:00:00 AM","EndDate":"\/Date(-62135578800000-0500)\/","GRID":"G010002006531Y","ISRC":"","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Ten","ParentGuid":"689491f5-2ae7-4257-9085-fbb9a78e4502","PreviewUri":null,"Price":9.9900,"ProductGuid":"689491f5-2ae7-4257-9085-fbb9a78e4502","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":11,"UPC":"884977724745"},{"ActionButtonAlternateText":null,"AlbumGuid":"cec2ad04-193e-4a0a-88a6-76cc99f07b50","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/30c482cf-6693-4acd-8619-878f3cfb8862\/Product\/0495a2f3-5344-4216-8680-62194767a78e\/Mid_UMG_cvrart_00720642428320_01_RGB72_300x300_1049938.jpg","AlbumName":"Ten","AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"8938106e-fb1f-46b2-bc1b-6fe1512b1ec9","ArtistName":"Y&T","ComponentNum":1,"Copyright":"(C) 1990 Geffen Records Inc.","CreditPrice":10,"Description":null,"Duration":"9\/24\/2012 12:59:58 AM","EndDate":"\/Date(-62135578800000-0500)\/","GRID":"","ISRC":"","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Ten","ParentGuid":"cec2ad04-193e-4a0a-88a6-76cc99f07b50","PreviewUri":null,"Price":9.9900,"ProductGuid":"cec2ad04-193e-4a0a-88a6-76cc99f07b50","ProductTypeID":0,........ellable":true,"Name":"Ten Thousand Hours","ParentGuid":"1db9b35f-7caa-44a8-9718-394b44b915a9","PreviewUri":"http:\/\/images.amplified.com\/FLVStream\/Catalog\/1a3908d2-7295-4613-9092-679b5162962c\/Product\/1db9b35f-7caa-44a8-9718-394b44b915a9\/707541528191_001_128_0007_102.mp3","Price":1.2900,"ProductGuid":"73d4c5bd-4aed-47f0-8963-1abd224bbf73","ProductTypeID":4,"ShowActionButton":true,"StartDate":"\/Date(1349755200000-0400)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":1,"UPC":"707541528191"}]}

Artist Services

Artist Services are utilized in getting information about a selected artist. This information includes not only albums and tracks by the artist, but information on the artist and even information on similar artists (i.e. Recommendations engine using correlated purchasing patterns to suggest similar artists to consumers based on “people who like this also purchased that…”).

These search functions allow Consumers to get as much information about their potential purchase as possible. It also creates interest in ancillary products that could potentially turn into purchases for the Merchant.

It should be noted that only the data that is intended to be displayed on the Merchant’s store (by virtue of the filter used to create that store’s unique catalog) will show up in the results.

SOAP WSDL
In the API Plus features, Merchants have the ability to use SOAP WSDL methodology. This is the method used with the standard API and will be familiar to a Merchant if they are familiar with our Neuroling™ API services.

The URL associated with the Artist Services API is:
http://securegateplus.nmp.neuroticmedia.net/Artist.svc?wsdl

 

Assumptions

  • Merchant has a website, widget or app where Consumers can purchase and download products.
  • Merchant has a business relationship with Neurotic Media.

 

Use Case:

  • The Consumer is coming to the Merchant’s storefront looking for specific artists and their products.
  • The Merchant wants to check on which artists are selling best in their store or to initiate admin functions that support what they then display on the front end of their store, widget or app.
  • Merchant uses API services to request a specific artist metadata table from Neurolinq™ API (GetArtist), and Neurolinq™ provides a payload that includes artist name, products info and images (GetArtistAlbums), song info and preview links (GetArtistTracks), as well as recommendations (GetSimilarArtists).
  • Neurolinq™ replies with specific payloads.
  • Merchant constructs user experience (UX) from the payload in the merchant site, app or widget, and the consumer then interacts with the UX.

Get Artist

When a Consumer comes to the Merchant’s storefront looking for information about a specific artist, he or she would use this feature. The Get Artist feature returns a biography of the Artist as well as the artist’s birthday and any uploaded images (note that Neurotic Media does not provide a third party database for bios and pictures, and those are uploaded by labels and merchandisers over time organically for featured artists).

The payload we provide includes the metadata and pricing required for the Merchant to build and display an “artist page” in a site, widget of app. Below is a sample request and response.


Sample:

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "{artistGuid}", ResponseFormat = WebMessageFormat.Json)]
        GetArtistResponse GetArtist(string artistGuid);


REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/artist/00000000-0000-0000-0000-000000000000 
HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net


RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:19:13 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=ha5ojk55dvkiv0vtjyb54lqt; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 1058
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"Artist":{"ArtistID"00000000-0000-0000-0000-000000000000"","Bio":"If any act embodies the place to which country music has evolved in the new century, it is Rascal Flatts. Since their inception a decade ago in 1999, the trio has helped change the face of popular music. Their trademark sound--Gary LeVox's powerfully emotive lead vocals coupled with the soaring harmonies of Jay DeMarcus and Joe Don Rooney, set amid world-class arrangements and production, have made the band the standard bearers for cutting-edge country. Drawing on Nashville's best tunesmiths and their own enviable songwriting skills, they have released, in songs like \"These Days,\" \"Bless The Broken Road,\" \"What Hurts The Most\" and \"Take Me There,\" some of the most important and successful music to come out of Nashville in recent years. ",
"BirthDate":"\/Date(-62135578800000-0500)\/",
"Image":"http:\/\/images.amplified.com\/RR\/ArtistImages\/00000000-0000-0000-0000-000000000000\/rf.jpg",
"Name":"Rascal Flatts"}}

Get Artist Albums

A Consumer can retrieve album information from a Merchant’s storefront. Below is a sample request and response.

Sample:

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "Albums/{artistGuid}/?pageIndex={pageIndex}&pageSize={pageSize}", ResponseFormat = WebMessageFormat.Json)]
GetArtistAlbumsResponse GetArtistAlbums(string artistGuid, string pageIndex, string pageSize);

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/artist/albums/00000000-0000-0000-0000-000000000000/?pageIndex=1&pageSize=5 HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:22:57 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=5typguy3fxy4fg2zflki51nr; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 4824 {"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"Albums":[{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_UMG_cvrart_00843930004164_01_RGB72_300x300_3100887.jpg","AlbumName":null,"AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Rascal Flatts","ComponentNum":1,"CreditPrice":10,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Nothing Like This","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":null,"Price":9.9900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":0},
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_UMG_cvrart_00050087160326_01_RGB72_300x300_2739098.jpg","AlbumName":null,"AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Rascal Flatts","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Unstoppable (Olympics Mix)","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":null,"Price":0.9900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":0},{"

Get Artist Tracks

A Consumer can retrieve an artist’s track information on specific songs. Below is a sample request and response.

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "Tracks/{artistGuid}/?pageIndex={pageIndex}&pageSize={pageSize}", ResponseFormat = WebMessageFormat.Json)]
GetArtistTracksResponse GetArtistTracks(string artistGuid, string pageIndex, string pageSize);

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/artist/tracks/00000000-0000-0000-0000-000000000000/?pageIndex=1&pageSize=5 HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:24:08 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=v21ktyys3waytprlq4likq55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 5799 {"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"TotalNumberOfTracksAvailable":10,
"Tracks":[{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_UMG_cvrart_00843930004164_01_RGB72_300x300_3100887.jpg","AlbumName":"Nothing Like This","AlbumStartDate":"\/Date(1289883600000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Rascal Flatts","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":false,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Why Wait","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"http:\/\/images.amplified.com\/FLVStream\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/UMG_audclp_00843930004164_01_001_50_0001_102.mp3","Price":1.2900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":4,"ShowActionButton":true,"StartDate":"\/Date(1289883600000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":1},

Get Similar Artists

A Consumer can retrieve an artist’s track information on specific songs. Below is a sample request and response.

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "Tracks/{artistGuid}/?pageIndex={pageIndex}&pageSize={pageSize}", ResponseFormat = WebMessageFormat.Json)]
GetArtistTracksResponse GetArtistTracks(string artistGuid, string pageIndex, string pageSize);

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/artist/tracks/00000000-0000-0000-0000-000000000000/?pageIndex=1&pageSize=5 HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:24:08 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=v21ktyys3waytprlq4likq55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 837
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"TotalNumberOfTracksAvailable":10,
"Tracks":[{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_UMG_cvrart_00843930004164_01_RGB72_300x300_3100887.jpg","AlbumName":"Nothing Like This","AlbumStartDate":"\/Date(1289883600000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Rascal Flatts","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":false,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Why Wait","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"http:\/\/images.amplified.com\/FLVStream\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/UMG_audclp_00843930004164_01_001_50_0001_102.mp3","Price":1.2900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":4,"ShowActionButton":true,"StartDate":"\/Date(1289883600000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":1},

Get Similar Artists by Artist ID

This call allows you to pass in an artist ID, and get a list of similar artists from our system.  This call also returns the Artist’s newest album cover image, so a nicer client experience could be constructed.

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Artist/SimilarByArtistGuid/1EE9C2C0-8823-4C4C-828D-736DFC19691F/?pageIndex=0&pageSize=20 
HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

RESPONSE:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 3197
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.5
Set-Cookie: ASP.NET_SessionId=qgieuhxtjvntudhgarb3llrv; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 15 Aug 2014 14:41:25 GMT
{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"","SimilarArtists":[{"ArtistGuid":"41f66722-2a65-4f9b-b9e3-cc4104e295ce","Name":"Willie Nelson","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/63d69ed3-7391-437a-b744-0a5e9944f261\/Mid_058622293027.jpg"},{"ArtistGuid":"3e2955c9-fe1f-4a81-a434-2f323584820a","Name":"Kenny Rogers","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/c55a883f-f6d4-4e4a-aa34-97b45f08ffc9\/Mid_058622388921.jpg"},{"ArtistGuid":"4f8d9ee9-bf9c-42c2-809f-2867b67fe982","Name":"Dolly Parton","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/aca033bf-6742-4d27-b5a0-a22d902f2a6c\/Mid_058622060827.jpg"},{"ArtistGuid":"edca7cf4-1d34-43ef-b2fb-4a95ebb851bc","Name":"Percy Sledge","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/69be39cc-5581-4be8-b769-d147ab9efc58\/Mid_058622273029.jpg"},{"ArtistGuid":"0a9c33a1-78e8-4f1a-8371-8a529eea486a","Name":"Johnny Paycheck","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/4f2f0116-45d1-440a-8305-0d83f1ce0b72\/Mid_058622165720.jpg"},{"ArtistGuid":"2eb9d7c0-7b7f-478b-9cd3-8d91d53927c4","Name":"Marvin Gaye","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/d3b409d4-8272-489e-9b6a-2ec407869330\/Mid_628261184729.jpg"},{"ArtistGuid":"04be836f-9b72-4ba0-aa7b-36b7f0c8144a","Name":"Chicago","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/fa892a81-c4fa-4958-be40-008dee93d75b\/Mid_058622350829.jpg"},{"ArtistGuid":"5312c426-1f99-418f-8a37-67450f4da368","Name":"Ray Charles","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/2496cd5b-10e6-40ef-8f84-7adf8e639bfe\/Mid_058622145326.jpg"},{"ArtistGuid":"54cb3d15-010a-4d1c-8540-a39451414193","Name":"B.B. King","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/3c9a49ec-6b36-4756-bfd3-f089c01ff702\/Mid_058622427125.jpg"},{"ArtistGuid":"33535877-1564-4062-8350-d55c56ef4fa6","Name":"Red Sovine","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/1a3f7187-4466-4c57-9e1d-094399b3024d\/Mid_058622169421.jpg"},{"ArtistGuid":"1efe8b64-7965-40da-b8d1-e83e2b6f7121","Name":"Freddy Fender","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/aae0b679-2b87-4c56-b147-2ff8be3a90dc\/Mid_628261187324.jpg"},{"ArtistGuid":"ad121616-67a2-4980-87ae-0b40cf75fc68","Name":"Jerry Lee Lewis","RecentAlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/f40f4137-b489-44af-b412-755fbc0fdfa0\/Product\/dbd486ff-1513-44b3-bfa8-b151870f5680\/Mid_628261188024.jpg"}]}

Product Service

Product services are utilized for getting generic information about products that enable a Consumer to make a purchase. With the Product Service API, the Merchant and their Consumers can access Product Feature lists, including the bestselling tracks and albums in the store, as well as basic information on each album and product.

SOAP WSDL

In the API Plus features, Merchants have the ability to use SOAP WSDL methodology. This is the method used with the standard Neurolinq™ Product API and will be familiar to a Merchant if they are familiar with that API.

The URL associated with the Product Service API is:
http://securegateplus.nmp.neuroticmedia.net/Product.svc?wsdl

Assumptions

  • Merchant has a website, widget or app where Consumers can purchase and download products.
  • Merchant has a business relationship with Neurotic Media.

Use Case:

  • The Consumer is coming to the Merchant’s storefront looking to purchase/order products.
  • The Merchant wants to check on which products are selling best in their store or to initiate admin functions that support what they then display on the front end of their store, widget or app.
  • Merchant makes Product Service calls to Neurolinq™ API services to request product-specific information.
  • Neurolinq™ replies with specific payloads.
  • Merchant constructs user experience (UX) from the payload in the merchant site, app or widget, and the consumer then interacts with the UX.

Getting details for Products

A handful of methods allow Merchants to get deeper details to display about specific products in the database:

Get Album

The Consumer can gain basic information about an artist’s album. Our payload includes metadata and links to preview and image (which remain hosted with us) as well as product pricing info for the album and its tracks. Merchant can then construct the album page on the fly.

Sample:

[WebInvoke(Method = "GET", UriTemplate = "Album/{albumGuid}", ResponseFormat = WebMessageFormat.Json)]
GetAlbumResponse GetAlbum(string albumGuid);

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Product/Album/00000000-0000-0000-0000-000000000000 HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:33:57 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=cvcsmu45wyleh355zbpfl055; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 41164

{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"Album":
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_093624972945.jpg","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Madonna","CreditPrice":18,"IsEdited":false,"IsExplicit":false,"Name":"Celebration (double disc version)","Price":17.8900,
"Products":
[{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_093624972945.jpg","AlbumName":"Celebration (double disc version)","AlbumStartDate":"\/Date(1254196800000-0400)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Madonna","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":false,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Hung Up","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"http:\/\/images.amplified.com\/FLVStream\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/093624972969_001_128_0003_102.mp3","Price":1.2900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":4,"ShowActionButton":true,"StartDate":"\/Date(1254196800000-0400)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":37},
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_093624972945.jpg","AlbumName":"Celebration (double disc version)","AlbumStartDate":"\/Date(1254196800000-0400)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Madonna","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":false,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Music","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"http:\/\/images.amplified.com\/FLVStream\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/093624972969_002_128_0003_102.mp3","Price":1.2900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":4,"ShowActionButton":true,"StartDate":"\/Date(1254196800000-0400)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":37}

Get Digital Product

The Consumer is able to gain basic information about a digital product, either an album or a song (or something else as the case may be – a ZIP file with screen savers for example, or a video). This will give just basic information about the product and has far less detail than a call for a specific product like one would find with the Get Album service.

Sample:

[WebInvoke(Method = "GET", UriTemplate = "{productGuid}", ResponseFormat = WebMessageFormat.Json)]
GetDigitalProductResponse GetDigitalProduct(string productGuid);

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Product/00000000-0000-0000-0000-000000000000 HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:35:20 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=lwyotpnmuayp4qeevopkd0v3; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 1021

{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"Product":{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_093624972945.jpg","AlbumName":"Celebration (double disc version)","AlbumStartDate":"\/Date(1254196800000-0400)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Madonna","ComponentNum":0,"CreditPrice":18,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Celebration (double disc version)","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"","Price":17.8900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":3,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":0}}

Get Digital Products (plural all)

This call simply provides details on multiple products.

Merchandising Product Services

Merchandising Product Services support several feature controls, some dynamic (DB driven data) and some manual (editorially managed data):

Get Similar Album

The Consumer can gain information about albums similar to the album that is entered into the search criteria. The data is based on consumer purchasing trends throughout our system, and the payload is listing items specifically available in the Merchant’s store catalog.

Sample:

[WebInvoke(Method = "GET", UriTemplate = "SimilarAlbums/{albumGuid}", ResponseFormat = WebMessageFormat.Json)]
GetSimilarAlbumsResponse GetSimilarAlbums(string albumGuid);

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Product/SimilarAlbums/00000000-0000-0000-0000-000000000000 HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:36:24 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=5jytmr55wzknq355b0pglp55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 4699 {"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"SimilarAlbums":[
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_5099902637358_1300x1300_300dpi.jpg","AlbumName":null,"AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Katy Perry","ComponentNum":0,"CreditPrice":4,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"E.T. (The Remixes) - EP","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":null,"Price":4.4900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":0},
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_207210.jpg","AlbumName":null,"AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Michael Bublé","ComponentNum":0,"CreditPrice":6,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Totally Buble","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":null,"Price":6.3900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":0},

Get Best Selling Albums

The Consumer or the Merchant can see which of the albums on the storefront are selling the best. This is useful to the Merchant for marketing and trend purposes. The service only replies w/ values that are available within the Merchant’s unique Store catalog.

Sample:

[WebInvoke(Method = "GET", UriTemplate = "BestSellingAlbums", ResponseFormat = WebMessageFormat.Json)]
GetBestSellingAlbumsResponse GetBestSellingAlbums();

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Product/BestSellingAlbums HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:31:03 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=ojk2dvffkkznvm45qbbxvk45; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 9541 {"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"BestSellingAlbums":[{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_795041758569.jpg","AlbumName":null,"AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"The Best of the Most Relaxing Classical Music In the Universe","ComponentNum":0,"CreditPrice":10,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Best of the Most Relaxing Classical Music In the Universe, the","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":null,"Price":9.9900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":0},
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_093624972945.jpg","AlbumName":null,"AlbumStartDate":"\/Date(-62135578800000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Madonna","ComponentNum":0,"CreditPrice":18,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Celebration (double disc version)","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":null,"Price":17.8900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":0,"ShowActionButton":true,"StartDate":"\/Date(-62135578800000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":0}

Get Best Selling Songs

The Consumer or the Merchant can see which of the songs on the storefront are selling the best. This is useful to the Merchant for marketing and trend purposes.

Sample:

[WebInvoke(Method = "GET", UriTemplate = "BestSellingSongs", ResponseFormat = WebMessageFormat.Json)]
GetBestSellingSongsResponse GetBestSellingSongs();

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Product/BestSellingSongs HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:31:58 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=qd4mts3t3ic2gjrpxlamu545; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 11455 {"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"BestSellingSongs":[{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_885417016963_1300x1300_300dpi.jpg","AlbumName":"Trust","AlbumStartDate":"\/Date(1264482000000-0500)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"SAGA","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":false,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"I'm Ok","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"http:\/\/images.amplified.com\/FLVStream\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/885417016963_01_003_mp3_128k_30sec_0001_102.mp3","Price":0.9900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":4,"ShowActionButton":true,"StartDate":"\/Date(1264482000000-0500)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":3},
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_826257012388.jpg","AlbumName":"To All My Friends, Blood Makes The Blade Holy: the Atmosphere ep's [INSTRUMENTAL]","AlbumStartDate":"\/Date(1283832000000-0400)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Atmosphere","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":false,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Until The Nipples Gone","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"http:\/\/images.amplified.com\/FLVStream\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/826257012388_001_128_0002_102.mp3","Price":0.9900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":4,"ShowActionButton":true,"StartDate":"\/Date(1283832000000-0400)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":1}

Order Methods

We support several order methods when placing a call for a product delivery. The core “types” of Orders you can place would be the following:

  • Purchase a Product with Credit Card (e-commerce)
  • Credit Purchase Product (virtual reward points)
  • Subscription Purchase
  • Music Locker

Purchase Product with Credit Card (e-commerce)

This allows the Consumer to use a credit card to purchase a digital product from the Merchant’s storefront. Most API Customers have their own shopping cart, but when a Customer lacks a payment mechanism, our API Services do offer an option to transact through Neurotic Media’s default account – as shown:

Sample:

[WebInvoke(Method = "POST", UriTemplate = "PurchaseProduct", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
PurchaseProductResponse PurchaseProduct(PurchaseProductRequest request);
DISCUSS public string CVVS { get; set; }
public bool isPaid { get; set; }
in DETAIL

 

EXAMPLE OF NEEDING CVVS:

POST https://securegateplus.nmp.neuroticmedia.net/Product/PurchaseProduct HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 144
{
"customerGuid":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"productGuid":"00000000-0000-0000-0000-000000000000",
"CVVS":"",
"isPaid":false
}
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:57:21 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=0ynzol45oegqwqr5dsthtkam; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 214
{"ReturnCode":62,
"ReturnExceptionType":null,
"ReturnMessage":"For your security, please re-enter your CVVS number under your Credit Card details below and click Submit.",
"AlbumDownloadURL":null,
"DownloadItems":null}

 

NOW PASSING IN THE CVVS:

POST https://securegateplus.nmp.neuroticmedia.net/Product/PurchaseProduct HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 147
{
"customerGuid":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9c8f8",
"productGuid":"00000000-0000-0000-0000-000000000000",
"CVVS":"446",
"isPaid":false
}
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:58:58 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=b21cjjf2lv2zspmvtw5tiq55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 405
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"","AlbumDownloadURL":null,"DownloadItems":[{"DownloadURI":"http:\/\/download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=0","FileSize":7187570,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"Not Afraid","ProductTypeId":4}]}

 

BUYING AN ALBUM:

POST https://securegateplus.nmp.neuroticmedia.net/Product/PurchaseProduct HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 144
{
"customerGuid":"xx",
"productGuid":"00000000-0000-0000-0000-000000000000",
"CVVS":"",
"isPaid":false
}
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 22:00:47 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=h5x020551giwiles1ddpmb55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 3659
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"AlbumDownloadURL":"http:\/\/download.nmp.neuroticmedia.net\/BulkGet.aspx?AlbumID=00000000-0000-0000-0000-000000000000&OrderItemID=00000000-0000-0000-0000-000000000000","DownloadItems":[{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":9062439,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"Red Camaro","ProductTypeId":4},{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":10225409,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"They Try","ProductTypeId":4},{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":8765703,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"Easy","ProductTypeId":4},{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":9136631,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"I Won't Let Go","ProductTypeId":4},{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":9246347,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"Sunday Afternoon","ProductTypeId":4}

Credit Purchase Product (virtual reward points)

This allows the Consumer to exchange virtual credits (points, token, credits, rewards, vouchers, whatever a Customer decideds to call them) for a digital product from the Merchant’s storefront.

Sample:

[WebInvoke(Method = "POST", UriTemplate = "CreditPurchaseProduct", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
PurchaseProductResponse CreditPurchaseProduct(CreditPurchaseProductRequest request);
}
POST https://securegateplus.nmp.neuroticmedia.net/Product/CreditPurchaseProduct HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 114
{
"customerGuid":"xx",
"productGuid":"00000000-0000-0000-0000-000000000000"
}
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 22:03:44 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=p5r14n3l1nraac2hy2pciqbz; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 3659
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"AlbumDownloadURL":"http:\/\/download.nmp.neuroticmedia.net\/BulkGet.aspx?AlbumID=00000000-0000-0000-0000-000000000000&OrderItemID=00000000-0000-0000-0000-000000000000","DownloadItems":[{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":9019597,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"Why Wait","ProductTypeId":4},{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":10225409,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"They Try","ProductTypeId":4},{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":8057260,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"All Night To Get There","ProductTypeId":4},{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":9246347,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"Sunday Afternoon","ProductTypeId":4},{"DownloadURI":"http:\/\/origin-download.nmp.neuroticmedia.net\/download.aspx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=1","FileSize":8895261,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"Tonight Tonight","ProductTypeId":4}

Subscriber Purchase Product

This method enables a Customer that is offering subscription services to subscribers to get a digital product from the Merchant’s storefront marked as part of the subscription model offering.

Sample:

[WebInvoke(Method = "POST", UriTemplate = "SubscriberPurchaseProduct", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
        PurchaseProductResponse SubscriberPurchaseProduct(SubscriberPurchaseProductRequest request);


REQUEST:

POST https://securegateplus.nmp.neuroticmedia.net/Product/SubscriberPurchaseProduct
HTTP/1.1
User-Agent: Fiddler
api-key: : c9295ce2-cb55-4742-88b8-b4000ada5bf4
Host: securegateplus.nmp.neuroticmedia.net
Content-Length: 114
Content-Type: application/json; charset=utf-8
{ 
"customerGuid":"00000000-0000-0000-0000-000000000000",
"productGuid":" 00000000-0000-0000-0000-000000000000"
}

 

RESPONSE:

HTTP/1.1 200 OK
Date: Wed, 18 Apr 2012 17:37:27 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Content-Length: 566
Set-Cookie: ASP.NET_SessionId=a0eh2n201e0lvctewyvs2ihf; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"AlbumDownloadURL":"http:\/\/download.nmp.neuroticmedia.net\/BulkGet.aspx?AlbumID=00000000-0000-0000-0000-000000000000&OrderItemID=00000000-0000-0000-0000-000000000000","DownloadItems":[{"DownloadURI":"http:\/\/cloud.download.neuroticmedia.net\/download.ashx?ProductID=00000000-0000-0000-0000-000000000000&dl=1&OID=00000000-0000-0000-0000-000000000000&UITS_CDN_Encode=0","FileSize":4787980,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductName":"Let The People Sing Amen","ProductTypeId":4}]}

My Music (History and Locker)

Placing Products into a shopper’s music locker:

Our "Purchased Content Music Locker" service relies on your ability to verify that the shopper has indeed purchased a product, may it be a CD, vinyl, or an MP3 from our system. Calls are designed so that merchants can handle accreditation (crediting the shopper/consumer for purchasing/owning a Product) and matching of physical UPC to our digital product UPC (digital and physical UPC for the same products are normally two different UPCs) in their system.

In other words, the following methods simply push a product X into a customer's digital locker in our database – and once it is there, you can invoke delivery (marked as a locker delivery). The matching of physical and digital UPCs, when applicable, is a process that takes place separately and in parallel to this ordering mechanism.

Place album or song into locker

Vendor does accreditation (physical to digital match), and decides to place an album into a customer's locker. Notice the UPC parameter. This should be the physical UPC that was matched to the specified digital product. The productGuid can be for an album or a song.

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/myMusic/AddProduct?customerGuid= AEBD0E47-C37F-452A-A492-12CDD1CF8EBD&productGuid= e7c78ab1-bda8-4161-bce4-a46ea93b4277&UPC=192A39A3901 HTTP/1.1
User-Agent: Fiddler
api-key: 90ed83b5-c377-41ee-a400-df4ab3e65574

 

RESPONSE:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 62
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.5
Set-Cookie: ASP.NET_SessionId=4uaoi0yrfdx2zzz5rdj0ouj5; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 20 May 2014 20:22:27 GMT
{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":""}

 

DESCRIPTION:

In this case the entire album, e7c78ab1-bda8-4161-bce4-a46ea93b4277, has been added to the customer's locker. Neurotic also records that the physical UPC 192A39A3901 is associated to this digital product.

Locker Browser GUI Examples:

Merchants are able to construct a locker page user experience in their site or application using a list of specific calls. You can call on specific artists, products and songs, or to generally see what is in the locker. This allows you to create locker search and sorting functions specific to this value-add "Purchased Content Locker" service.

Next, a consumer would click on existing links in their Locker Page, and you need to invoke us to deliver those existing items that are available in the locker. Those calls are exemplified below as well.

Get All Artists

Pass in a customer ID and get a list of all artists for which they have albums/songs in their locker.

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/MyMusic/Artists/AEBD0E47-C37F-452A-A492-12CDD1CF8EBD HTTP/1.1
User-Agent: Fiddler
api-key: 90ed83b5-c377-41ee-a400-df4ab3e65574
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"",
"Artists":[
{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","Name":"Coldplay","RecentAlbumImage":null}
]}

 

DESCRIPTION:
We are querying for all artists in the customer's locker. The customer ID in this case is AEBD0E47-C37F-452A-A492-12CDD1CF8EBD. In this simple case, the customer only has Coldplay music in their locker.

Get Albums For Artist

Pass in a customer ID and an Artist ID and get a list of all albums by that artist in the customer’s locker; may be partial albums.

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/MyMusic/albumsbyartist/?customerGuid=AEBD0E47-C37F-452A-A492-12CDD1CF8EBD&artistGuid=4f3a87c8-0f21-4f89-8a26-2733142dcd44
HTTP/1.1
User-Agent: Fiddler
api-key: 90ed83b5-c377-41ee-a400-df4ab3e65574
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"",
"Albums":[
{"AlbumGuid":"e49f0c37-3863-46c8-a4ea-46560316f88e",
"AlbumID":8991538,
"AlbumImage":"724354050459.jpg",
"AlbumName":"A Rush Of Blood To The Head",
"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44",
"ArtistID":5242,
"ArtistName":"Coldplay",
"CatalogGuid":"1a3908d2-7295-4613-9092-679b5162962c",
"WebDataProductGuid":"0d679244-4f23-4f72-b45e-938c391ffd2a"
}]}

 

DESCRIPTION: This function is used to query all the albums for a given artist in a customer's locker. In this case, there is only 1 Coldplay album in the customer's locker.

Get Songs For Album

Pass in a customer ID and an Album ID and get a list of songs on that album in the customer’s locker.

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/mymusic/albumDetails/?customerGuid=AEBD0E47-C37F-452A-A492-12CDD1CF8EBD&albumGuid=e49f0c37-3863-46c8-a4ea-46560316f88e HTTP/1.1
User-Agent: Fiddler
api-key: 90ed83b5-c377-41ee-a400-df4ab3e65574
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"","Album":{"AlbumGuid":"e49f0c37-3863-46c8-a4ea-46560316f88e","AlbumID":8991538,"AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/1a3908d2-7295-4613-9092-679b5162962c\/Product\/0d679244-4f23-4f72-b45e-938c391ffd2a\/Medium_724354050459.jpg","AlbumName":"A Rush Of Blood To The Head","ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"CatalogGuid":"1a3908d2-7295-4613-9092-679b5162962c","Tracks":[{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":false,"TrackGuid":"cac003c0-fc64-4c16-87d3-b4686ca758ad","TrackID":8991542,"TrackName":"Politik","TrackNum":1},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"5ad64894-00bd-4218-9c3d-3e51c8b32875","TrackID":8991539,"TrackName":"Politik","TrackNum":1},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"6f25b041-4281-4cd6-9b3c-d56450fb42e7","TrackID":8991540,"TrackName":"In My Place","TrackNum":1},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"baa7ab2e-166d-4ffe-b543-6adf92914b5e","TrackID":8991541,"TrackName":"God Put A Smile Upon Your Face","TrackNum":3},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"b5f2fdbd-2218-429c-84cb-ff8baece624f","TrackID":8991543,"TrackName":"Clocks","TrackNum":5},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"13442b0f-6948-48f7-9e8e-f123d801090d","TrackID":8991544,"TrackName":"Daylight","TrackNum":6},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"2f200eb3-fd4e-4d36-b869-8a3f25362450","TrackID":8991545,"TrackName":"Green Eyes","TrackNum":7},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"609f6dfe-3b90-4d4d-9464-50f67bd60fd7","TrackID":8991546,"TrackName":"Warning Sign","TrackNum":8},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"b2e7fde0-17ed-4644-acd9-f2fa9a049f16","TrackID":8991547,"TrackName":"A Whisper","TrackNum":9},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"1cfe3435-49b8-498c-9516-321bfeac710f","TrackID":8991548,"TrackName":"A Rush Of Blood To The Head","TrackNum":10},{"ArtistGuid":"4f3a87c8-0f21-4f89-8a26-2733142dcd44","ArtistID":5242,"ArtistName":"Coldplay","CanDownload":true,"TrackGuid":"a236173b-b835-42ea-bd28-48ba6d86045f","TrackID":8991549,"TrackName":"Amsterdam","TrackNum":11}],"WebDataProductGuid":"0d679244-4f23-4f72-b45e-938c391ffd2a"}}

Locker Album Get

A customer decides to download an album from their locker. Request locker album download uri.

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/mymusic/downloaduri?customerGuid= AEBD0E47-C37F-452A-A492-12CDD1CF8EBD&productGuid= e49f0c37-3863-46c8-a4ea-46560316f88e HTTP/1.1
User-Agent: Fiddler
api-key: 90ed83b5-c377-41ee-a400-df4ab3e65574
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"","DownloadUri":"http:\/\/cloud.download.neuroticmedia.net\/Locker.ashx?BulkGet=1&OrderItemID=261c3d4a-1e69-4243-96bb-45975c2c7dc1&AlbumID=e49f0c37-3863-46c8-a4ea-46560316f88e"}

Locker Track Get

A customer decides to download a track from their locker. This call is identical to Locker Album Get except the productGuid corresponds to a track here rather than an album. Request locker track download uri.

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/mymusic/downloaduri?customerGuid= AEBD0E47-C37F-452A-A492-12CDD1CF8EBD&productGuid=6f25b041-4281-4cd6-9b3c-d56450fb42e7 HTTP/1.1
User-Agent: Fiddler
api-key: 90ed83b5-c377-41ee-a400-df4ab3e65574

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"","DownloadUri":"http:\/\/cloud.download.neuroticmedia.net\/Locker.ashx?ProductID=6f25b041-4281-4cd6-9b3c-d56450fb42e7&dl=1&OID=4e1c122c-3dcd-4163-8605-8e4438f595ee&catid=1a3908d2-7295-4613-9092-679b5162962c&fn=093624951766_00012_256.mp3&wdpid=f535be6e-72cc-40fc-8649-f422ea6b472d&fv=3&ffmt=9"}

Locker Track Streaming Session Start

This method allows customers to stream a track from a user’s locker rather than doing a full download. 

-          The ClientFingerPrint should be the User Agent of the device playing the stream. It is imperative to post the right data in this field.

-          Each payload is active for exactly one hour. If the same end user asks for the same stream after more than an hour, it must be requested again by client’s system.

-          The customer should check for a 0 return code (success).  Next, they should feed the StreamUri into the player.  Note that the player must pass the same user agent to cloud.download.neuroticmedia.net as was passed in the request.

-          This LockerStream url supports http RANGED REQUESTS.  This allows for full streaming capability, including pre-caching of small initial segments of each stream listed on a page, as per example.

 

REQUEST:

 

POST https://securegateplus.nmp.neuroticmedia.net/mymusic/streamsession HTTP/1.1

api-key: 908ce706-fd3e-4875-a750-28d7132d9570

Host: securegateplus.nmp.neuroticmedia.net

Content-Length: 142

Content-Type: application/json; charset=utf-8

 

{

"customerGuid":"4c93cc1f-7aa3-48e6-9f13-306514aa9236",

"productGuid":"0caf7b88-7a83-480a-a632-d3a536baea7b",

"clientFingerPrint":"Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKitRev> (KHTML, like Gecko) Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>

"

}

 

RESPONSE:

HTTP/1.1 200 OK

Cache-Control: private

Content-Length: 225

Content-Type: application/json; charset=utf-8

Server: Microsoft-IIS/8.5

Set-Cookie: ASP.NET_SessionId=dbus1gtm4tti2qtbi0leuxkt; path=/; HttpOnly

X-AspNet-Version: 4.0.30319

X-Powered-By: ASP.NET

Date: Mon, 13 Oct 2014 17:10:31 GMT

 

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"","StreamUri":"http:\/\/cloud.download.neuroticmedia.net\/LockerStream.ashx?ProductID=0caf7b88-7a83-480a-a632-d3a536baea7b&OID=ca1f6ec7-f22d-4865-8719-28014bd48d41"}

Additional Product Service Calls

These are several additional product service calls to note which Merchants' would need to leverage daily to ensure their data remains up to date with the latest catalog changes. Since we receive and ingest content constantly, it is recommended to make use of these as often as you can.

Get Take Downs

Get a list of products that have been de-activated since a date:

Get Is Preview Available

Is a preview clip available for distribution? This is necessary since many labels and artists restrict previews before album street date, while others allow and even encourage it. This call allows you to know what to display and when.

Get Shop Recently Played

This call is tailored for subscription services and applications, allowing you to display recently played songs for your store ID (a nice community/discovery tool).

Customer Service

The Customer Service section allows a Consumer/shopper to interact with their account information on the Merchant’s storefront. It allows the Consumer to create a new account or to log into their existing account in a Merchant’s store, make changes in their personal data, and check various balances. These are services that tend to be standard controls for the Consumer.

SOAP WSDL

In the API Plus features, Merchants have the ability to use SOAP WSDL methodology. This is the method used with the standard Neurolinq™ API and will be familiar to a Merchant if they are familiar with that API.

The URL associated with the Customer Service API is:
http://securegateplus.nmp.neuroticmedia.net/Customer.svc?wsdl

The URL associated with the Mobile Services API is:
http://securegateplus.nmp.neuroticmedia.net/Customer/Mobile.svc?wsdl

 

 

Use Case

Assumptions

  • The Consumer has an existing relationship with the Merchant’s storefront.
  • Or, new Consumer wishes to register for the Merchant’s storefront.
  • The Consumer is able to log into their account section on the Merchant’s storefront and perform a number of housekeeping duties with their information: The Consumer can check the balances on Credits and on Gift Cards as well as save a credit card for later purchases on the storefront or redeem a code. This section also allows a Consumer to re-get their password to the Merchant’s service account and do so via either email or mobile phone. In addition, Consumers who have not yet registered for the storefront may do so.
  • To achieve this, the Consumer logs in to the Merchant’s service and visits their profile page, where information fields are provided to add/edit/delete personal data. The Consumer submits their changes
  • The Merchant posts those changes through the API method. Neurolinq™ replies with a payload acknowledging the post.

Customer Management

We offer a variety of calls to allow you to manage all aspects of your shopper’s account settings / profile / balances:

Register Customer

This call allows you to register a new customer.

Sample:

[WebInvoke(Method = "POST", UriTemplate = "Register", ResponseFormat = WebMessageFormat.Json)]
CustomerRegisterResponse RegisterCustomer(RegisterCustomerRequest request);

REQUEST:

POST https://securegateplus.nmp.neuroticmedia.net/Customer/Register HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Length: 462
Content-Type: application/json; charset=utf-8
{
"BillingAddress":
{
"AddressName":"Billing",
"City":"Newnan",
"PostalCode":"30076",
"Province":"GA",
"Street1":"487 Gibson Rd"
},
"Customer":
{
"AgreedTermsDate":"\/Date(1297110939057-0500)\/",
"CellPhone":"678-777-3454", "DateOfBirth":"\/Date(200462400000-0400)\/", "FirstName":"Tim",
"LastName":"Kohler",
"MerchantID":"00000000-0000-0000-0000-000000000000", "Password":"password",
"UserName":"testers@neuroticmedia.com"
}
}

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 20:27:09 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=iup4rz45mmeu4pn1i4crl155; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 168
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"ValidationErrors":null,
"ValidationErrorsIsNull":true,
"CustomerID":"00000000-0000-0000-0000-000000000000"}

Login Customer

Consumer can log into the Merchant’s storefront. We support login with a username (normally E-mail address) and a password, and/or mobile number and password.

The data can be real, OR can be replaced with GUIDs from your DB which mask the real data. However, if you mask the data with GUIDs, there are many services that will be negatively affected by our system, such as sending out email receipts, or sending your users passwords from our system if they ask for them via mobile text or via email in interfaces we may host for you. If you are uncertain about what to share with our system in this area, please consult a Neurotic Media representative.

Sample:

[WebInvoke(Method = "POST", UriTemplate = "Login", ResponseFormat = WebMessageFormat.Json)]
LoginResponse LoginCustomer(LoginRequest request);

 

REQUEST:

POST https://securegateplus.nmp.neuroticmedia.net/Customer/Login HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Length: 73
Content-Type: application/json; charset=utf-8
{
"emailAddress" : "tester@neuroticmedia.com",
"password": "password"
}

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 20:20:26 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=og5f5b45jccn52unszklmt2x; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 122
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"LoggedInCustomerId":"00000000-0000-0000-0000-000000000000"}

Email Customer Password

If the Consumer needs his or her password mailed to her for login purposes (note that we can only provide this service if you past us a correct data field for email address and/or mobile number when you created this Consumer account).

Sample:

[WebInvoke(Method = "GET", UriTemplate = "/EmailPassword/{emailAddress}", ResponseFormat = WebMessageFormat.Json)]
EmailCustomerPasswordResponse EmailCustomerPassword(string emailAddress);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Customer/EmailPassword/testers%40neuroticmedia.com

 

RESPONSE:

HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Length: 0
Content-Type: application/json; charset=utf-8
HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 20:23:35 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=ldzxrvm20wtblompsjqjpe45; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 62
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":""}

Redeem Code

A Consumer can redeem a reward PIN code on the Merchant’s storefront.

Use Case:
PIN codes can be used in several ways:

  1. Virtual credits (Credits, Tokens, Points, etc. for incentives and rewards)
  2. Monetary value (pre-paid gift cards)
  3. Product specific (normally associated with unlocking Music Locker product, or specific promotions, such PIN codes unlock access to one specific Product – an album or a song – which you may then immediately make available and start downloading

PIN Codes can also be supported by Point of Sale magnetic card PIN code activation services.

Sample:

[WebInvoke(Method = "POST", UriTemplate = "RedeemCode", ResponseFormat = WebMessageFormat.Json)]
RedeemCodeResponse RedeemCode(RedeemCodeRequest request);

REQUEST:

POST https://securegateplus.nmp.neuroticmedia.net/Customer/RedeemCode HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 79
{
"CustomerGuid":"00000000-0000-0000-0000-000000000000",
"Code":" qdVTQMyxxx"
}

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:12:09 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=bl4aa445nlmtojbsel1qu055; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 62
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":""}

Get Customer Credit Balance

Check the amount of Credits that the Consumer has available on the Merchant’s storefront. To clarify, the term “Credits” refers to virtual credits used for rewards and incentives and tradable for goods (in other words, this is not a monetary value – and you may call it what you wish in your store, i.e. Credits, Tokens, Points, etc.).

Sample:

[WebInvoke(Method = "GET", UriTemplate = "CreditBalance/{customerGuid}", ResponseFormat = WebMessageFormat.Json)]
GetCustomerCreditBalanceResponse GetCustomerCreditBalance(string customerGuid);

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Customer/CreditBalance/00000000-0000-0000-0000-000000000000 HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:36:17 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=jwob4345kcz1zn45pxm1a5us; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 83
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"CreditBalance":1693}

Save Customer Gift Card

Save a Consumer’s Gift Card for use on the Merchant’s storefront. Gift Cards are normally for monetary value.

Sample:

[WebInvoke(Method = "POST", UriTemplate = "SaveCustomerGiftCard", ResponseFormat = WebMessageFormat.Json)]
CustomerSaveGiftCardResponse SaveCustomerGiftCard(SaveCustomerGiftCardRequest request);

 

REQUEST:

POST http://securegateplus.nmp.neuroticmedia.net/Customer/SaveCustomerGiftCard HTTP/1.1
User-Agent: Fiddler
Host: apiv2
Content-Length: 153
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Content-Type: application/json; charset=utf-8
{
"CustomerGuid" : "00000000-0000-0000-0000-000000000000",
"GiftCardNumber": "116885585952xxxx”
}

Get Customer Gift Card Balance

Check the balance on a Gift Card in use by the Consumer. A Gift Card balance is in monetary value.

Sample:

[WebInvoke(Method = "GET", UriTemplate = "GiftCardBalance/{customerGuid}", ResponseFormat = WebMessageFormat.Json)]
GetCustomerGiftCardBalanceResponse GetCustomerGiftCardBalance(string customerGuid);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Customer/GiftCardBalance/00000000-0000-0000-0000-000000000000 HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:43:57 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=asg0xdaos23zbubovzup3wm5; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 94
{"ReturnCode":110,
"ReturnExceptionType":null,
"ReturnMessage":"",
"Balance":0,
"CardNumber":null}

Get Customer

The end user can check their account information on the Merchant’s storefront; and/or the Merchant can get end user information when in need of pulling an order status or consumer status to display a specific object in its storefront.

Sample:

[WebInvoke(Method = "GET", UriTemplate = "{customerGuid}", ResponseFormat = WebMessageFormat.Json)]
GetCustomerResponse GetCustomer(string customerGuid);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Customer/00000000-0000-0000-0000-000000000000 HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:44:48 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=sk0csquzzeax3j45xwrqodal; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 1266
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"Customer":{"AgreedTermsDate":"\/Date(1305927581150-0400)\/","CarrierID":34,"CellPhone":"14046886858","ChangedBy":"xxxxxxxxxxxxxxxxxxxxx","ChangedDate":"\/Date(1305927581150-0400)\/","CreateDate":"\/Date(1305927581180-0400)\/", “CurrentStoreSubscriptionLevelId":-2147483648,"CustomerID":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","CustomerStorePrefs":null,"DateOfBirth":"\/Date(200462400000-0400)\/","DeviceProfileID":-2147483648,"ExcludeExplicit":0,"ExternalSiteCredentials":[],"FirstName":"Tim","Gender":null,"IsActive":0,"IsTest":0,"LastName":"tester@neuroticmedia.com","MerchantID":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","Password":"password","Phone":"","PreferredPaymentTypeID":4,"PrimaryAddressID":"00000000-0000-0000-0000-000000000000","UserAgentID":-2147483648,"UserName":"tester@neuroticmedia.com"},"CustomerAddress":{"AddressName":"Billing","ChangedBy":"00000000-0000-0000-0000-000000000000","ChangedDate":"\/Date(1307994287967-0400)\/","City":"","CountryDestinationID":"00000000-0000-0000-0000-000000000000","CreateDate":"\/Date(1289347401780-0500)\/","CustomerAddressID":"00000000-0000-0000-0000-000000000000","CustomerID":"","IsActive":1,"PostalCode":"","Province":" ","Street1":"","Street2":""}}

Update Customer

This allows an end user to update their information on the Merchant’s storefront.

Sample:

[WebInvoke(Method = "POST", UriTemplate = "Update", ResponseFormat = WebMessageFormat.Json)]
CustomerUpdateResponse UpdateCustomer(UpdateCustomerRequest request);

 

REQUEST:

POST https://securegateplus.nmp.neuroticmedia.net/Customer/Update HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Length: 552
Content-Type: application/json; charset=utf-8
{
"BillingAddress":
{
"AddressName":"Billing",
"City":"Newnan",
"PostalCode":"30076",
"Province":"GA",
"Street1":"487 Gibson Rd"
},
"Customer":

{
"CustomerID":"xxxxxxxxxxxx",
"AgreedTermsDate":"\/Date(1297110939057-0500)\/",
"CellPhone":"678-555-1212",
"DateOfBirth":"\/Date(200462400000-0400)\/",
"FirstName":"Neurotic",
"LastName":"Media",
"MerchantID":"00000000-0000-0000-0000-000000000000",
"Password":"password",
"UserName":"testers@neuroticmedia.com"
}
}

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 20:38:49 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=vbr11s45lx5pdw45r5aszm55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 116
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"ValidationErrors":null,
"ValidationErrorsIsNull":true}

Save Customer Credit Card

Save the Consumer’s Credit Card information.

Sample:

[WebInvoke(Method = "POST", UriTemplate = "SaveCustomerCreditCard", ResponseFormat = WebMessageFormat.Json)]
CustomerSaveCreditCardResponse SaveCustomerCreditCard(SaveCustomerCreditCardRequest request);

 

REQUEST:

POST https://securegateplus.nmp.neuroticmedia.net/Customer/SaveCustomerCreditCard HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Length: 586
Content-Type: application/json; charset=utf-8
{
"CustomerGuid":"xxxxxxxxxx9999",
"CustomerCreditCard":
{
"CustomerID":"xxxxxxxxxxx9999",
"CreditCardTypeID":"00000000-0000-0000-0000-000000000000",
"NameOnCard":"Neurotic Media",
"Number":"xxxxxxxxxxxxxxx9999",
"ExpirationMonth":xx,
"ExpirationYear":20xx,
"Street1":"112 Krog Street, Suite 22",
"Street2":"",
"City":"Atlanta",
"Province":"GA",
"PostalCode":"30307",
"BillingPhone":"404-555-1212",
"CountryDestinationID":"00000000-0000-0000-0000-000000000000",
"IsActive":1
}
}

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 20:47:30 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=hdzu40fzvbkwzi452tsvrx55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 84
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"ValidationErrors":[]}

Get Customer Credit Card

Retrieve the Consumer’s Credit Card information. Note that the customer’s credit card number or CVV are never passed to you.

Sample:

[WebInvoke(Method = "GET", UriTemplate = "/Card/{customerGuid}", ResponseFormat = WebMessageFormat.Json)]
            GetCustomerCreditCardResponse GetCustomerCreditCard(string customerGuid);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Customer/Card/00000000-0000-0000-0000-000000000000 HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:00:38 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=53s21y55uacpvp55ib2qmbys; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 715
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"CardInfo":{"BillingPhone,"ChangedBy":"00000000-0000-0000-0000-000000000000",
"ChangedDate":"\/Date(1307998796293-0400)\/",
"City":"Atlanta","Comment":null,
"CountryDestinationID":"00000000-0000-0000-0000-000000000000",
"CreateDate":"\/Date(1307998796293-0400)\/",
"CreditCardTypeID":"00000000-0000-0000-0000-000000000000",
"CustomerCreditCardID":" xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx999",
"CustomerID":" xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx999","ExpirationMonth":xx,"ExpirationYear":20xx,"IsActive":1,
"NameOnCard":"NeuroticMedia",
"Number":"xxxxxxxxxxxx99999",
"PostalCode":"30307","Province":"GA","Street1":"112 Krog Street, Suite 22","Street2":""}}

 

Does Customer Exist for Merchant

This queries the Merchant’s storefront and checks to see if the specific Customer exists in the system. Use this when you need to establish if the end user already exists or you need them to fill up a registration form for the first time. Pass in email and cellphone and we will reply with the answer. 

 

Sample:

[WebInvoke(Method = "GET", UriTemplate = "DoesCustomerExistForMerchant/?email={emailAddress}&cell={cellPhone}", ResponseFormat = WebMessageFormat.Json)]
        DoesCustomerExistForMerchantResponse DoesCustomerExistForMerchant(string emailAddress, string cellPhone);

 

REQUEST:

https://securegateplus.nmp.neuroticmedia.net/Customer/DoesCustomerExistForMerchant/?email=tim%40neuroticmedia.com HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:02:26 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=oe1jmgztfvaejdftov3gcwib; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 165
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"CellPhoneExists":false,
"EmailExists":true,
"ExistingCustomerId":"xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx999"}

Get History

A Consumer can retrieve their purchase history from the Merchant’s storefront.   This functionality is included in the My Music Service.  A client would utilize GetAllArtists, GetAlbumsByArtist, GetAlbumDetails, and GetDownloadUri to construct a nice browse able history UI.

Reset Downloads

This call resets the download counter for a particular Consumer / Song combination to “0”. This is primarily used for debugging purposes when a Merchant may be having a problem with downloads. It is advised to weave this into a CRM system so that download can be re-activated selectively for consumers who may have suffered technical issues during their initial download attempt. 

 

Sample:

[WebInvoke(Method = "POST", UriTemplate = "ResetDownload", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
        ResetDownloadResponse ResetDownload(string OrderItemDownloadId);

 

REQUEST:

POST https://securegateplus.nmp.neuroticmedia.net/Customer/ResetDownload HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: securegateplus.nmp.neuroticmedia.net
Content-Length: 69
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
 
{
"OrderItemDownloadId" :"00000000-0000-0000-0000-000000000000"
}

 

RESPONSE:

HTTP/1.1 200 OK
Date: Fri, 05 Aug 2011 21:59:17 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=b3v0lhurzonzrl45n4bymaal; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 62
{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":""}

 

Has Credit Card On File

This simple call returns true or false as to whether a certain customer has credit card info saved.

Get Customer From Code

This simple call retrieves a customer from a specific code – used only for pin code login, which is an option (i.e. we can allow in a PIN code campaign for the PIN code to act as the login credentials for a returning user).

Save Metrics for Customer

This simple call is used to save generic usage information for a customer, i.e. subscription play, streaming activity, etc.

Process Product Specific Giveaway

This call is used to purchase a code specific product for a consumer.  This is used around the concept of a reward PIN code being used to get a specific product.  This method will redeem the specific code, and will return a download link and productGuid for the specific product associated with that reward PIN code.  Such a product-specific PIN code would have been previously set up in our system as such.

 

This method is normally used for campaigns specific to an album delivery, such as (i) when a music locker giveaway involves a physical PIN code distribution (insert in CD and vinyl for example); (ii) when an artist is selling an album via a plastic card in a broader-catalog store; or (iii) when a customer works with a record company on an “artist of the week” free giveaway”; etc. 

 

Upon making a successful call, this method will place an order for the specific product in our system and will add it to the consumer’s locker (for Customers using our locker service), where it can then be consumed using locker download or streaming services.  It returns a ProductGuid field that identifies the album just placed in consumer’s locker. You can then use that to populate their locker page in your GUI. You can also key off of this payload to re-direct to whichever page in your store you desire, such as if to take the shopper to the artist’s page, or your home page, or your locker page.

 

Sample:

 

REQUEST:

POST https://securegateplus.nmp.neuroticmedia.net/Customer/ProcessProductSpecificGiveaway HTTP/1.1

User-Agent: Fiddler
Content-Type: application/json; charset=utf-8
api-key: C9295CE2-CB55-4742-88B8-B4000ADA5BF4

Host: securegateplus.nmp.neuroticmedia.net
Content-Length: 79

{

"CustomerGuid":"EFDFAC4A-9D11-4A4B-852E-314A29660EF8",
"Code":"fcHZpnVg"

}

 

RESPONSE: 

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 518
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.5
Set-Cookie: ASP.NET_SessionId=aktm1gulcf1vysxaviuma0gq; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET

Date: Fri, 17 Oct 2014 10:33:32 GMT
 

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":"","DownloadURL":"https:\/\/cloud.download.neuroticmedia.net\/download.ashx?ProductID=9337024b-357f-4324-87d0-115073c6eac2&dl=1&OID=600f5375-c000-47dd-9f72-013bb2788a2e&catid=30c482cf-6693-4acd-8619-878f3cfb8862&fn=UMG_audtrk_00602517963863_01_007_167_0002_009.mp3&wdpid=bc53182f-c41e-4669-8614-42af4eba9809&wdvid=b6fd5cdd-8280-4b32-aeb1-c0f8acf68f88&UITS_CDN_Encode=1","FileSize":11032254,"IsAlbum":false,"ProductGuid":"9337024b-357f-4324-87d0-115073c6eac2"}

Customer Subscription Services

The following service options are provided to Merchants and mobile carriers who administer recurring subscription services:

Activate Subscription

This method allows a carrier to use customer phone number and their subscription plan identifier to create/or update the customer in our system. This also makes a log of the activation time for the new subscription and the deactivation time for the customer’s previous subscription.

Presently, this method only requires the phone number parameter and the subscription level detail, which can for now be hard coded (if down the road you may want to launch more than the initial program, we would then start leveraging this parameter; for example, while we start with 4GB max storage allowance, you may later launch a more expensive program that includes more storage, etc.).

The method also allows an optional vendor customer ID parameter to be passed.  This field is an alphanumeric field.  The idea is for the carrier to pass in their customer ID (carrier customer contract ID) for this field.  Later this field will be echoed in reports so that reconciliation between carrier and Neurotic Media financials is feasible.  In addition, a carrier may use this method to re-activate a subscriber if the subscriber lapses.  When doing such a re-activation, the subscriber’s phone # may be updated so long as the vendor customer ID stays the same (i.e. the same customer in carrier’s system).

User data: If you wish to send us additional parameters such as name, age, gender, password, email, zip, note that we have existing calls we can share with you to pass such values to us during the same API post. Let us know and we can send you the specifics. They are excluded from this brief summary at this time as they are not a requirement for activation.  We do believe, however, that they will prove mission critical over time since analytics will allow you to drive actionable customer segmentation and targeting with this data.

 

Sample:

 [WebInvoke(Method = "GET", UriTemplate = "ActivateSubscription/?mobilePhoneNumber={strMobilePhoneNumber}&subscriptionLevelIdentifier={strApiSubscriptionLevelId}", ResponseFormat = WebMessageFormat.Json)]
        BaseResponse ActivateSubscription(string strMobilePhoneNumber, string strApiSubscriptionLevelId);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/customer/activateSubscription/?mobilePhoneNumber=14043932091&subscriptionLevelIdentifier=PLAN_10GHTTP/1.1
User-Agent: Fiddler
api-key: 532d045f-5172-41c5-a00e-8d0f504effe2
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 119

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":""}

Deactivate subscription

This allows a carrier to deactivate a customer’s subscription for his/her current subscription plan.  If the vendorCustomerId (carrier customer contract ID) is passed in, the customer lookup is done with that field; otherwise customer is retrieved using passed-in mobilePhoneNumber.

 

Sample:

 [WebInvoke(Method = "GET", UriTemplate = "DeactivateSubscription/?mobilePhoneNumber={strMobilePhoneNumber}&subscriptionLevelIdentifier={strApiSubscriptionLevelId}", ResponseFormat = WebMessageFormat.Json)]
        BaseResponse DeactivateSubscription(string strMobilePhoneNumber, string strApiSubscriptionLevelId);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/customer/deactivateSubscription/?mobilePhoneNumber=14043932091&subscriptionLevelIdentifier=PLAN_10GHTTP/1.1
User-Agent: Fiddler
api-key: 532d045f-5172-41c5-a00e-8d0f504effe2
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 119

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":""}

Update Customer Mobile Phone Number

This method allows the carrier to update the customer’s phone number in the Neurotic Media system.

 

Sample:

[WebInvoke(Method = "GET", UriTemplate = "MobileNumberUpdate/?newPhoneNumber={strMobilePhoneNumber}&vendorCustomerId={strVendorCustomerId}", ResponseFormat = WebMessageFormat.Json)]

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Customer/MobileNumberUpdate/?newPhoneNumber=6787490314&vendorCustomerId=A34912DDB3aa9d HTTP/1.1
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
api-key: 532D045F-5172-41C5-A00E-8D0F504EFFE2

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":""}

Transfer subscription to another phone but same phone #

This allows a carrier to simply transfer a plan to a new phone when too many devices are on the plan. Note that this function is also now actionable by the subscriber herself by releasing one phone and accepting the other from the Settings section of the app.

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Customer/TransferSubscription/?newPhoneNumber=6787490314&vendorCustomerId=A34912DDB3aa9d HTTP/1.1
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
api-key: 532D045F-5172-41C5-A00E-8D0F504EFFE2

 

RESPONSE:

{"ReturnCode":0,"ReturnExceptionType":null,"ReturnMessage":""}

Get Mobile Billing

The following service is only available for stores that have SMSC and mobile billing enabled.

 

Sample:

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/MobileBillingStatus/{phoneNum}", ResponseFormat = WebMessageFormat.Json)]
      GetMobileBillingStatusResponse GetMobileBillingStatus(string phoneNum);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Mobile/MobileBillingStatus/5755127405 HTTP/1.1
api-key: B212FB8B-FA82-458D-84DF-CA7A88740CAE
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 0

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 22:20:12 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=15hoh5rnyoeghh55osjvkprj; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 62
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":""}

Text Password

The following service is only available for stores that have SMSC and mobile billing enabled.

 

Sample:

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/TextPassword/{strCustomerID}", ResponseFormat = WebMessageFormat.Json)]
      TextPasswordResponse TextPassword (string strCustomerID);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Mobile/TextPassword/00000000-0000-0000-0000-000000000000 HTTP/1.1
api-key: B212FB8B-FA82-458D-84DF-CA7A88740CAE
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8
Content-Length: 0

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 22:24:27 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=zs0la3jvzbh432553yi3kni0; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 62
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":""}

Merchandising Services

The Neurolinq™ API Merchandising Services (or "site setting services") contain a number of useful tools that help you properly merchandise your store, site, widget, or application. These services cover a wide range of abilities.

These services involve the use of Neurotic Media's CMS admin to manage feature placement. You (or Neurotic Media personnel) may designated specific feature controls and filter product into them, and then through API calls, you can program them into real estate in your own UX, whereby moving forward they are populated through the API automatically.

This service is useful for widgets and apps that lack a CMS to work with, and/or the personnel to administer merchandising changes; or for stores that do have a CMS but seek the Neurolinq portion of merchandising to exist outside their CMS.

 

SOAP WSDL

The URL associated with the Merchandising - Product Service API is:
http://securegateplus.nmp.neuroticmedia.net/Merchandising/Product.svc?wsdl

 

The URL associated with the Merchandising - Store Settings Services API is:
http://securegateplus.nmp.neuroticmedia.net/Merchandising/StoreSettings.svc?wsdl

Get Site Settings

The Merchant wishes to obtain the settings for his or her storefront. This call will return all the basic information about the Merchant store. This includes message translations, shop attribute settings, etc.

 

Sample:

[WebInvoke(Method="GET",BodyStyle=WebMessageBodyStyle.Bare, UriTemplate = "", ResponseFormat = WebMessageFormat.Json)]GetSiteSettingsResponse GetSiteSettings();

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/SiteSettings/ HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:27:30 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=zet4zlrrq1wviemhj5uharrn; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 134692
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"Settings":
{"ActiveLocationPlaceTokens":["Neurotic","Neurotic Media","NeuroticMedia"],"CSS":"wap20style_0094.css","ContentTranslations":[{"ContentTranslationId":0, "LanguageId":3,"Message":"<div align=\"center\">\u000d\u000a<table width=\"252\" height=\"53\" cellspacing=\"0\" cellpadding=\"1\" border=\"0\" summary=\"\">\u000d\u000a    <tbody>\u000d\u000a        <tr>\u000d\u000a            <td><a target=\"_blank\" href=\".\/HelpPage.aspx\"><font color=\"#ffffff\">AIDE\/FAQ <\/font><\/a><\/td>\u000d\u000a            <td><a target=\"_blank\" href=\".\/PrivacyPolicy.aspx\"><font color=\"#ffffff\">Politiques de confidentialité<\/font><\/a><\/td>\u000d\u000a            <td><a target=\"_blank\" href=\".\/TOS.aspx\"><font color=\"#ffffff\">Termes de service<\/font><\/a><\/td>\u000d\u000a        <\/tr>\u000d\u000a    <\/tbody>\u000d\u000a<\/table>\u000d\u000a<span id=\"_ctl0__ctl1__ctl0_lblHTMLMessage\"><span><strong><br \/>\u000d\u000a<font size=\"1\" color=\"#ffffff\"><br \/>\u000d\u000a<\/font><\/strong><font size=\"1\" color=\"#ffffff\"> <\/font><\/span><\/span><\/div>","PageShopControlMapId":0,"ShopControlId":30197},{"ContentTranslationId":0,"LanguageId":3,"Message":"<p>Vous êtes quelques étapes faciles d'échanger votre code et télécharger votre musique:<\/p>\u000d\u000a<ol>\u000d\u000a    <li>Suivez les instructions pour entrer votre code.<\/li>\u000d\u000a    <li>Commencez à naviguer le site et pré-visualiser la musique pour choisir votre téléchargements libre.<\/li>\u000d\u000a    <li>Cliquez sur le bouton de téléchargement pour commencer le processus de téléchargement.<\/li>\u000d\u000a<\/ol>\u000d\u000a<div id=\"DownloadProcess\"> <strong>Le Processus de téléchargement:<\/strong><br \/>\u000d\u000a<ol>\u000d\u000a    <li><strong>Téléchargements En ligne à votre ordinateur - comme Musique et Vidéo : Au message de téléchargement, choisissez \"Sauvent\" et sauvent à votre bureau, dans votre \"Ma Musique\" dossier, ou un autre emplacement de choix. Ensuite ouvrez ce dossier avec votre préférée joueur.\u000d\u000a    <ul>\u000d\u000a        <li>Pour des fichiers de Windows, nous recommandons l'utilisation du Lecteur Windows Media. Votre joueur de musique ira en ligne obtenir une licence la première fois que vous jouez chaque chanson téléchargée de Windows Media ou le fichier vidéo, restez en ligne pour ce processus jusqu'aux le fichier joue.<\/li>\u000d\u000a    <\/ul>\u000d\u000a    <\/li>\u000d\u000a    <li><strong>Téléchargements Mobiles à votre téléphone - comme Sonneries et papier- peint de Téléphone portable:<\/strong> Quand vous commandez un article, un message sur l'écran montrera qu'il a été envoyé directement à votre téléphone. Quand vous recevez notre transmission à votre téléphone, suivez les instructions incluses pour compléter la livraison.<\/li>\u000d\u000a<\/ol>\u000d\u000a<div><strong>Équipement requis:<\/strong><br \/>\u000d\u000aOn recommande Windows XP, IE 6.0 et Lecteur Windows Media 7.1 ou plus haut est recommandé - bien que d'autres navigateurs et joueurs de PC travaillent aussi bien. <\/div>\u000d\u000a<\/div>","PageShopControlMapId":361745,"ShopControlId":0},{"ContentTranslationId":0,"LanguageId":3,"Message":"<p>Vous &ecirc;tes quelques &eacute;tapes faciles d'&eacute;changer votre code et t&eacute;l&eacute;charger votre musique:<\/p>\u000d\u000a<ol>\u000d\u000a    <li>Suivez les instructions pour entrer votre code.<\/li>\u000d\u000a    <li>Commencez &agrave; naviguer le site et pr&eacute;-visualiser la musique pour choisir votre t&eacute;l&eacute;chargements libre.<\/li>\u000d\u000a    <li>Cliquez sur le bouton de t&eacute;l&eacute;chargement pour commencer le processus de t&eacute;l&eacute;chargement.<\/li>\u000d\u000a<\/ol>\u000d\u000a<div id=\"DownloadProcess\"> <strong>Le Processus de t&eacute;l&eacute;chargement:<\/strong><br \/>\u000d\u000a<ol>\u000d\u000a    <li><strong>T&eacute;l&eacute;chargements En ligne &agrave; votre ordinateur - comme Musique et Vid&eacute;o : Au message de t&eacute;l&eacute;chargement, choisissez &quot;Sauvent&quot; et sauvent &agrave; votre bureau, dans votre &quot;Ma Musique&quot; dossier, ou un autre emplacement de choix. Ensuite ouvrez ce dossier avec votre pr&eacute;f&eacute;r&eacute;e joueur.     <\/strong>\u000d\u000a    <ul> <strong>        <\/strong>\u000d\u000a        <li><strong>Pour des fichiers de Windows, nous recommandons l'utilisation du Lecteur Windows Media. Votre joueur de musique ira en ligne obtenir une licence la premi&egrave;re fois que vous jouez chaque chanson t&eacute;l&eacute;charg&eacute;e de Windows Media ou le fichier vid&eacute;o, restez en ligne pour ce processus jusqu'aux le fichier joue.<\/strong><\/li>\u000d\u000a        <strong>    <\/strong><\/ul>\u000d\u000a        <strong>    <\/strong><\/li>\u000d\u000a        <strong>    <\/strong>\u000d\u000a        <li><strong><strong>T&eacute;l&eacute;chargements Mobiles &agrave; votre t&eacute;l&eacute;phone - comme Sonneries et papier- peint de T&eacute;l&eacute;phone portable:<\/strong> Quand vous commandez un article, un message sur l'&eacute;cran montrera qu'il a &eacute;t&eacute; envoy&eacute; directement &agrave; votre t&eacute;l&eacute;phone. Quand vous recevez notre transmission &agrave; votre t&eacute;l&eacute;phone, suivez les instructions incluses pour compl&eacute;ter la livraison.<\/strong><\/li>\u000d\u000a    <\/ol>\u000d\u000a    <div><strong><strong>&Eacute;quipement requis:<\/strong><br \/>\u000d\u000a    On recommande Windows XP, IE 6.0 et Lecteur Windows Media 7.1 ou plus haut est recommand&eacute; - bien que d'autres navigateurs et joueurs de PC travaillent aussi bien. <\/strong><\/div>\u000d\u000a    <\/div>"

Get Site Countries

Merchant is able to ascertain which countries the store is available in. A merchant may call on this data to drive what territorial restrictions they then apply in their own CMS (store, widget or app) with respect to required country territorial restrictions. It is then the Merchant’s responsibility to administer such restrictions using Geo-IP services or consumer’s physical address. Should you fail to do so and transact with your consumer, our system will still reject the delivery attempt based on our IP DB.

 

Sample:

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "SiteCountries", ResponseFormat = WebMessageFormat.Json)]
        GetCountriesResponse GetSiteCountries();

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/SiteSettings/SiteCountries HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:29:17 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=cuw4ma45ezhgjffouxovo1el; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 244
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"Countries":[{"Abbreviation":"US","DestinationGuid":"00000000-0000-0000-0000-000000000000","DestinationID":260,"DestinationTypeID":4,"Name":"United States of America","ParentID":0}]}

Get Page Definition

This returns configuration information for a page in the CMS. Information is displayed in columns showing the various controls. Each store in our CMS can be administered with various pages, and various feature controls per page. This method allows an API Merchant to leverage our CMS tools to administer merchandising features on their widget, store, or app. This exposes the arrangement and feature controls of a given page.

 

Sample:

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "PageDefinition/{pageGuid}", ResponseFormat = WebMessageFormat.Json)]
        GetPageDefinitionResponse GetPageDefinition(string pageGuid);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/SiteSettings/PageDefinition/00000000-0000-0000-0000-000000000000 HTTP/1.1
User-Agent: Fiddler
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 19:31:36 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=vugjr2rol1bohpzkgxgzqn55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 2202
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"PageDefinition":{"FooterControls":{"ColumnNumber":99
,"Controls":[{"ColumnNumber":99,"ControlClassName":"",
"ControlSkinPath":"\\ShopControls\\HTMLMessage.ascx","Message":"<script type=\"text\/javascript\">\u000d\u000a\u000d\u000a var _gaq = _gaq || [];\u000d\u000a _gaq.push(['_setAccount', 'UA-1825337-34']);\u000d\u000a _gaq.push(['_trackPageview']);\u000d\u000a\u000d\u000a (function() {\u000d\u000a var ga = document.createElement('script'); ga.type = 'text\/javascript'; ga.async = true;\u000d\u000a ga.src = ('https:' == document.location.protocol ? 'https:\/\/ssl' : 'http:\/\/www') + '.google-analytics.com\/ga.js';\u000d\u000a var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\u000d\u000a })();\u000d\u000a\u000d\u000a<\/script>",
"Name":"Footer Content","PageShopControlMapID":408379,
"SequenceNumber":1,
"ShopControlID":35929}]},
"HeaderControls":{"ColumnNumber":0,"Controls":[]},"Name":"Home","PageClassName":"","PageColumns":[{"ColumnNumber":1,"Controls":[{"ColumnNumber":1,"ControlClassName":"","ControlSkinPath":"\/ShopControls\/SearchInput.ascx","Message":"","Name":"Search Input Small","PageShopControlMapID":405207,"SequenceNumber":1,"ShopControlID":35378},{"ColumnNumber":1,"ControlClassName":"","ControlSkinPath":"\/ShopControls\/ProductRowLarge.ascx","Message":"","Name":"Top Hits","PageShopControlMapID":405208,"SequenceNumber":2,"ShopControlID":35369},{"ColumnNumber":1,"ControlClassName":"","ControlSkinPath":"\/ShopControls\/BodyNav.ascx","Message":"","Name":"Home Nav","PageShopControlMapID":405209,"SequenceNumber":3,"ShopControlID":35367},{"ColumnNumber":1,"ControlClassName":"","ControlSkinPath":"\/ShopControls\/HTMLMessage.ascx","Message":"","Name":"Main Feature","PageShopControlMapID":405210,"SequenceNumber":4,"ShopControlID":35368},{"ColumnNumber":1,"ControlClassName":"","ControlSkinPath":"\/ShopControls\/ProductRowSmall.ascx","Message":"","Name":"Top Albums","PageShopControlMapID":405211,"SequenceNumber":5,"ShopControlID":35370}]}],"PageGuid":"00000000-0000-0000-0000-000000000000","PageID":63373,"PageSkinPath":"\/Pages\/BasePage.ascx","PageTypeID":15}}

Get Site Pages

This call gets all the pages that are defined in Neurotic Media’s CMS admin for this StoreID.

Get Subscription Level Details

This returns the subscription plan details of a subscription store. You pass in a store subscription level ID, and get back the information about that level, i.e. how many GB of music is allowed for download.


Sample:

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetSubscriptionLevelDetails/{strStoreSubscriptionLevelId}", ResponseFormat = WebMessageFormat.Json)]
GetSubscriptionLevelDetailsResponse GetSubscriptionLevelDetails(string strStoreSubscriptionLevelId);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/sitesettings/GetSubscriptionLevelDetails/1 HTTP/1.1
User-Agent: Fiddler
api-key: 532d045f-5172-41c5-a00e-8d0f504effe2
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

HTTP/1.1 200 OK
Date: Wed, 18 Apr 2012 14:34:38 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Content-Length: 244
Set-Cookie: ASP.NET_SessionId=efuc2g4z1iqtoicy1ug1p1vd; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"subscriptionLevelDetail":{"ApiSubscriptionLevelId":"PLAN_10G","MaxGigabytesOfMusic":10,"NMLabelCost":7.0000,"NMWholeSaleFee":9.0000,"SubscriptionRetailCost":10.0000,"storeId":2503}}

Get Activity Template Definition

This returns page definition for the pages in the subscription store. Generally these are used to define the storefront experience in native applications, not a website. There are 3 different types of pages: home page, product list landing page and product list page. Each of those pages is in a different structure.

 

Sample:

[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetActivityTemplateDefinition/{strPageGuid}", ResponseFormat = WebMessageFormat.Json)]
GetActivityTemplateDefinitionResponse GetActivityTemplateDefinition(string strPageGuid);

 

REQUEST:

GET /sitesettings/GetActivityTemplateDefinition/00000000-0000-0000-0000-000000000000 HTTP/1.1
User-Agent: Fiddler
api-key: 532d045f-5172-41c5-a00e-8d0f504effe2
Host: securegateplus.nmp.neuroticmedia.net

 

RESPONSE:

HTTP/1.1 200 OK
Date: Wed, 18 Apr 2012 15:38:49 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Content-Length: 5552
Set-Cookie: ASP.NET_SessionId=c2esmezp5n4wbrrzbztvmyrr; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"pageXML":"<?xml version=\"1.0\" encoding=\"utf-16\"?>\u000d\u000a<Home xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\">\u000d\u000a <Content>\u000d\u000a <Tabs>\u000d\u000a <Tab>\u000d\u000a <name> TabA <\/name>\u000d\u000a <image>TabA.jpg <\/image>\u000d\u000a <targetPageGuid>00000000-0000-0000-0000-000000000000<\/targetPageGuid>\u000d\u000a <\/Tab>\u000d\u000a <Tab>\u000d\u000a <name> TabB <\/name>\u000d\u000a <image>TabB.jpg<\/image>\u000d\u000a <targetPageGuid>00000000-0000-0000-0000-000000000000<\/targetPageGuid>\u000d\u000a <\/Tab>\u000d\u000a <\/Tabs>\u000d\u000a <Thumbnails>\u000d\u000a <ThumbNail>\u000d\u000a <image>ThumbNail1.jpg<\/image>\u000d\u000a <albumId>6856893<\/albumId>\u000d\u000a <\/ThumbNail>\u000d\u000a <ThumbNail>\u000d\u000a <image>ThumbNail2.jpg<\/image>\u000d\u000a <albumId>6856872<\/albumId>\u000d\u000a <\/ThumbNail>\u000d\u000a <\/Thumbnails>\u000d\u000a <ProductLists>\u000d\u000a <ProductList>\u000d\u000a <listTitle>Home List <\/listTitle>\u000d\u000a <products>\u000d\u000a <product>\u000d\u000a <id>6856893<\/id>\u000d\u000a <albumId>6856893<\/albumId>\u000d\u000a <albumName>Rounder Banjo Extravaganza \"Live\"<\/albumName>\u000d\u000a <trackName \/>\u000d\u000a <artistName>Tom Adams, Tony Trischka, Tony Furtado<\/artistName>\u000d\u000a <image>\\\\web03\\\\AlbumImages\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\Medium_UMG_cvrart_00011661029620_01_RGB72_300x300_11CMGIM21178.jpg<\/image>\u000d\u000a <previewUrl \/>\u000d\u000a <isBundle>true<\/isBundle>\u000d\u000a <\/product>\u000d\u000a <product>\u000d\u000a <id>6856872<\/id>\u000d\u000a <albumId>6856868<\/albumId>\u000d\u000a <albumName>Spring in the Old Country<\/albumName>\u000d\u000a <trackName>Minority<\/trackName>\u000d\u000a <artistName>Slavek Hanzlik, Bela Fleck, Stuart Duncan, Mark Schatz<\/artistName>\u000d\u000a <image>\\\\web03\\\\AlbumImages\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\Medium_UMG_cvrart_00018964058227_01_RGB72_300x300_11CMGIM00777.jpg<\/image>\u000d\u000a <previewUrl>\\\\file01\\musichome\\vol14\\WebData\\Stream\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\UMG_audclp_00018964058227_01_004_50_0002_102.mp3<\/previewUrl>\u000d\u000a <isBundle>false<\/isBundle>\u000d\u000a <\/product>\u000d\u000a <product>\u000d\u000a <id>6856854<\/id>\u000d\u000a <albumId>6855573<\/albumId>\u000d\u000a <albumName>Irradiant<\/albumName>\u000d\u000a <trackName>The Perfect Disastet<\/trackName>\u000d\u000a <artistName>Scarve<\/artistName>\u000d\u000a <image>\\\\web03\\\\AlbumImages\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\Medium_3760053840486.jpg<\/image>\u000d\u000a <previewUrl>\\\\file01\\musichome\\vol14\\WebData\\Stream\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\3760053840486_1_06_64_0001_102.mp3<\/previewUrl>\u000d\u000a <isBundle>false<\/isBundle>\u000d\u000a <\/product>\u000d\u000a <product>\u000d\u000a <id>6857098<\/id>\u000d\u000a <albumId>6857086<\/albumId>\u000d\u000a <albumName>Z-Funk<\/albumName>\u000d\u000a <trackName>Sunday Walk<\/trackName>\u000d\u000a <artistName>Li'l Brian &amp; the Zydeco Travelers<\/artistName>\u000d\u000a <image>\\\\web03\\\\AlbumImages\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\Medium_UMG_cvrart_00011661214620_01_RGB72_300x300_11CMGIM21175.jpg<\/image>\u000d\u000a <previewUrl>\\\\file01\\musichome\\vol14\\WebData\\Stream\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\UMG_audclp_00011661214620_01_012_50_0002_102.mp3<\/previewUrl>\u000d\u000a <isBundle>false<\/isBundle>\u000d\u000a <\/product>\u000d\u000a <product>\u000d\u000a <id>6857082<\/id>\u000d\u000a <albumId>6857070<\/albumId>\u000d\u000a <albumName>Fresh<\/albumName>\u000d\u000a <trackName>My Baby She's Gone<\/trackName>\u000d\u000a <artistName>Li'l Brian &amp; the Zydeco Travelers<\/artistName>\u000d\u000a <image>\\\\web03\\\\AlbumImages\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\Medium_UMG_cvrart_00011661213623_01_RGB72_300x300_11CMGIM21179.jpg<\/image>\u000d\u000a <previewUrl>\\\\file01\\musichome\\vol14\\WebData\\Stream\\Catalog\\00000000-0000-0000-0000-000000000000\\Product\\00000000-0000-0000-0000-000000000000\\UMG_audclp_00011661213623_01_012_50_0002_102.mp3<\/previewUrl>\u000d\u000a <isBundle>false<\/isBundle>\u000d\u000a <\/product>\u000d\u000a <\/products>\u000d\u000a <\/ProductList>\u000d\u000a <\/ProductLists>\u000d\u000a <\/Content>\u000d\u000a<\/Home>"}

Get Site Activities

This call is used only for subscription apps. This returns a list.

Get Page Feature Products

This call gives the Merchant access to the CMS and the ability to examine the status of the various controls set for a Store in Neurotic’ Media’s CMS. Each “feature control” in the store has its own ID number, and used in the following call, would return the products that have been merchandised into that specified feature control ID. For example, if on ‘home page’ you have an “Artist of the Week” choice displaying which corresponds with the same control name in admin, than this control can be edited in admin and the changes will be pulled by your API calls into your UX.

 

Sample:

[WebInvoke(Method = "GET", UriTemplate = "PageShopControlProducts/{pageShopControlMapId}", ResponseFormat = WebMessageFormat.Json)]

        GetPageShopControlProductsResponse GetPageShopControlProducts(string pageShopControlMapId);

 

REQUEST:

GET https://securegateplus.nmp.neuroticmedia.net/Product/PageShopControlProducts/406133 HTTP/1.1
api-key: B6FFF46B-9557-42F0-AB88-2FA53C098E84
User-Agent: Fiddler
Host: securegateplus.nmp.neuroticmedia.net
Content-Type: application/json; charset=utf-8

 

RESPONSE:

HTTP/1.1 200 OK
Date: Mon, 13 Jun 2011 21:38:58 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=tyy1kjnggyimjkqbflpjms55; path=/; HttpOnly
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 1990
{"ReturnCode":0,
"ReturnExceptionType":null,
"ReturnMessage":"",
"PageShopControlProducts":[
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_00000000000021133275-300x300_72dpi_RGB_100q.jpg","AlbumName":"I And Love And You","AlbumStartDate":"\/Date(1246939200000-0400)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"The Avett Brothers","ComponentNum":1,"CreditPrice":1,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"I And Love And You","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"","Price":1.2900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":3,"ShowActionButton":true,"StartDate":"\/Date(1246939200000-0400)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":1},
{"ActionButtonAlternateText":null,"AlbumGuid":"00000000-0000-0000-0000-000000000000","AlbumImage":"http:\/\/images.amplified.com\/RR\/AlbumImages\/Catalog\/00000000-0000-0000-0000-000000000000\/Product\/00000000-0000-0000-0000-000000000000\/Mid_UMG_cvrart_00843930004010_01_RGB72_300x300_3102693.jpg","AlbumName":"Speak Now","AlbumStartDate":"\/Date(1287979200000-0400)\/","ArtistGuid":"00000000-0000-0000-0000-000000000000","ArtistName":"Taylor Swift","ComponentNum":1,"CreditPrice":13,"Description":null,"EndDate":"\/Date(-62135578800000-0500)\/","IsBundle":true,"IsEdited":false,"IsExplicit":false,"IsPromotional":false,"IsSellable":true,"Name":"Speak Now","ParentGuid":"00000000-0000-0000-0000-000000000000","PreviewUri":"","Price":12.7900,"ProductGuid":"00000000-0000-0000-0000-000000000000","ProductTypeID":3,"ShowActionButton":true,"StartDate":"\/Date(1287979200000-0400)\/","StreetDate":"\/Date(-62135578800000-0500)\/","TrackNum":14}]}

Download Manager

The native Neurotic Media Download Manager application communicates with the media download website using local HTTP requests and responses.  When the user performs a certain action on the website, the site sends an HTTP request within the user’s computer.  The requests are sent on port 13000.  The application listens for HTTP requests on port 13000.

UX: If the end user does not yet have the Download Manager installed, he/she should be asked to install it.  To achieve this, we recommend emulating the UX offered by Neurotic Media on our hosted sites, for example our showcase site www.amplified.com. Customer should try to load the ping image using a Javascirpt image.  If the load fails, assume the Download Manager is not installed and display a box offering for user to install.  Neurotic Media would provide a Windows and Mac URL that Customer may plug into that popup. Specifically, the Windows version is .Net based and the Mac version is Cocoa based.

Supported URLs and Responses:

The application will respond to the media download website’s requests to verify that it is running, to download tracks, to download albums and to display the application on demand. 

The HTTP server running within the Neurotic Download Manager responds to GET requests for the following URLs:

 

URL Method Response Action

/ping.gif

GET

1x1 GIF image

This is sent to verify whether the download manager is 'running'.

/track.gif

GET

1x1 GIF image

This is sent when a track should be downloaded.

/album.gif

GET

1x1 GIF image

This is sent when an entire album should be downloaded.

/show.gif

GET

1x1 GIF image

This is sent when the application should be displayed.

 

Required Parameters:

The ping.gif request requires no parameters. 

When downloading a track, the website will provide one parameter that contains the unique identifier of the track that is to be downloaded. 

When downloading an album, the website will provide two parameters.  The first parameter contains the unique identifier for the album that is to be downloaded.  The second parameter is the unique identifier for the order item that is associated with that album.

The show.gif request requires no parameters.

 

URL Parameter Name Description Example

/ping.gif

N/A

N/A

N/A

/track.gif

OID

ID of the track to download

D86E2BA7-CE70-4468-951B-67891D316058

/album.gif

AlbumID

ID of the album to download

D86E2BA7-CE70-4468-951B-67891D316058

/album.gif

OrderItemID

ID of the order item associated with the album to download

E9F537C6-9BE8-4B9D-B33D-23F8FB21702D

/show.gif

N/A

N/A

N/A

 

Use Case:

Note that the javascript samples below use the jquery framework.

  1. User purchases/orders a track on website.
  2. Web site determines via javascript whether the download manager application is running on the user’s computer:

 

img = new Image();
img.onload = function ()
{
            sendToDownloadManager(downloadUri);
            if (typeof callback == 'function')
            callback();
        }
          img.onerror = function (downloadUri)
{
            showDownloadPromptScreen(OID, true);
            if (typeof callback == 'function')
            callback();
          }
          img.src = "http://127.0.0.1:13000/ping.gif";


In this code, we use a javascript image object to make the http call to the locally running download manager application. Notice we use onload event (meaning the image ‘loaded’ successfully, i.e. the download manager application replied) to initiate sending the content to the download manager.

  1. If website determines the download manager is NOT running, (img.onerror in above example), a javascript dialog should be displayed.  This dialog should ask the user either to,
    1. Install the download manager:  If user clicks this option, set the window.location value to the download manager installation url provided by Neurotic Media.  After setting window.location, update the dialog to ask user to click a button once install is complete.  Once user clicks the button, send download to download manager (see 4 below).
    2. Download via browser:  If user clicks this option,  IF the download Is a single track, go ahead and send that track.  IF the download is an album, send user to a history page where they can then download individual tracks.
  1. If the website determines the download manager IS running, (img.onload in above example), send the download to the download manager for fulfillment:

 

 var AlbumID, OrderItemID, OID;
                //check if it is downloading album if (downloadUri.indexOf("BulkGet") > -1) {index = downloadUri.indexOf("AlbumID="); AlbumID = downloadUri.substring(index + 8, index + 8 + "00000000-0000-0000-0000-000000000001".length);                 index = downloadUri.indexOf("OrderItemID="); OrderItemID = downloadUri.substring(index + 12, index + 12 + "00000000-0000-0000-0000-000000000001".length);                 random = (Math.random() + 1).toString(36).substring(7);                 img = new Image(); img.onerror = function () { $("#divDownloadViaDownloadManagerErr").show(); $('#divDownloadViaDownloadManagerMsg').hide(); $("#divDownoadSongIndividually").hide(); }                 img.onload = function () { $("#dialog-form").dialog("close"); } img.src = "http://127.0.0.1:13000/album.gif?R=" + random+ "&AlbumID=" + AlbumID + "&OrderItemID=" + OrderItemID;                               }                 //check if downloading one track else {             index = downloadUri.indexOf("OID=");             OID = downloadUri.substring(index + 4, index + 4 + "00000000-0000-0000-0000-000000000001".length);             random = (Math.random() + 1).toString(36).substring(7);             img = new Image(); img.onerror = function () { $("#divDownloadViaDownloadManagerErr").show(); $('#divDownloadViaDownloadManagerMsg').hide(); $("#divDownoadSongIndividually").hide(); }             img.onload = function () { $("#dialog-form").dialog("close"); }             img.src = "http://127.0.0.1:13000/track.gif?R=" + random + "&OID=" + OID;            }

      

Notice in the above code we interrogate the download URL (these are returned by the existing Neurotic Media API calls) to determine whether the download is for an album or track. We then parse that URL to get the parameters we need to send to the download manager.  This makes implementation very seamless as no additional data is required beyond the download URLs already being fetched from Neurotic Media APIs.

 

Create Access Token

This call allows the creation of a token that can be appended to the URL to auto-sign in a customer. These tokens are valid for a limited time only which is specified in this call.

Access Token Valid

This is used to verify whether a token is valid. In other words, it is used when a token from Create Access Token is received on a site. 

APIKeyID error message

When the APIKeyID is a valid GUID, but does not match a store's APIKeyID it returns:

 <?xml version="1.0" encoding="utf-8" ?> 
- <SimpleResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://securegate.nmp.neuroticmedia.net/Common/XSDClasses/SimpleResponse.xsd">
- <SimpleResponse_data>
- <Message>
<ErrorMessage>ERROR: Invalid APIKey ID</ErrorMessage>
<ResponseCode>8</ResponseCode>
</Message>
</SimpleResponse_data>
</SimpleResponse>

This is a simple cleanup task, but something that you would not have seen before.  The only case in which you should EVER see it is when using our Staging - if a Production store that hasn't been restored in Staging is used in Staging you'll get this error. Let us know if you have any questions.

Response codes listing

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NMP3.API_DataObjects
{
    public enum ResponseCodes
    {
        Success = 0,
        CustomerNotFound = 1,
        UserNameAlreadyExists = 2,
        RechargeError = 3,
        UserNameAlreadyExistsButInactive = 4,
        XMLError = 5,
        WebServiceError = 6,
        UserNameMustBeValidEmail = 7,
        InvalidIDFormat = 8,
        InvalidIntegerFormat = 9,
        NoRedeemedCodes = 10,
        NoAPIKey = 11,
        InvalidDateFormat = 12,
        OrderNotFound = 13,
        NoCustomerID = 14,
        NoOrderItemID = 15,
        InvalidCodeLength = 16,
        InvalidCodePrefix = 17,
        NoCredit = 18,
        InvalidNumberOfUses = 19,
        InvalidNumberOfCodes = 20,
        InvalidCode = 21,
        InvalidCreditValue = 22,
        NoCodeProvided = 23,
        UnRedeemedCode = 24,
        OrderItemNotFound = 25,
        InsufficientInput = 26,
        InvalidProductID = 27,
        InvalidOrderItemID = 28,
        CellPhoneExist = 29,
        NegativeNumCodesRemoved = 30,
        NoCodesRedeemed = 31,
        NoPaymentMethodFound = 32,
        PaymentMethodInvalidExpiration = 33,
        InvalidCreditCardNumber = 34,
        PaymentAuhtorizationFailed = 35,
        PaymentCaptureFailed = 36,
        PaymentFailed = 37,
        Claimed = 38,
        CodeAlreadyRedeemed = 39,
        InvalidCardType = 40,
        InvalidProductForShop = 41,
        NoPriceOrCredit = 42,
        NoCreditCode = 43,
        InvalidCustomerID = 44,
        InvalidCreditCode = 45,
        CreditCodeNotFound = 46,
        NoPaymentType = 47,
        NoCardHolderName = 48,
        NoCardNumber = 49,
        NoCardType = 50,
        NoCity = 51,
        NoExpirationDate = 52,
        NoPhone = 53,
        NoPostalCode = 54,
        NoStateProvince = 55,
        NoStreet1 = 56,
        NoPayPalEmail = 57,
        InvalidPaymentType = 58,
        InvalidOrderID = 59,
        InvalidExpirationDate = 60,
        NoCreditCardOnFile = 61,
        CVVRequired = 62,
        NonSupportedPaymentType = 63,
        InvalidGiftCardAmount = 64,
        CreditCodeNotValidForMerchant = 65,
        NoOrderID = 66,
        InvalidOrderIDForShop = 67,
        NoOrderItemsInOrder = 68,
        CustomerHasOrders = 69,
        CustomerHasPayments = 70,
        CustomerCanNotBeDeleted = 71,
        COPPACompliance = 72,
        NotCodeShop = 73,
        NotSaleShop = 74,
        ProductIDSetForExternalProductID = 75,
        ProductNotSellable = 76,
        ProductNotActive = 77,
        CarrierIsNotSupported = 78,
        RecommendationNotEnabled = 79,
        PartialFailure = 98,
        Unknown = 99,
        GenericError = 100,
        InvalidArtistID = 101,
        ProductNotFoundForShop = 102,
        AlbumNotFoundForShop = 103,
        AlbumsNotFoundForArtistForShop = 104,
        PageShopControlMapIDNotFound = 105,
        CustomerInsufficientCreditsForDownload = 106,
        InvalidPageID = 107,
        InvalidLogin = 108,
        NoGiftCardFoundForCustomer = 109,
        NotGiftCardShop = 110,
        CustomerDataFailedValidation = 111,
        InvalidGiftCard = 112,
        ErrorRedeemingGiftCard = 113,
        CreditCardDataFailedValidation=114,
        NoActiveShopLocationCampaignsFoundForShop = 115,
        NoMatchingLocationTokenForPlaces = 116,
        TracksNotFoundForArtistForShop =117,
        MobileBillingDenied=118,
        CustomerHasAlreadyCheckedIn=119,
        EmailVerifyRequired=120,
        InactiveSubscription=121,
        SubscriptionLevelNotFound=122,
        ActivityTemplateDefinitionNotFound=123,
        CustomerApplicationBackupNotFound=124,
        CustomerContentIdNotFound=125,
        CustomerContentNotFoundFromNeuroticProductId = 125,
        ErrorProcessingInitialPayment = 126,
        SubscriptionSelfServiceNotEnabledForShop = 127,
        CustomerDoesNotHaveRecurringBillingSetUp = 128,
        CustomerContentSliceCanNotbeLongerThan24Seconds = 129,
        CustomerContentEndSecondMustBeGreaterThanStartSecond = 130,
        InvalidGiftCardEAN = 131,
        CurrentGiftCardBalanceNotEnoughForPurchase = 132,
        NewGiftCardBalanceNotEnoughForPurchase = 133,
        CustomerContentSliceCannotBeLongerThanTotalSourceDuration = 134,
        OrderItemTooOldToVoid=135,
        ExistingAccountPleaseLogin=136
    }

}