API Documentation

Engineering competencies are available through a JSON API. This documentation is split into two sections: entities, and endpoints. The entities documentation outlines the objects returned by the API, the endpoints documentation outlines how to get these entities.

Entities

Entity: Competency

A Competency entity represents a single engineering competency, they look like this:

{

	// A unique identifier for the competency
	"id": UUID,

	// A short summary of the competency
	"summary": String,

	// An array of examples of how this competency might be met.
	// This array may be empty, indicating that there are no
	// supporting examples
	"examples": [String],

	// An array of URLs which support understanding of how the
	// competency might be met. This array may be empty,
	// indicating that there are no supporting URLs
	"supportingUrls": [
		{
			"label": String,
			"url": String
		}
	],

	// A longer description of the competency. This may be null
	// if the competency has no description
	"description": String,

	// The level that the competency applies to. This will be one
	// of "engineer", "senior1", "senior2", or "principal"
	"level": String,

	// The area that the competency is in. This will be one of
	// "technical", "communication", "delivery", "leadership"
	"area": String,

	// The domain that the competency is specific to. This may
	// be null, indicating that the competency applies to all
	// engineers regardless of domain
	"domain": String

}

Entity: Level

A Level entity represents one of the engineering levels at the FT, e.g. the set of competencies that are exhibited by a Mid Engineer.

{

	// The indenfier for the level. This will be one of "engineer",
	// "senior1", "senior2", or "principal"
	"id": String,

	// The human-readable name of the level
	"name": String,

	// A single-paragraph summary of what is expected for engineers to
	// move into the next level
	"summary": String,

	// An array of Competency entities. This property is optional, and
	// is not present when requesting all levels
	"competencies": [Competency]

},

Endpoints

Get the API version

Get the exact version of the competencies that the API exposes.

Request

Method GET
Path /api/v1/version.json

Response

Status 200 on success
Headers
Content-Type
application/json on success
text/html on error
Body The current semantic version, as a String. E.g. "1.2.3"

Example curl command

curl https://engineering-progression.ft.com/api/v1/version.json

Get all competencies

Get all of the competencies for every level as an array. This endpoint responds with an array of Competency entities.

Request

Method GET
Path /api/v1/competencies/all.json

Response

Status 200 on success
Headers
Content-Type
application/json on success
text/html on error
Body Array of Competency entities

Example curl command

curl https://engineering-progression.ft.com/api/v1/competencies/all.json

Get all levels

Get all of the competency levels as an array. This endpoint responds with an array of Level entities, but these will be returned without the competencies property.

Request

Method GET
Path /api/v1/levels/all.json

Response

Status 200 on success
Headers
Content-Type
application/json on success
text/html on error
Body Array of Level entities

Example curl command

curl https://engineering-progression.ft.com/api/v1/levels/all.json

Get competencies by level

Get all of the competencies for a single level, as well as the level information. This endpoint responds with a single Level entity which includes the competencies property.

Request

Method GET
Path /api/v1/levels/:level-id.json
(where :level-id is the unique identifier for a Level)

Response

Status 200 on success
Headers
Content-Type
application/json on success
text/html on error
Body Level entity

Example curl command

curl https://engineering-progression.ft.com/api/v1/levels/engineer.json