Membership Platform API

User API

The user-api gives API clients access (create, read and update) to FT.com user’s data like their profile information, product entitlements etc. The supported API endpoints are listed below

Resource Description Target uptime

Target 95 percentile response time
(as measured by our edge servers

POST /users/profile

Create a new user record

99.9% <= 400ms
PUT /users/{userId}/profile Update a user profile record 99.9% <=400ms
HEAD /users?email={emailAddress} Check if a user record with the given email address exists 99.9% <= 300ms
GET /users?email={emailAddress} Retrieve a user’s unique id by email address 99.9% <= 300ms
GET /users/{userId}/profile/full Retrieves a user’s full profile 99.9% <= 300ms
GET /users/{userId}/profile/basic Retrieves a user’s basic profile 99.9% <= 300ms
GET /users/{userId}/profile/demographics Retrieves a user’s demographics profile 99.9% <= 300ms
GET /users/{userId}/products Retrieves products a user is entitled access to 99.9% <= 300ms
POST /users/{userId}/credentials/change-password Change a user’s password ? <= 500ms
GET /users/{userId}/subs-status Retrieves a summary of the user’s subscription status.  NB DEPRECATED - TO BE REPLACED SOON 99% <=200ms

Session API

Every authenticated ft.com user has a valid Session and the session-api allows API clients the ability to validate them. Both supported API endpoints below encapsulate the same information but they use different crypto keys to sign the cookie. For /sessions/s/ endpoint uses FTSession_s cookie value, which is an HTTPS only cookie as opposed to /sessions/{sessionId} which uses FTSession cookie value that gets passed over non-encrypted HTTP sessions.

Resource Description Target uptime Target 95 percentile response time
(as measured by our edge servers)
GET /sessions/{sessionId} Validate and get userId from validated session (using FTSession cookie value)     99.9% <= 300ms
GET /sessions/s/{sessionId} Validate and get userId from validated secure session (using FTSession_s cookie value) 99.9% <=300ms

 

Redeemable Token API

Tokens can be redeemed for a seat on an access licence. The publicly supported API endpoints are listed below:

Resource Description Target uptime Target 95 percentile response time
(as measured by our edge servers)
GET /redeemable-tokens/{tokenId} Retrieves a redeemable token 99.9% <= 300ms
POST /redeemable-tokens/{tokenId}/redeem Redeems a redeemable token for a particular user 99.9% <=400ms

Login API

Provide user credentials to log that user in:

Resource Description Target uptime Target 95 percentile response time
(as measured by our edge servers)
POST /login Logs a user in provided their credentials are correct 99.9% <=500ms

SSO

SSO is a service to enable users of Identity providers(IdP) registered with FT to login to FT without the need for entering their FT credentials again to access content on FT.

Resource Description Target uptime Target 95 percentile response time
(as measured by our edge servers)
GET /idps/mapping

Returns the WAYFless URLs for the IDPs that matches the email restriction criteria

99% <=800ms

Access Licence Service

The access licence service manages digital access entitlements for users to FT digital products. An access licence specifies a user or users that have access to a specific FT product. Access licences may have constraints including start and end dates, maximum number of licence seats, ip restrictions, etc.

Resource Description
GET /licences

Find collection of licences by userId, adminUserId or retrieve all

GET /licences/{licenceId} Retrieve an access licence by id
GET /licences/{licenceId}/seats Retrieve the seats on a licence
GET /licences/{licenceId}/administrators

Retrieve the administrators of a licence

 

Licence data svc

offers a view of seat holders on an Access Licence.

Resource Description
GET /licence-seat-holders/{licenceId} Retrieve seat holders for a given licenceId
GET /licence-seat-holders/{licenceId}/admins Retrieve administrators for given licenceId

Offer Api

The offer api defines offers for digital and print products.

Resource Description
GET /offers/{offerId}

Retrieve an offer by its id

Acquisition Context Service

The acquisition context api defines bespoke aspects of the B2B signup journey (eg. tailored barriers, signup pages).

Resource Description
GET /acquisition-contexts/{acquisitionContextId}

Retrieve an acquisition context by its id.

GET /acquisition-contexts Find collection of acquisition contexts by access-licence-id or by ip-address.

Content Access Token

Creates access token for articles

Resource Description
POST /signin

Creates content access token

 

User Identifier Service

Provides legacy erights and passport id to user ids.

Resource Description

GET /user-ids?(queryParameters)=(queryParametersValue)

Retrieves deprecated ID’s

Subs Tracking Service

Manages and tracks a list of blacklisted domains an d ip address for trial subscriptions.

Resource Description

GET /trial-exclusions/?(queryParameters)=(queryParametersValue)

Tracks a list of blacklisted domains and ip address for trial subscriptions.

GET /trial-exclusions/domains Tracks a list of blacklisted domains for trial subscriptions.
GET /trial-exclusions/ip-addresses Tracks a list of blacklisted ip addresses for trial subscriptions.
GET /trial-exclusion/ip-addresses/{ip-address} Get an ip address from the the black list resource by ip address

Newspaper Fulfilment Options Svc

Responsible for providing the fulfilment options available given a country code and  postcode

Resource Description

GET  /newspaper/fulfilment/options?postCode=(postCodeValue)&countryCode=(countryCodeValue)

Retrives list of fulfilment options by country code and postcode

Membership Platform Utilities

Utility functions available for use with the Memberhsip platform

Utility Description
Session Decoder

The Session Decoder is a client-side javascript that extracts the userId from the FTSession_s cookie, without making a remote API call to the Session API. This utility method is useful in scenarios where you are interested in obtaining the userId from a session cookie without knowing if the session is still valid.

Access Service

Manages access to content.

Resource Description
HEAD /access/{contentPath} Retrieves an authorisation decision for a given content resource.

GraphQL API

An API which aggregates REST APIs and makes them queryable.

GraphQL is a query language for APIs, which is particularly suited to exposing data with graph-like relationships.

The memb-graphql-api defines a schema for membership services, and allows data about membership entities to be unified in a single query, when it would normally require querying multiple REST APIs.

The systems memb-graphql-api talks to include user-profile-svc, access-licence-svc, acq-context-svc, redeemable-token-svc, subs-transition-svc, subscription-api etc.

Usage

GraphQL uses HTTP POST as a transport mechanism for its query documents rather than individual REST endpoints.

All POST requests go to the /api endpoint, over TLS https. Unencrypted HTTP is not supported.

The service requires an X-Api-Key (contact membership.support@ft.com by email or #membership-support on Slack).

Sample usage

<pre><code>curl -X POST -H "Content-Type: application/graphql" -H "X-Api-Key: xxxxxxxxx" -d 'query { licence(id: "nnnnn") { issueReason product { name code } } }' https://api.ft.com/graphql/v1/api
</code></pre>

A web interface for manually composing queries is also available. Authentication done by S30. https://memb-graphql-api-eu-prod.memb.ft.com/graphiql

See the Github repo README.md for more information on usage and querying; consult with #memb-graphql for wisdom.