api-title-api-mgnt.png

API Management is becoming an integral part of most enterprise solutions. MachineShop provides a rich set of API's that enable you to define your API endpoints, create custom API's, integrate to external third-party API's and more. This service includes the ability to meter and control usage and download information related to usage for potential monetization.

A full scope of services exposed via API will provide the ability to proxy almost any internal or external service. Capabilities are also available to convert older style SOAP API’s into  modern standard RESTful services. Subscriptions that include our storage services also have the ability to do in-line parameter substitution of key values as part of the API being proxied.

In addition to proxy services, a complete set of user management services, including various authentication schemes are available. Authentication is available by token, OAUTH, OAUTH2, password or via integration to external authentication services.

Each user account can be completely managed by assigning it specific privileges based on the API services available to that user. In addition to simple on/off, API’s are available to defined various usage characteristics via limits and meters.

Representative samples of API’s available within our API Management services:

POST /api_proxies

Description: API proxy services within MachineShop allow our subscribers to create custom API endpoints for any internal or external service. These proxy endpoints are created by a simple API call into MachineShop to define the correlation between the API being exposed and the third-party or internal API.

There are a variety of transformations that can also occur with the proxy. If subscribing to our STORE services, secure parameter substitution can be included as an element of the proxy. Parameters can be defined as static, or can be transformed to correspond with the requirements of the external API.

Example: POST /api+proxiesView

{
    "_id": "5486120b50e7b0c36d0004e6",
    "method": "post",
    "service_type": "rest",
    "name": "post_gist_fm",
    "name_space": "mycompany",
    "signature": "github/gists/gist_with_fm",
    "endpoint": "gists",
    "base_domain": "api.github.com",
    "protocol": "https",
    "field_map": {
      "files": "contents",
      "public": "visible",
      "description": "title"
    },
    "headers": {
      "Accept": "application/json",
      "Authorization": "[~ghub_auth]",
      "Content-Type": "application/json"
    },
    "user_id": "5411f29b4433ab412a000003",
    "updated_at": "2014-12-08T21:03:07Z",
    "created_at": "2014-12-08T21:03:07Z"
}

This POST command creates a new API endpoint within the customer namespace. In the example below, a call to the GitHub endpoint POST/api.github.com/gists is mapped to a new endpoint through MachineShop at POST/mycompany/github/gists/gist_with_fm. Note that parameter substitution is being used for the github authorization in the header utilizing our keychain API, which is available under the STORE subscriptions.

Example: REQUESTView

{
  "name": “post_gist_fm”,
  "name_space": “mycompany”,
  "signature": "github/gists/gist_with_fm",
  "base_domain": "api.github.com",
  "protocol": “https”,
  "endpoint": “gists”,
  "method": “post”,
  "headers": 
     {
      "Accept": "application/json",
      "Authorization": "[~ghub_auth]",
      "Content-Type": "application/json"
     },
  "static_params": "",
  "certificate": "",
  "field_map": {
      "files": "contents",
      "public": "visible",
      "description": "title"
    }
}

POST /api_proxies

Description: Using the /me endpoint a user id can retrieve all the available parameters of the account. This endpoint will also return useful information about the privileges associated with this account including all the available APIs that are accessible based on their authorization as defined by the creator of the account.

Example: GET /meView

[
{
  "_id": "54a6025050e7b0d4de0008f7",
  "authentication_token": "p5GMxNA1FC5ETjPAOOO",
  "company_name": "Test",
  "current_sign_in_at": "2015-02-04T19:26:37Z",
  "current_sign_in_ip": "173.218.16.217",
  "domain": "machineshop",
  "email": "test@user.com",
  "first_name": "Joe",
  "keychain": {
    "key1_username": "bDw8C+P4zmR6GT",
    "key2_password": "HttGO741x9YDNO",
    "key3_license": "WINQxm1OUlAi7QjD8S0KiCC/8QQpYsyGKyOy9a",
    "tokenA": "y1mzA+igNoyX9NYg433mQJdWwEq7bQhNM/4J2HJksAs="
  },
  "last_name": "Demo",
  "last_sign_in_at": "2015-02-04T17:57:18Z",
  "last_sign_in_ip": "54.204.68.30",
  "logo_url": "http://s3.amazonaws.com/machineshop-production-users-logos/545998084433ab437c000050",
  "name_space": [
    "platform"
  ],
  "notification_method": "email",
  "phone_number": "303-555-1212",
  "publisher_id": "545998084433ab437c000050",
  "role": "consumer",
  "sign_in_count": 3229,
  "updated_at": "2015-02-04T17:57:18Z",
  "authorized_routes": [
    {
      "_id": "54596dae4433abae20000001",
      "created_at": "2014-11-05T00:22:06Z",
      "name_space": "platform",
      "path": "/route_test",
      "pattern": "(?-mix:^\\/route_test$)",
      "swagger_resource_id": null,
      "updated_at": "2014-11-14T01:01:23Z",
      "user_defined_api_id": null,
      "user_ids": [],
      "verb": "GET"
    },
    {
      "_id": "54596dae4433abae20000002",
      "created_at": "2014-11-05T00:22:06Z",
      "name_space": "platform",
      "path": "/me",
      "pattern": "(?-mix:^\\/me$)",
      "swagger_resource_id": null,
      "updated_at": "2014-11-14T00:13:58Z",
      "user_defined_api_id": null,
      "user_ids": [],
      "verb": "GET"
    },
    {
      "_id": "54596dae4433abae20000003",
      "created_at": "2014-11-05T00:22:06Z",
      "name_space": "platform",
      "path": "/oauth/csrf_token",
      "pattern": "(?-mix:^\\/oauth\\/csrf_token$)",
      "swagger_resource_id": null,
      "updated_at": "2014-11-12T18:25:37Z",
      "user_defined_api_id": null,
      "user_ids": [],
      "verb": "GET"
    },
    {
      "_id": "54596dae4433abae20000004",
      "created_at": "2014-11-05T00:22:06Z",
      "name_space": "platform",
      "path": "/users/provider_accounts",
      "pattern": "(?-mix:^\\/users\\/provider_accounts$)",
      "swagger_resource_id": null,
      "updated_at": "2014-11-12T18:25:39Z",
      "user_defined_api_id": null,
      "user_ids": [],
      "verb": "GET"
    },
    {
      "_id": "54596dae4433abae20000005",
      "created_at": "2014-11-05T00:22:06Z",
      "name_space": "platform",
      "path": "/users/oauth/app",
      "pattern": "(?-mix:^\\/users\\/oauth\\/app$)",
      "swagger_resource_id": null,
      "updated_at": "2014-11-12T18:25:39Z",
      "user_defined_api_id": null,
      "user_ids": [],
      "verb": "GET"
    },
    {
      "_id": "54596dae4433abae20000006",
      "created_at": "2014-11-05T00:22:06Z",
      "name_space": "platform",
      "path": "/users/oauth/app/domains",
      "pattern": "(?-mix:^\\/users\\/oauth\\/app\\/domains$)",
      "swagger_resource_id": null,
      "updated_at": "2014-11-12T18:25:36Z",
      "user_defined_api_id": null,
      "user_ids": [],
      "verb": "GET"
    },
    {
      "_id": "54596dae4433abae20000007",
      "created_at": "2014-11-05T00:22:06Z",
      "name_space": "platform",
      "path": "/users/oauth/app/keysets",
      "pattern": "(?-mix:^\\/users\\/oauth\\/app\\/keysets$)",
      "swagger_resource_id": null,
      "updated_at": "2014-11-12T18:25:36Z",
      "user_defined_api_id": null,
      "user_ids": [],
      "verb": "GET"
    }
]

MachineShop’s Ecosystem

Join the growing network of organizations leveraging Connected Services

Get Started
As Seen in