Add API
post
/mobile/tools/1.0/apis
Creates an API definition.
Request
Supported Media Types
- application/json
Body Parameter
The API representation for POST requests.
Root Schema : apiCreate
Type:
objectThe API representation for POST requests.
-
Type:
objectassetCreateAdditional Properties Allowed:The asset representation for POST requests. -
Type:
objectapiCreate-allOf[1]Additional Properties Allowed:
Nested Schema : assetCreate
Type:
objectThe asset representation for POST requests.
-
Type:
objectassetUpdateAdditional Properties Allowed:The asset representation for PUT requests. -
Type:
objectassetCreate-allOf[1]Additional Properties Allowed:
Nested Schema : apiCreate-allOf[1]
- apiDefn
-
Type:
arraystringArrayAdditional Properties Allowed:Minimum Number of Items:0An array of string values. - basePath
-
Type:
stringThe API base path in the format `/mobile/custom/{apiName}`. This is required to define the API name. - businessObjectsDefn
-
Type:
string - hasBusinessObjects
-
Type:
booleanDefault Value:falseIndicates whether the API is associated with API Express resources (business objects). - icon
-
Type:
objecticonAdditional Properties Allowed:Information about the icon that's associated with the API or connector. - security
-
Type:
objectapiSecurityAdditional Properties Allowed:The API security for POST and PUT requests.
Nested Schema : assetUpdate
Type:
objectThe asset representation for PUT requests.
- actionComment
-
Type:
string - desc
-
Type:
stringMaximum Length:100 - max
-
Type:
booleanDefault Value:false - name
-
Type:
stringRequired:trueMaximum Length:100Pattern:^[a-zA-Z][a-zA-Z0-9_]*$ - namespace
-
Type:
stringApplicable to APIs and implementations only. This value is null for all other asset types. - title
-
Type:
stringMaximum Length:255 - version
-
Type:
stringMaximum Length:100Pattern:^[a-zA-Z0-9][\w.]*$Asset version.
Nested Schema : assetCreate-allOf[1]
- max
-
Type:
booleanDefault Value:false
Nested Schema : stringArray
Nested Schema : icon
Type:
objectInformation about the icon that's associated with the API or connector.
- id
-
Type:
stringRequired:true - url
-
Type:
stringRequired:true
Nested Schema : apiSecurity
Type:
objectThe API security for POST and PUT requests.
- access
-
Type:
objectsecurityAccessAdditional Properties Allowed:Access details. - endpoints
-
Type:
arrayendpointSecurityArrayAdditional Properties Allowed:Minimum Number of Items:0An array of endpoint security elements. - loginType
-
Allowed Values:
[ "ENTERPRISE", "IDENTITYPROVIDER" ]If the `required` attribute has a value of `true`, then the default is `ENTERPRISE`. - required
-
Type:
booleanRequired:trueWhen `true`, either security access or a social identity provider configuration is required.
Nested Schema : securityAccess
Type:
objectAccess details.
- all
-
Type:
boolean - roles
-
Type:
arraystringArrayAdditional Properties Allowed:Minimum Number of Items:0An array of string values.
Nested Schema : endpointSecurityArray
Type:
arrayMinimum Number of Items:
0An array of endpoint security elements.
-
Type:
objectendpointSecurityAdditional Properties Allowed:The API security for POST and PUT requests.
Nested Schema : endpointSecurity
Type:
objectThe API security for POST and PUT requests.
- access
-
Type:
objectsecurityAccessAdditional Properties Allowed:Access details. - method
-
Type:
stringRequired:true - resource
-
Type:
stringRequired:true
Response
Supported Media Types
- application/json
201 Response
The API was created, and the metadata for the new API was returned.
Headers
- ETag
-
Type:
stringThe ETag corresponds to the state of the API (that is, the value increments by one on each change operation). You can use this ETag with the `If-Match` HTTP header on a request. - Location
-
Type:
stringURL to get the details about the new APIs.
Body
Information about the API (short form) and the RAML-validation result. This information doesn't include the RAML descriptor.
Root Schema : apiCreatedWithRamlValidation
Type:
objectInformation about the API (short form) and the RAML-validation result. This information doesn't include the RAML descriptor.
-
Type:
objectapiShortAdditional Properties Allowed:The short API definition representation. -
Type:
objectapiCreatedWithRamlValidation-allOf[1]Additional Properties Allowed:
Nested Schema : apiShort
Type:
objectThe short API definition representation.
-
Type:
objectassetGetAdditional Properties Allowed:The asset representation for GET requests. -
Type:
objectapiShort-allOf[1]Additional Properties Allowed:
Nested Schema : apiCreatedWithRamlValidation-allOf[1]
- ramlValidationReport
-
Type:
objectramlValidationReportAdditional Properties Allowed:The result of the RAML validation. - security
-
Type:
objectapiSecurityAdditional Properties Allowed:The API security for POST and PUT requests.
Nested Schema : assetGet
Type:
objectThe asset representation for GET requests.
-
Type:
objectassetUpdateAdditional Properties Allowed:The asset representation for PUT requests. -
Type:
objectassetIdEtagAdditional Properties Allowed:The asset ID and entity tag (ETag) values. -
Type:
objecttrashAdditional Properties Allowed:Indicator of whether the asset is in the trash. -
Type:
objectassetGet-allOf[3]Additional Properties Allowed:
Nested Schema : apiShort-allOf[1]
- basePath
-
Type:
stringThe API base path in the format `/mobile/custom/{apiName}`. - hasBusinessObjects
-
Type:
booleanDefault Value:falseIndicates whether the API is associated with API Express resources (business objects). - icon
-
Type:
objecticonAdditional Properties Allowed:Information about the icon that's associated with the API or connector.
Nested Schema : assetUpdate
Type:
objectThe asset representation for PUT requests.
- actionComment
-
Type:
string - desc
-
Type:
stringMaximum Length:100 - max
-
Type:
booleanDefault Value:false - name
-
Type:
stringRequired:trueMaximum Length:100Pattern:^[a-zA-Z][a-zA-Z0-9_]*$ - namespace
-
Type:
stringApplicable to APIs and implementations only. This value is null for all other asset types. - title
-
Type:
stringMaximum Length:255 - version
-
Type:
stringMaximum Length:100Pattern:^[a-zA-Z0-9][\w.]*$Asset version.
Nested Schema : assetIdEtag
Type:
objectThe asset ID and entity tag (ETag) values.
- etag
-
Type:
stringThe asset entity tag (ETag) value, which you can use to detect concurrent modification. - id
-
Type:
stringRequired:true
Nested Schema : trash
Nested Schema : assetGet-allOf[3]
- createdOn
-
Type:
string - deletedBy
-
Type:
string - deletedOn
-
Type:
string - links
-
Type:
arrayentityLinksArrayAdditional Properties Allowed:Minimum Number of Items:0An array of links for an entity's metadata. - modifiedBy
-
Type:
string - modifiedOn
-
Type:
string - published
-
Type:
booleanAn asset draft or published status representation.
Nested Schema : entityLinksArray
Nested Schema : items
Type:
objectLink to the entity's metadata.
- href
-
Type:
stringRequired:trueLink value. - rel
-
Required:
trueAllowed Values:[ "self", "canonical" ]Link type.
Nested Schema : icon
Type:
objectInformation about the icon that's associated with the API or connector.
- id
-
Type:
stringRequired:true - url
-
Type:
stringRequired:true
Nested Schema : ramlValidationReport
Type:
objectThe result of the RAML validation.
- valid
-
Type:
booleanRequired:true - validationResults
-
Type:
arrayvalidationResultsAdditional Properties Allowed:Minimum Number of Items:0
Nested Schema : apiSecurity
Type:
objectThe API security for POST and PUT requests.
- access
-
Type:
objectsecurityAccessAdditional Properties Allowed:Access details. - endpoints
-
Type:
arrayendpointSecurityArrayAdditional Properties Allowed:Minimum Number of Items:0An array of endpoint security elements. - loginType
-
Allowed Values:
[ "ENTERPRISE", "IDENTITYPROVIDER" ]If the `required` attribute has a value of `true`, then the default is `ENTERPRISE`. - required
-
Type:
booleanRequired:trueWhen `true`, either security access or a social identity provider configuration is required.
Nested Schema : validationResults
Nested Schema : securityAccess
Type:
objectAccess details.
- all
-
Type:
boolean - roles
-
Type:
arraystringArrayAdditional Properties Allowed:Minimum Number of Items:0An array of string values.
Nested Schema : endpointSecurityArray
Type:
arrayMinimum Number of Items:
0An array of endpoint security elements.
-
Type:
objectendpointSecurityAdditional Properties Allowed:The API security for POST and PUT requests.
Nested Schema : stringArray
Nested Schema : endpointSecurity
Type:
objectThe API security for POST and PUT requests.
- access
-
Type:
objectsecurityAccessAdditional Properties Allowed:Access details. - method
-
Type:
stringRequired:true - resource
-
Type:
stringRequired:true
400 Response
The API metadata is missing information (for example, the API specification is missing) or it has incorrect data (the RAML can't be parsed).
In the case of an incorrect RAML, send a request to POST /apis/raml to get RAML validation details.
Body
Root Schema : error
Type:
object- detail
-
Type:
stringRequired:trueMessage that provides the error details. - o:ecid
-
Type:
stringRequired:trueExecution context ID, which is a unique identifier to correlate events or requests that are associated with the same transaction across several components. - o:errorCode
-
Type:
stringRequired:trueThe service's error code. - o:errorDetails
-
Type:
objecterrorDetailsAdditional Properties Allowed: - o:errorPath
-
Type:
stringRequired:trueThe relative point in the API path where the error occurred. - status
-
Type:
integer(int64)Required:trueHTTP status code. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for more details. - title
-
Type:
stringRequired:trueSummary of the problem. - type
-
Type:
stringRequired:trueThe URI to the link that provides details about the HTTP status code.
Nested Schema : errorDetails
Type:
object- detail
-
Type:
stringRequired:true - o:errorDetails
-
Type:
objecterrorDetailsAdditional Properties Allowed: - title
-
Type:
stringRequired:trueSummary of the problem. - type
-
Type:
stringRequired:trueThe URI to the link that provides details about the HTTP status code.
409 Response
An API with the same name and version already exists.
Body
Root Schema : error
Type:
object- detail
-
Type:
stringRequired:trueMessage that provides the error details. - o:ecid
-
Type:
stringRequired:trueExecution context ID, which is a unique identifier to correlate events or requests that are associated with the same transaction across several components. - o:errorCode
-
Type:
stringRequired:trueThe service's error code. - o:errorDetails
-
Type:
objecterrorDetailsAdditional Properties Allowed: - o:errorPath
-
Type:
stringRequired:trueThe relative point in the API path where the error occurred. - status
-
Type:
integer(int64)Required:trueHTTP status code. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for more details. - title
-
Type:
stringRequired:trueSummary of the problem. - type
-
Type:
stringRequired:trueThe URI to the link that provides details about the HTTP status code.
Nested Schema : errorDetails
Type:
object- detail
-
Type:
stringRequired:true - o:errorDetails
-
Type:
objecterrorDetailsAdditional Properties Allowed: - title
-
Type:
stringRequired:trueSummary of the problem. - type
-
Type:
stringRequired:trueThe URI to the link that provides details about the HTTP status code.
Examples
The following example shows how to add an API using cURL. For more information about cURL, see Use cURL.
curl -i -X POST -d @body.json -H "Content-Type: application/json; charset=utf-8" -H "Authorization: Bearer $TOKEN" "$BASE_URL/mobile/tools/1.0/apis"
Example of Request Body
The following shows an example of a request body that contains the required properties, which are version, desc, and apiDefn. The values were obtained from the response body of a POST /mobile/tools/1.0/apis/raml request.
{
"version": "1.0",
"desc": "Message of the Day API",
"apiDefn": [
"#%RAML 0.8\r",
"title: Message of the Day\r",
"version: 1.0\r",
"baseUri: /mobile/custom/motd\r",
"schemas:\r",
" - motd: | \r",
" {\r",
" \"id\": \"motd\",\r",
" \"$schema\": \"http://json-schema.org/draft-04/schema#\",\r",
" \"title\": \"The message of the day.\",\r",
" \"type\": \"object\",\r",
" \"properties\": {\r",
" \"message\": {\r",
" \"description\":\"The message string.\",\r",
" \"type\": \"string\"\r",
" }\r",
" }\r",
" }\r",
" \r",
"/motd:\r",
" description: \"Message to display on the home page.\"\r",
" get:\r",
" description: \"Returns the message of the day.\"\r",
" responses:\r",
" 200:\r",
" description: \"The information was retrieved successfully.\"\r",
" body: \r",
" application/json: \r",
" schema: motd\r",
" example: | \r",
" {\r",
" \"message\": \"Happy Monday!\"\r",
" }"
]
}
Example of Response Header
The following shows an example of the response headers:
200 CREATED Content-Length: 1700 Content-Type: application/json Date: Thurs, 19 Oct 2017 23:56:59 GMT Etag: "1"
Example of Response Body
The following example shows the contents of the response body in JSON format:
{
"id": "1f014f2f-700c-4ef9-889a-4be803923720",
"namespace": "custom",
"name": "motd",
"version": "1.0",
"desc": "Message of the Day API",
"links": [
{
"rel": "canonical",
"href": "/mobile/tools/1.0/apis/1f014f2f-700c-4ef9-889a-4be803923720"
},
{
"rel": "purgeDependencies",
"href": "/mobile/tools/1.0/assets/purgeDependencies"
},
{
"rel": "purging",
"href": "/mobile/tools/1.0/assets/purging"
},
{
"rel": "trashDependencies",
"href": "/mobile/tools/1.0/assets/trashDependencies"
},
{
"rel": "trashing",
"href": "/mobile/tools/1.0/assets/trashing"
},
{
"rel": "untrashDependencies",
"href": "/mobile/tools/1.0/assets/untrashDependencies"
},
{
"rel": "untrashing",
"href": "/mobile/tools/1.0/assets/untrashing"
},
{
"rel": "dependencies",
"href": "/mobile/tools/1.0/apis/1f014f2f-700c-4ef9-889a-4be803923720/dependencies"
},
{
"rel": "history",
"href": "/mobile/tools/1.0/apis/1f014f2f-700c-4ef9-889a-4be803923720/history"
},
{
"rel": "publication",
"href": "/mobile/tools/1.0/apis/1f014f2f-700c-4ef9-889a-4be803923720/publication"
},
{
"rel": "reverseDependencies",
"href": "/mobile/tools/1.0/apis/1f014f2f-700c-4ef9-889a-4be803923720/reverseDependencies"
},
{
"rel": "implementations",
"href": "/mobile/tools/1.0/apis/1f014f2f-700c-4ef9-889a-4be803923720/implementations"
},
{
"rel": "self",
"href": "/mobile/tools/1.0/apis"
}
],
"published": false,
"inTrash": false,
"actionComment": null,
"etag": "1",
"createdOn": "2017-10-04T23:57:02.026Z",
"modifiedOn": "2017-10-04T23:57:02.026Z",
"modifiedBy": "jdoe",
"deletedOn": null,
"deletedBy": null,
"title": "Message of the Day",
"basePath": "/mobile/custom/motd",
"icon": null,
"category": "CUSTOM",
"hasBusinessObjects": false,
"ramlValidationReport": {
"validationResults": [],
"valid": true
},
"security": {
"required": false,
"loginType": null,
"access": null,
"endpoints": []
}
}