Page tree
Skip to end of metadata
Go to start of metadata

CME Account Management Service API 1.x provides API access to Account Management Services for CME Direct (CME Globex), CME ClearPort, and Inline Credit Controls (ICC) accounts.

Through simple calls the client of the API can retrieve all registered accounts and account details, including: permitted products, eligible brokers, and position limits & utilization. Clients can also update existing account information via the API. 

AMS API is a RESTful JSON service with HATEOAS (hypermedia as the engine of application state). HATEOAS allows for hypermedia links to be returned within the payload from the API so the client can dynamically navigate to the next appropriate resource.

CME Direct and ClearPort Access Flow and Inline Credit Controls (ICC) Access Flow show available functions visually.

Specifications

This page includes the following topics:


Getting Started

Contact Global Account Managers - Customer Service for onboarding and certification information for CME Account Management Services API.

Certification for the API is required. 

Hours of Availability

The CME Account Management Services API will have continuous availability, with the exception of the scheduled maintenance window from Friday 6:00 PM CT through Sunday 12:00 PM CT.

CME Group Production support is available through the Global Command Center on the normal schedule for testing and production.

CME Group New Release and Certification Support is available through Certification Support for Electronic Trading (CSET).

Success or Failure Scenario

Expected results for query / post success or failure.

Action

Successful

Bad Requests like a bad JSON format Request body

Invalid data in Request Body

GET, POST

GET - Result set returned

POST - Updated data is returned

When using the delete attribute, the resulting data set is returned after the delete.

Sample Error Message

 
   "errorType":"400",
   "error":"Bad Request"
}

Sample Error Message

{

   "errorType":"IllegalArgumentException",

   "error":"Limit Type not found: Span1 Limit"

}

HATEOAS Description

HATEOAS (hypermedia as the engine of application state) – The client of the API can interact with the application as it provides information dynamically through hypermedia. In this case, the client doesn’t need to know about how to interact with the API beyond using the hypermedia provided in the payload returned from the API. The client will initially start by requesting _/myFirms at which point every subsequent potential call will be known through the hypermedia provided.

These links will be at the bottom of applicable calls, in the "links" section. For example:

"links": [
    {
      "rel": "Retrieve CMED Accounts",
      "href": "_/v#/accounts/clearing/CMED/GREENTEA_API_CLEARING2"
    },
    {
      "rel": "Retrieve CPC Accounts",
      "href": "_/v#/accounts/clearing/CPC/GREENTEA_API_CLEARING2"
    },
    {
      "rel": "Retrieve ICC Accounts",
      "href": "_/v#/accounts/clearing/ICC/GREENTEA_API_CLEARING2"
    }
  ]

Use to navigate between the returned pages. Limit can be configured as part of the call.
Example:

_/v#/brokerPermissions /[Type]/[Service]/[Clearing Firm]/[Account Number]?limit=60

Name

Example

definition

limitlimit=50

Number of records per page.

The default limit is 50.

offsetoffset=2Current page number of a result set.
availableOffsetsavailableOffsets=4Total number of pages.

Health Check

A health check to test the status of the environment can be run at any time using:

_/v#/health

Expected result:

{
  "payload": [
        {
            "status": "HEALTHY",
            "lastUpdateTime": "2019-08-13T18:41:11.505Z"
        }
    ]
}

POST Call Examples

POST calls to CME Account Manager API allow specific information to be copied, updated or deleted.

POST calls require a body that contains the update information. A request call can be used to retrieve related information, and then the return can be modified and used as the body for the POST call.

Example call and return for an update

This example shows an update to the limits utilization for a product. The same steps (GET call to retrieve current information, modify the retrieved content for the POST update, perform the POST call) can be used for all POST calls.

The example does not include HATEOAS links.

1) GET Call: _/v#/accountLimitsUtilization/[Type]/[Service]/[Clearing Firm]/[Account Number]

    Return from call:

("service": "CPC",
   "clearingFirm": "GREENTEA_API_CLEARING2",
   "accountNumber": "DV101218B",
  "limits": [
    {
      "type": "Span Limit",
      "currency": "USD",
      "limit": 8888888,
      "usage": 0
    },
    {
      "type": "Max Qty Long",
      "scope": "PRODUCT",
      "product": "71.OOF.CBT",
      "productFullName": "Cleared OTC Ethanol Option on Forward Month Swaps",
      "limit": 300,
      "usage": 0
    }
    ]
   }


2)
 Utilize the return as the body for the Post call. For example, for product "71.OOF.CBT", update:

"limit": 300  to:

"limit": 500 

The entire return is not required:

Example Post Body:

{"service": "CPC",
   "clearingFirm": "GREENTEA_API_CLEARING2",
   "accountNumber": "DV101218B",
  "limits": [
    {
      "type": "Max Qty Long",
      "scope": "PRODUCT",
      "product": "71.OOF.CBT",
      "productFullName": "Cleared OTC Ethanol Option on Forward Month Swaps",
      "limit": 300,
      "usage": 0
    }
    ]
   }


3) POST Call: Use the same URL as in (1), and use the modified request as the POST body, in JSON format.

 Return from post call should include all information:

{"service": "CPC",
   "clearingFirm": "GREENTEA_API_CLEARING2",
   "accountNumber": "DV101218B",
  "limits": [
    {
      "type": "Span Limit",
      "currency": "USD",
      "limit": 8888888,
      "usage": 0
    },
    {
      "type": "Max Qty Long",
      "scope": "PRODUCT",
      "product": "71.OOF.CBT",
      "productFullName": "Cleared OTC Ethanol Option on Forward Month Swaps",
      "limit": 500,
      "usage": 0
    }
    ]
   }
Example call and return for deleting records

Record information can be deleted using the POST call by appending "?delete=true" to the end of a POST call. This will delete the specified information from the record(s).

1) GET Call: /amsapi/rest/v#/accountLimitsUtilization/clearing/CPC/9999999/TESTGREEN1

Return from call:

{"service": "CPC",
   "clearingFirm": "GREENTEA_API_CLEARING2",
   "accountNumber": "DV101218B",
  "limits": [
    {
      "type": "Span Limit",
      "currency": "USD",
      "limit": 8888888,
      "usage": 0
    },
    {
      "type": "Max Qty Long",
      "scope": "PRODUCT",
      "product": "71.OOF.CBT",
      "productFullName": "Cleared OTC Ethanol Option on Forward Month Swaps",
      "limit": 300,
      "usage": 0
    }
    ]
   }


2)
 Utilize the return as the body for the Post call. For example, delete the Span Limit.

Example Post Body:

{"service": "CPC",
   "clearingFirm": "GREENTEA_API_CLEARING2",
   "accountNumber": "DV101218B",
  "limits": [
    {
      "type": "Span Limit",
      "currency": "USD",
      "limit": 8888888,
      "usage": 0
    }
    ]
   }


3) POST
 Call: Use the same URL as in (1), and add: "?delete= true": /amsapi/rest/v#/accountLimitsUtilization/clearing/CPC/9999999/TESTGREEN1?delete=true. Use the modified request as the POST body, in JSON format.

Return from POST call should include all information:

{"service": "CPC",
  "clearingFirm": "GREENTEA_API_CLEARING2",
  "accountNumber": "DV101218B",
  "limits": [
    {
      "type": "Span Limit",
      "currency": "USD",
      "usage": 0
    },
    {
      "type": "Max Qty Long",
      "scope": "PRODUCT",
      "product": "71.OOF.CBT",
      "productFullName": "Cleared OTC Ethanol Option on Forward Month Swaps",
      "limit": 300,
      "usage": 0
    }
    ]

CME Direct and CME ClearPort Access Flow

Test - gliffy

Inline Credit Controls Access Flow

CME AMS API ICC Flow


  • No labels