Whatever message this page gives is out now! Go check it out!
Field | Description |
API Name | Name of the new API. Once you create an API, you cannot change its name. |
Context | Defines a context for a service request. Resources are viewed hierarchically via their URI names, offering consumers a friendly, easily understood hierarchy of resources to leverage in their applications. |
Description | The description of the API. |
Visibility | Visibility settings prevent certain roles from viewing and modifying APIs from another user. Select Public, Intranet, or Partner modes of publishing an API. In Public mode, all levels of users can see an API. |
Version | The version of the API. An API can have multiple versions. The version must always begin with v or V followed by a whole number or decimal. The version can also begin without v or V. For example, |
Make Default | Select this check-box if you want your API version to be the default. If you have multiple versions of the same API, you can choose the one to be the default. |
Lifecycle | Stages of progression of an API. Select from Draft, Published, Deprecated, or Retired. |
http://endpointurl/productshttp://endpointurl/ordershttp://endpointurl/{orderId}/status/checkPhone can be assigned to the resource /CheckPhoneNumber.<RollingRandomAccessFile name="requesttrace-log" fileName="${log-path}/apimanager-trace.log"
filePattern="${log-path}/apimanager-trace-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
</RollingRandomAccessFile>{"headerTitle": "API Manager Portal","adminHeaderTitle": "API Manager Administrator","headerLogoPath": "images/CF-Logo.png"}http://api.examplerest.com/user from http://examplerest.com. There is an access token, xyz123, that you can pass in the Authorization header to authenticate the request.OPTIONS /userOrigin: http://www.examplerest.comAccess-Control-Request-Method: GETAccess-Control-Request-Headers: AuthorizationAllowed-Origin: http://www.examplerest.comAllowed HTTP Headers: AUTHORIZATIONAllowed HTTP Methods: GETaxis1.cfcSoapBinding is the binding.GET /directory/{directoryName}, {directoryName} is the PATHPARAM./search?q=johndoe.Policy Name | The name of the content type restriction policy. |
Allow | The content type to allow. |
Deny | The content type to restrict. |
Honor API Operation Content Type | Allows you to override the policy made globally and allow the policy at the API level. For example, if ‘ application/postscript’ content type is denied at the global policy level and is allowed at the API level, the setting made at the API level will take precedence. |
Detect Content Type by Inspecting the Payload | Determine the content type by inspecting the header. |
Policy Name | The name of the XML threat protection policy. |
Disallow Doctype Declaration | Select this check-box to set the parameters for XML threat protection. |
Load External DTDs | Select this check box if you want the doctype declaration to load an external DTD. For example, <?xml version="1.0" standalone="no" ?><!DOCTYPE document SYSTEM "//path//to//DTD"> |
Entity Expansion Limit | Denotes the maximum allowable entity expansions. In other words, this is the upper limit on how many entity substitutions the XML parser allows in a document. The default value is 64,000. To prevent XML Entity Expansion (XXE) attacks, set the limit to XML entity expansions. The XML Entity expansion attack exploits a capability in XML DTDs that allows the creation entities, that can be used throughout a document. By recursively defining a set of custom entities at the top of a document, an attacker can overwhelm parsers that attempt to completely resolve the entities by forcing them to iterate almost indefinitely on these recursive definitions. The malicious XML message is used to force recursive entity expansion (or other repeated processing) that completely uses up available server resources. The most common example of this type of attack is the "many laughs" attack (sometimes called the 'billion laughs' attack). For example, <?xml version="1.0"?><!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)><!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"><!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">]><lolz>&lol9;</lolz> |
General Entity Size Limit | The maximum size of any entity. It is recommended that you set the limit to the smallest possible number so that malformed xml files can be caught quickly |
Parameter Entity Size Limit | The maximum size of any parameter entity, including the result of nesting multiple parameter entities. |
Element Depth Limit | The maximum element depth for an xml element from root . For example, in the XML below, <company> <staff> <firstname>John</firstname> <lastname>Doe</lastname> <salary>100000</salary> <age>29</age> <staff></company>The maximum depth is 3. Any value greater than 3 enforces XML protection policy. |
Max Attributes Per Element | The number of attributes an element can have. This prevents an XML Attribute Blowup attack. For example, the XML below has a limit of 1000 attributes: <?xml version="1.0"?><foo a1="" a2="" ... a1000=""/> |
Attribute Name Size | The maximum number of characters allowed in an element attribute. |
Allowed Protocols | Allowed list of protocol schemes. |
Allowed XXE Domains | A whitelist of domain names/IP addresses from which API Manager allows retrieving the XSD schema definitions. For example, <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe;</foo> |
Max Depth | Specifies the maximum allowed nested container within a JSON document. For example, the following JSON document has one JSON object in another JSON object, which shows a nesting level of two: {"label":{"label1":"value"}}Example 2: In the JSON below, the container depth of address is two. { "message" : "Hello World", "names" : ["John","Paul","George"], "address" : { "street" : "Bleecker street", "housenumber" : 50 }} |
Max Entries per Object | Maximum number of entries in a single object. In example 2 above, the maximum entry is three, message, names, and address. |
Max Entries per Array | Maximum number of elements in an array. In example 2 above, the JSON document has a value of maximum entries per array as 3. Any array with a length of 4 leads to the rejection of the entire JSON document. |
Max Key Length | Specifies the maximum length of a string for a property name within an object. In example 2, the key housenumber has a length of 11. Any key length less than 11 rejects the JSON document. |
Max Value Length | Specifies the maximum length allowed for a string. In example 2, the longest value length is Bleecker street. Any value less than 15 rejects the JSON document. |
Whitelist IP addresses | The list of IP addresses that are allowed access to an API. |
Blacklist IP addresses | The list of IP addresses that are denied access to an API. |
Max Number of Parameters | The maximum number of query and form parameters that are permitted in a request. If a client sends more than the specified value, the connection will be rejected. This limit is necessary to protect against hash-based denial of service attacks. The default value is 1000. |
Total Payload Size Limit (bytes) | Maximum size assigned to a request payload. If the size of the entity is larger than this limit, there is an exception when reading the request. |
Max Number of Headers | The maximum number of headers that are permitted in a request. If a client sends more than this limit, API Manager terminates the connection. This limit is necessary to protect against hash-based DoS attacks. |
Total Header Size Limit (bytes) | The maximum size of a HTTP header block, in bytes. |
Policy Name | The name of the XML to JSON transformation policy. | |
JSON Attribute Prefix | The string to use for the attribute prefix in JSON. For example, in the XML, <name id="John"/>, the transformed JSON is:{ "apim_attrib_id" ":"John"} | Default-apim_attrib_ |
Text Element Key | The string to denote the name of a text node in the output JSON. For example, if the text element key is set to default ($text), then the XML, <title xml:lang="en-us">The Catcher In The Rye</title> gets transformed into the following JSON: { "apim_attrib_xml:lang":"en-us", "apim_key":"The Catcher In The Rye"} | Default-apim_key |
Start Element | The root of the output JSON. For example,: <name>Joe</name> <age>22</age>If the Start Element is "person", the output becomes: { "person": { "name": "Joe", "age": "22" }} | Default- apim_root |
Array Elements | Values that need to be represented as an arry in the JSON document. For example, consider the following XML: <locations> <location>San Francisco</location> <location>London</location> <location>Tokyo</location></locations>If you enter location in the Array Elements field and the Smart Arrays option is enabled, the serialized JSON document becomes: { "locations": { "location": ["San Francisco","London","Tokyo"] }}If the XML has an empty node, <locations> <location/></locations>The output JSON generates an empty array, for example, { "locations": { "location": [] }} | |
Smart Arrays | Select this check-box to create arrays intelligently based on the structure of the XML document. Consider the XML below: <locations> <location>San Francisco</location> <location>London</location> <location>Tokyo</location></locations>For example, if you do not enable this check-box, the output JSON becomes: { "locations" : { "location":"San Francisco", "location":"London", "location":"Tokyo" }}If you enable this check-box, the output is: { "locations": { "location": ["San Francisco","London","Tokyo"] }} | |
Interpret Datatypes | Specify the datatypes attempted to be auto-determined are Numbers and Boolean. If enabled, the values in output JSON has the datatype as specified in the XML. If disabled, all values in the JSON become string values. For example, in the XML below: <person> <name>Joe</name> <age>22</age> <membership>true</membership></person>When you enable Interpret Datatypes, the JSON output is: { "person": { "name": "Joe", "age": 22, "membership": true }}When you disable Interpret Datatypes, the JSON output is: { "person": { "name": "Joe", "age": "22", "membership": "true" }} | Default-Enabled |
Interpret Processing Instructions | Specify the processing instruction to be used (<?multiple_pi location?>) with an example. For example, the transformer uses the PI <?xml-stylesheet href="mystyle.css" type="text/css"?> defined in the XML. | Default-Disabled |
Policy Name | The name of the JSON to XML transformation policy. | |
Root Element | Adds a root node to the resultant XML. For example, if the Root Element is student, { "name":"Jason"}The output XML is: <student> <name>Jason</name></student> | Default-apim_root |
Normalize JSON Keys | An object name in a JSON document might not be valid for an XML node. For example, spaces are valid object names in JSON, but in XML, spaces are invalid. If you select this check-box, the transformed XML has valid element names. Spaces and special characters such as @ or $ are invalid characters. | Default-enabled |
Create Processing Instructions | Creates XML processing instructions when JSON array elements are encountered. | Default-disabled |
{ "locations": { "location": { "name": "Chicago", "description": "Jason's in Chicago, also known as \"Windy City\"" } "@id": 1 }}The resultant XML becomes:<DocumentRoot> <locations id="1"> <location> <name>Chicago</name> <description>Jason's in Chicago, also known as the "Windy City"</description> </location> </locations></DocumentRoot>Policy | Error code(s) |
XML threat protection | 403, if any field exceeds the set limits. |
HTTP message limits |
|
IP access control | 403, if an incoming IP address xxx.xxx.xxx.xxx is not allowed to access the API. |
Content type restriction | 403, if an incoming Content Type is not allowed to access the API. |
|
|
To create a key store: | To import a key store: |
1. Click Create Key Store. 2. Set a name and password for the key store. 3. Click Create. 4. Click Import Certificate. 5. Enter the alias for the certificate and choose the certificate file that you had created using keytool command line or GUI. 6. Click Import Certificate. | 1. Click Import Key Store. 2. Enter the following details: a. Name of the key store b. Password of the key store c. Choose the certificate you had created previously d. Choose the type of key store – JKS or PKCS e. (Optional) Enter an alias for the certificate 3. Click Create. |
1 | The number of API requests within a time range with total requests and erroneous requests. |
2 | A donut-chart representation of API success and errors. |
3 | The metrics data like average response time, number of API requests for APIs, and so forth. |
4 | The average response time of an API in milliseconds. |
5 | Cache hit or miss. |
6 | Line chart of successful and unsuccessful API requests. |
1 | The number of requests for the top five APIs and the versions. |
2 | Donut-chart for the number of API requests by the top five applications. |
3 | Donut-chart for the percentage of successful and unsuccessful API requests with comparison of the versions of an API. |
4 | Bar-chart for the average response time for an API. |
5 | Line-chart for the number of requests by the top three APIs. |
6 | The number of API requests. |
7 | Donut-chart of the API metrics data, for example, average response time |
8 | Representation for cache hit or miss. |
1 | The number of requests for the top five APIs and their versions. |
2 | Bar-chart for the average response times for the top five APIs. |
3 | Donut-chart for the percentage of successful and unsuccessful API requests. |
4 | Line-chart for the top three API requests with comparisons of different API versions. |
5 | The number of API requests and the average response time for the APIs. |
6 | The number of API requests for the top five applications. |
7 | API data consumption in MB. |
1 | Pie-chart for the top five plan usage. |
2 | The number of API requests for the method types. |
3 | The number of subscribers of an API. |
4 | Pie-chart for the number of requests for a subscriber. |
5 | The number of requests for the top five APIs. |
6 | Line-chart for the requests from the top three subscribers. |
7 | Pie-chart for the number of requests for top five applications. |
8 | Line-chart for requests from top three SLA plans. |
1 | The number of errors from the top five APIs. |
2 | The number of errors from the top five applications. |
3 | Donut-chart for the number of errors from all status codes. |
4 | Pie-chart for the top five error types. |
5 | Line-chart for requests for the top five error types. |
6 | Line-chart for requests for all status codes. |
7 | List of top ten resources with the maximum number of errors. |