Data Storage

POST /user/{id}/dataobject/{key}

Requires authentication with server or user access token.

Store data objects associated with this user. The data objects API is a general-purpose key-value store for storing user meta data. Data objects can be any kind of data. SPiD does not know assume any knowledge about the type or purpose of the values, and any type information, de-serializing etc must be done on the client.

Request

POST /api/2/user/{id}/dataobject/{key}

id

required path parameter

ID of the user to associate data with

key

required path parameter

The data object key. Max length is 255 bytes.

value

required

Data of any kind. Max length is 65535 bytes.

Example request

cURL
curl https://login.schibsted.com/api/2/user/1337/dataobject/some-data \
   -X POST \
   -d "oauth_token=[access token]" \
   -d "value=Some data"
Java
Map<String, String> params = new HashMap<>() {{
    put("value", "Some data");
}};

SpidOAuthToken token = spidClient.getUserToken(code);
String responseJSON = spidClient.
    POST(token, "/user/1337/dataobject/some-data", params).
    getResponseBody();

This example is an excerpt, see a full example

PHP
<?php
$params = array(
    "value" => "Some data"
);

$client->auth();
echo var_dump($client->api("/user/1337/dataobject/some-data", "POST", $params));

This example is an excerpt, see a full example

Clojure
(ns example
  (:require [spid-client-clojure.core :as spid]))

(let [client (spid/create-client "[client-id]" "[secret]")
      token (spid/create-user-token client "[code]")]
  (spid/POST client token "/user/1337/dataobject/some-data" {"value" "Some data"}))

Response

This endpoint supports the JSON response format.

Success: 201 Created

The newly created data object.

Data object

dataObjectId

integer (as string)

Unique data object ID

clientId

string

The ID of the client who created the data object

merchantId

integer (as string)

The ID of the merchant the client belongs to

userId

integer (as string)

The user the data is associated with

key

string

Client-provided key, e.g. the 'name' of this data. Max length is 255 bytes.

value

string

Client-provided value. Max length is 65535 bytes.

updated

datetime

When this value was last updated

created

datetime

When this value was originally created

The check mark indicates that the field always contains a valid non-empty value.

Failure cases

Some HTTP response codes are used for multiple error situations. There is no consistent way to tell these apart, but the error object will contain a textual explanation of the reason for the error. For explanation on OAuth related failures and errors see OAuth authentication failures.

  • 400 Bad Request One or more required parameters are missing
  • 400 Bad Request Missing id and/or key parameters
  • 400 Bad Request Could not find any data object for the provided key
  • 401 Unauthorized You don't have administration rights for this client.
  • 401 Unauthorized Your client doesn't have administration rights for this client.
  • 403 Forbidden Client is not authorized to access this API endpoint. Contact SPiD to request access.
  • 403 Forbidden Requesting IP is not whitelisted
  • 403 Forbidden Token is not authorized to access this user
  • 403 Forbidden Access token rejected
  • 404 Not Found Unknown client ID
  • 404 Not Found Client ID mismatch. The client making the request is no the owner of this resource, and does not have administrative privileges for it.
  • 420 Request Ratelimit exceeded

Sample response

JSON
{
  "dataObjectId": "21",
  "clientId": "[Your client ID]",
  "merchantId": "[Your merchant ID]",
  "userId": "424364",
  "key": "mysetting",
  "value": "My custom value",
  "updated": "2014-08-04 15:10:14",
  "created": "2014-08-04 15:10:14"
}

Comments/feedback

Do you have questions, or just want to contribute some newly gained insight? Want to share an example? Please leave a comment. SPiD reads and responds to every question. Additionally, your experience can help others using SPiD, and it can help us continuously improve our documentation.