API Proxy Registration

Summary

Register and manage frontend API proxies

Description

Manage and configure frontend API proxy services using this API. This API manages VirtualizedAPI, that is a virtual service that proxies backend API service(s). The API backend services are created and managed using the API Repository. The VirtualizedAPI provides all of the configuration necessary to protect the backend services, authorize clients, and secure frontend and backend using SSL. The proxy is comprised of individual backend API methods in the form of VirtualizedAPIMethod.

The frontend API proxy are created by Organization Administrators in organizations that have API development enabled. Only an API administrator can enable API development.

This API also manages the lifecycle of the frontend API. The API starts its lifecycle as unpublished, which restricts use of the API to members of the API development organization. While the API is unpublished, the frontend and backend API may be modified, methods added/removed, and parameters added/removed as necessary - changes will be reflected in the frontend. While the API is unpublished, it cannot be assigned to other organizations. When the API is complete and ready to be used, the API developer can request that the API be published. This moves the API to a pending state until the API administrator decides to publish the API. When the API is published, the API is read-only, however, the API documentation may still be edited by the API Developer, or by an API administrator.

Resources

Resource Since Version Description
GET /api/portal/v1.3/proxies Queries a list of frontend API.
POST /api/portal/v1.3/proxies Creates a new API proxy from a backend API.
POST /api/portal/v1.3/proxies/export Creates an API export.
GET /api/portal/v1.3/proxies/export/{id} Downloads an API export.
POST /api/portal/v1.3/proxies/grantaccess Macro function to grant API access.
POST /api/portal/v1.3/proxies/import Imports a previously exported API.
POST /api/portal/v1.3/proxies/importFromUrl Imports a previously exported API.
POST /api/portal/v1.3/proxies/promote Invokes the internal API promotion policy for the specified API.
POST /api/portal/v1.3/proxies/upgrade/{id} Upgrades an existing API to a newer API.
GET /api/portal/v1.3/proxies/{id} Gets a frontend API by ID.
DELETE /api/portal/v1.3/proxies/{id} Deletes an API proxy.
PUT /api/portal/v1.3/proxies/{id} Updates an API proxy.
POST /api/portal/v1.3/proxies/{id}/deprecate Deprecates the API.
GET /api/portal/v1.3/proxies/{id}/image/ Gets the image for the API.
POST /api/portal/v1.3/proxies/{id}/image/ Set the image for the frontend API.
GET /api/portal/v1.3/proxies/{id}/operations Gets a list of methods that are avilable to the API proxy.
PUT /api/portal/v1.3/proxies/{id}/operations/{operationId} Updates an API proxy operation.
GET /api/portal/v1.3/proxies/{id}/operations/{operationId} Gets an API method by ID.
DELETE /api/portal/v1.3/proxies/{id}/operations/{operationId} Deletes an API method by ID.
POST /api/portal/v1.3/proxies/{id}/publish Publish the API.
POST /api/portal/v1.3/proxies/{id}/undeprecate Undeprecates the API.
POST /api/portal/v1.3/proxies/{id}/unpublish Unpublish the API.

GET /api/portal/v1.3/proxies

Summary

Queries a list of frontend API.

Description

Returns a list of API that are visible to the authenticated user. The list of API can be filtered using the expression: field=__field__&op=__op__&value=__value__. Optionally, you can add a logical operation for all expressions, using the form: &lop=AND|OR. By default, the logical operation is AND. Multiple expression filters can be used, specifying field, op, and value for each filter. The field is one of:

name
The name of the API
apiid
Matches the API if the API is virtualized from the specified backend API
createdOn
The date the user was created on, time in ms, e.g.: 1372755998542
deprecated
The deprecated state of the API, one of: true or false
retired
The retired state of the API, one of: true or false
state
The API's state, one of: unpublished, pending, or published

The op is an operation and is one of:

eq
Equal
ne
Not equal
gt
Greater than
lt
Less than
ge
Greater than or equal
le
Less than or equal
like
Like
gete
Greater than or equal to, and less than or equal to; the value should be a lower-minimum and upper-maximum separated by comma, e.g: value=5,10

The value will be compared against the field, according to the supplied op.

Parameters

Parameter Description Data Type Location Required Multiple
field Filter field name. String query Multiple
op Filter operation. String query Multiple
value Filter value String / Integer query Multiple

Status Codes

HTTP Status Code Reason
200 OK
403 Forbidden
500 Internal Server Error

Returns Array

[ VirtualizedAPI ]


POST /api/portal/v1.3/proxies

Summary

Creates a new API proxy from a backend API.

Description

The VirtualizedAPI apiId is required. If creating the APIas an API administrator, the VirtualizedAPI organizationId must also be specified.

Parameters

Parameter Description Data Type Location Required Multiple
- The frontend API to create. VirtualizedAPI body Required

Status Codes

HTTP Status Code Reason
201 Created
400 Bad Request
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPI

Example

POST https://localhost:8075/api/portal/v1.3/proxies

Request

{"apiId": "9064396e-7743-4644-a0b7-d30b421e2b30", "organizationId": "b6889722b7-222-b06f-2eaaf1548898"}

Response
HTTP 1.1 201 Created
{
  "id" : "bacb827e-e555-43fa-b006-50c7404aa990",
  "organizationId" : "b6889722b7-222-b06f-2eaaf1548898",
  "apiId" : "9064396e-7743-4644-a0b7-d30b421e2b30",
  "name" : "My virtualized API",
  "version" : "1.0",
  "vhost" : "host.company.com",
  "path" : "/flikr",
  "descriptionType" : "manual",
  "descriptionManual" : "My API\n====\n\nThis is my API.",
  "descriptionMarkdown" : "${environment.VINSTDIR}/../markdown/flickr/flickr.md",
  "descriptionUrl" : "http://doc.api.org/myapi/mymethod#anchor",
  "summary" : "My API\n====\n\nThis is my API.",
  "retired" : false,
  "expired" : false,
  "image" : "resources/photo.jpg",
  "retirementDate" : 1364287486876,
  "deprecated" : true,
  "state" : "unpublished",
  "createdOn" : 1364287486876,
  "createdBy" : "de077cd8-83b7-46d1-b06f-2eaaf1548898",
  "corsProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "origins" : [ "http://api.google.com", "http://api.flickr.com" ],
    "allowedHeaders" : [ "X-Request-Value", "X-Hello-World" ],
    "exposedHeaders" : [ "X-Trace", "X-CorrelationID" ],
    "supportCredentials" : false,
    "maxAgeSeconds" : 84600
  } ],
  "securityProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "devices" : [ {
      "name" : "My Pass-through Device",
      "type" : "apiKey",
      "order" : 1,
      "properties" : {
        "apiKeyFieldName" : "APIKey",
        "takeFrom" : "HEADER"
      }
    } ]
  } ],
  "authenticationProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "parameters" : {
      "apiKey" : "e7812c14-b67a-4eef-84a1-e18c0d8436ba",
      "apiKeyField" : "KeyId",
      "httpLocation" : "query"
    },
    "type" : "apikey"
  } ],
  "inboundProfiles" : {
    "_default" : {
      "securityProfile" : "Default Inbound Security",
      "corsProfile" : "Default CORS profile",
      "monitorAPI" : true,
      "monitorSubject" : "authentication.subject.id"
    }
  },
  "outboundProfiles" : {
    "_default" : {
      "authenticationProfile" : "My Backend",
      "routeType" : "proxy",
      "requestPolicy" : null,
      "responsePolicy" : null,
      "routePolicy" : null,
      "apiId" : "9064396e-7743-4644-a0b7-d30b421e2b30",
      "apiMethodId" : "7fd18d9a-1258-4031-a168-d7f6bf612dc1",
      "parameters" : [ {
        "name" : "id",
        "paramType" : "query",
        "type" : "string",
        "value" : "${params.path.id}",
        "required" : true,
        "exclude" : false,
        "additional" : false
      } ]
    }
  },
  "serviceProfiles" : {
    "_default" : {
      "apiId" : "96f745ae-a41a-41a9-aad8-8bf24b5cc27e",
      "basePath" : "http://backend.io"
    }
  },
  "caCerts" : [ {
    "certBlob" : "YmxvYg==",
    "name" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "alias" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "subject" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "issuer" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "version" : 3,
    "notValidBefore" : 1364287486876,
    "notValidAfter" : 1364287486876,
    "signatureAlgorithm" : "RSA (2048 bits)",
    "sha1Fingerprint" : "BC:5C:0D:3E:47:58:DF:E8:42:A4:D2:34:C5:D4:97:14:DA:54:F4:CD",
    "md5Fingerprint" : "89:DD:C1:6C:C0:6E:1D:B1:75:0C:48:E5:E6:AC:76:B0",
    "expired" : true,
    "notYetValid" : false,
    "inbound" : false,
    "outbound" : true
  } ],
  "tags" : {
    "Type" : [ "REST" ],
    "Category" : [ "Social Network, Photos" ]
  }
}


POST /api/portal/v1.3/proxies/export

Summary

Creates an API export.

Description

Creates an export for use in promoting the API to a new environment. The export contains the frontend VirtualizedAPI, their settings, and all backend APIDefinition that are required for the frontend API. If password is supplied, the exported file will be encrypted with the password. If successful, returns 201 Created, and the HTTP Location header contain the of the URL of the export. The export is temporary, and may only be downloaded once.

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier(s) to export. String form Required Multiple
password Encrypts the list of API using the password. String form Required
filename Optional filename to use in response. String form Required

Status Codes

HTTP Status Code Reason
201 Created
400 Bad Request
403 Forbidden
500 Internal Server Error

Return Value

application/octet-stream


GET /api/portal/v1.3/proxies/export/{id}

Summary

Downloads an API export.

Description

The API export is produced from /exportApis. If filename is supplied, the download will use it as the Content-Disposition filename attachment.

Parameters

Parameter Description Data Type Location Required Multiple
id The export identifier. String path Required
filename The export will be downloaded using a Content-Dispostion using the supplied filename String query Required

Status Codes

HTTP Status Code Reason
200 OK
403 Forbidden
500 Internal Server Error

Returns Class

APIPromotion


POST /api/portal/v1.3/proxies/grantaccess

Summary

Macro function to grant API access.

Description

Function to macro-apply access to selected API. The access can be granted to organizations or entities having access to specified API. If action is all_orgs, access will be granted to all organizations; if action is orgs, access will be granted to the organization(s) specified by grantOrganizations; if action is orgs_with_apis, access will be granted to the organizations with access to the apis specified by grantApis.

Parameters

Parameter Description Data Type Location Required Multiple
action Grant action to perform. Possible values are: all_orgs, orgs, and orgs_with_apis. String form Required
apiId List of API ID to which access will be granted. String form Required
grantOrgId List of target organization ID to which access to apiId will be granted (action is orgs) String form Required Multiple
grantApiId List of API ID to which access to to apiId will be granted (action is orgs_with_apis). String form Required Multiple

Status Codes

HTTP Status Code Reason
204 No Content
400 Bad Request
403 Forbidden
500 Internal Server Error

POST /api/portal/v1.3/proxies/import

Summary

Imports a previously exported API.

Description

Imports API, previously exported using /exportApis. If the API was exported using a password, then the file is encrypted, and a password argument must be provided to decrypt. The import will create VirtualizedAPI, their settings, and all backend APIDefinition necessary to support the frontend API. This method is similar to /importFromUrl, save that this method supports traditional form-based file upload, using multipart/form-data.

Parameters

Parameter Description Data Type Location Required Multiple
organizationId The organization identifier. String form Required
password Optional password to decrypt the import file. String form Required
file The data file to import. File form Required

Status Codes

HTTP Status Code Reason
201 Created
400 Bad Request
403 Forbidden
500 Internal Server Error

POST /api/portal/v1.3/proxies/importFromUrl

Summary

Imports a previously exported API.

Description

Imports API, previously exported using /exportApis. If the API was exported using a password, then the file is encrypted, and a password argument must be provided to decrypt. The import will create VirtualizedAPI, their settings, and all backend APIDefinition necessary to support the frontend API. The url should be a data URI scheme.

Parameters

Parameter Description Data Type Location Required Multiple
organizationId The organization identifier. String form Required
url The data URI. String form Required
password Optional password to decrypt the import file. String form Required

Status Codes

HTTP Status Code Reason
201 Created
400 Bad Request
403 Forbidden
500 Internal Server Error

POST /api/portal/v1.3/proxies/promote

Summary

Invokes the internal API promotion policy for the specified API.

Description

In API Manager, API promotion must first be enabled in Settings. Also, in Policy Studio (Server Settings -> API Manager -> API Promotion) a promotion policy must be selected. By default a sample promotion policy is installed

Parameters

Parameter Description Data Type Location Required Multiple
apiId The frontend API identifier(s) to promote String form Required Multiple

Status Codes

HTTP Status Code Reason
204 No Content
400 Bad Request
403 Forbidden
500 Internal Server Error

POST /api/portal/v1.3/proxies/upgrade/{id}

Summary

Upgrades an existing API to a newer API.

Description

During an API lifecycle, it is necessary to upgrade users to use a newer API. The idea being that the old API should be phased-out, and developers should move their applications to use the newer API. This method will assign upgradeApiId, the same API access to all organizations and applications that already have access to the API specified by id. Optionally, the old API may be deprecated or retired using deprecate, retire, or scheduled to be retired using retirementDate.

Parameters

Parameter Description Data Type Location Required Multiple
id String path Required
upgradeApiId The id of the backend API which will be used to upgrade this virtualized API String form Required
deprecate Specifies whether or not the API being upgraded should be depreated boolean form Required
retire Specifies whether or not the API being upgraded should be retired boolean form Required
retirementDate Specifies the retirement date of the the API being upgraded if its being retired String form Required

Status Codes

HTTP Status Code Reason
204 No Content
400 Bad Request
403 Forbidden
500 Internal Server Error

GET /api/portal/v1.3/proxies/{id}

Summary

Gets a frontend API by ID.

Description

none

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required

Status Codes

HTTP Status Code Reason
200 OK
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPI


DELETE /api/portal/v1.3/proxies/{id}

Summary

Deletes an API proxy.

Description

Deletes an API proxy, removing all API access in the process.

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required

Status Codes

HTTP Status Code Reason
204 No Content
403 Forbidden
500 Internal Server Error

PUT /api/portal/v1.3/proxies/{id}

Summary

Updates an API proxy.

Description

none

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required
- The virtualized API to update VirtualizedAPI body Required

Status Codes

HTTP Status Code Reason
200 OK
400 Bad Request
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPI

Example

PUT https://localhost:8075/api/portal/v1.3/proxies/{id}

Request

{
  "id" : "bacb827e-e555-43fa-b006-50c7404aa990",
  "organizationId" : "b6889722b7-222-b06f-2eaaf1548898",
  "apiId" : "9064396e-7743-4644-a0b7-d30b421e2b30",
  "name" : "My virtualized API",
  "version" : "1.0",
  "vhost" : "host.company.com",
  "path" : "/flikr",
  "descriptionType" : "manual",
  "descriptionManual" : "My API\n====\n\nThis is my API.",
  "descriptionMarkdown" : "${environment.VINSTDIR}/../markdown/flickr/flickr.md",
  "descriptionUrl" : "http://doc.api.org/myapi/mymethod#anchor",
  "summary" : "My API\n====\n\nThis is my API.",
  "retired" : false,
  "expired" : false,
  "image" : "resources/photo.jpg",
  "retirementDate" : 1364287486876,
  "deprecated" : true,
  "state" : "unpublished",
  "createdOn" : 1364287486876,
  "createdBy" : "de077cd8-83b7-46d1-b06f-2eaaf1548898",
  "corsProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "origins" : [ "http://api.google.com", "http://api.flickr.com" ],
    "allowedHeaders" : [ "X-Request-Value", "X-Hello-World" ],
    "exposedHeaders" : [ "X-Trace", "X-CorrelationID" ],
    "supportCredentials" : false,
    "maxAgeSeconds" : 84600
  } ],
  "securityProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "devices" : [ {
      "name" : "My Pass-through Device",
      "type" : "apiKey",
      "order" : 1,
      "properties" : {
        "apiKeyFieldName" : "APIKey",
        "takeFrom" : "HEADER"
      }
    } ]
  } ],
  "authenticationProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "parameters" : {
      "apiKey" : "e7812c14-b67a-4eef-84a1-e18c0d8436ba",
      "apiKeyField" : "KeyId",
      "httpLocation" : "query"
    },
    "type" : "apikey"
  } ],
  "inboundProfiles" : {
    "_default" : {
      "securityProfile" : "Default Inbound Security",
      "corsProfile" : "Default CORS profile",
      "monitorAPI" : true,
      "monitorSubject" : "authentication.subject.id"
    }
  },
  "outboundProfiles" : {
    "_default" : {
      "authenticationProfile" : "My Backend",
      "routeType" : "proxy",
      "requestPolicy" : null,
      "responsePolicy" : null,
      "routePolicy" : null,
      "apiId" : "9064396e-7743-4644-a0b7-d30b421e2b30",
      "apiMethodId" : "7fd18d9a-1258-4031-a168-d7f6bf612dc1",
      "parameters" : [ {
        "name" : "id",
        "paramType" : "query",
        "type" : "string",
        "value" : "${params.path.id}",
        "required" : true,
        "exclude" : false,
        "additional" : false
      } ]
    }
  },
  "serviceProfiles" : {
    "_default" : {
      "apiId" : "96f745ae-a41a-41a9-aad8-8bf24b5cc27e",
      "basePath" : "http://backend.io"
    }
  },
  "caCerts" : [ {
    "certBlob" : "YmxvYg==",
    "name" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "alias" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "subject" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "issuer" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "version" : 3,
    "notValidBefore" : 1364287486876,
    "notValidAfter" : 1364287486876,
    "signatureAlgorithm" : "RSA (2048 bits)",
    "sha1Fingerprint" : "BC:5C:0D:3E:47:58:DF:E8:42:A4:D2:34:C5:D4:97:14:DA:54:F4:CD",
    "md5Fingerprint" : "89:DD:C1:6C:C0:6E:1D:B1:75:0C:48:E5:E6:AC:76:B0",
    "expired" : true,
    "notYetValid" : false,
    "inbound" : false,
    "outbound" : true
  } ],
  "tags" : {
    "Type" : [ "REST" ],
    "Category" : [ "Social Network, Photos" ]
  }
}

Response
HTTP 1.1 200 OK
{
  "id" : "bacb827e-e555-43fa-b006-50c7404aa990",
  "organizationId" : "b6889722b7-222-b06f-2eaaf1548898",
  "apiId" : "9064396e-7743-4644-a0b7-d30b421e2b30",
  "name" : "My virtualized API",
  "version" : "1.0",
  "vhost" : "host.company.com",
  "path" : "/flikr",
  "descriptionType" : "manual",
  "descriptionManual" : "My API\n====\n\nThis is my API.",
  "descriptionMarkdown" : "${environment.VINSTDIR}/../markdown/flickr/flickr.md",
  "descriptionUrl" : "http://doc.api.org/myapi/mymethod#anchor",
  "summary" : "My API\n====\n\nThis is my API.",
  "retired" : false,
  "expired" : false,
  "image" : "resources/photo.jpg",
  "retirementDate" : 1364287486876,
  "deprecated" : true,
  "state" : "unpublished",
  "createdOn" : 1364287486876,
  "createdBy" : "de077cd8-83b7-46d1-b06f-2eaaf1548898",
  "corsProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "origins" : [ "http://api.google.com", "http://api.flickr.com" ],
    "allowedHeaders" : [ "X-Request-Value", "X-Hello-World" ],
    "exposedHeaders" : [ "X-Trace", "X-CorrelationID" ],
    "supportCredentials" : false,
    "maxAgeSeconds" : 84600
  } ],
  "securityProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "devices" : [ {
      "name" : "My Pass-through Device",
      "type" : "apiKey",
      "order" : 1,
      "properties" : {
        "apiKeyFieldName" : "APIKey",
        "takeFrom" : "HEADER"
      }
    } ]
  } ],
  "authenticationProfiles" : [ {
    "name" : "Default Security Profile",
    "isDefault" : false,
    "parameters" : {
      "apiKey" : "e7812c14-b67a-4eef-84a1-e18c0d8436ba",
      "apiKeyField" : "KeyId",
      "httpLocation" : "query"
    },
    "type" : "apikey"
  } ],
  "inboundProfiles" : {
    "_default" : {
      "securityProfile" : "Default Inbound Security",
      "corsProfile" : "Default CORS profile",
      "monitorAPI" : true,
      "monitorSubject" : "authentication.subject.id"
    }
  },
  "outboundProfiles" : {
    "_default" : {
      "authenticationProfile" : "My Backend",
      "routeType" : "proxy",
      "requestPolicy" : null,
      "responsePolicy" : null,
      "routePolicy" : null,
      "apiId" : "9064396e-7743-4644-a0b7-d30b421e2b30",
      "apiMethodId" : "7fd18d9a-1258-4031-a168-d7f6bf612dc1",
      "parameters" : [ {
        "name" : "id",
        "paramType" : "query",
        "type" : "string",
        "value" : "${params.path.id}",
        "required" : true,
        "exclude" : false,
        "additional" : false
      } ]
    }
  },
  "serviceProfiles" : {
    "_default" : {
      "apiId" : "96f745ae-a41a-41a9-aad8-8bf24b5cc27e",
      "basePath" : "http://backend.io"
    }
  },
  "caCerts" : [ {
    "certBlob" : "YmxvYg==",
    "name" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "alias" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "subject" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "issuer" : "CN=Equifax Secure eBusiness CA-1, O=Equifax Secure Inc., C=US",
    "version" : 3,
    "notValidBefore" : 1364287486876,
    "notValidAfter" : 1364287486876,
    "signatureAlgorithm" : "RSA (2048 bits)",
    "sha1Fingerprint" : "BC:5C:0D:3E:47:58:DF:E8:42:A4:D2:34:C5:D4:97:14:DA:54:F4:CD",
    "md5Fingerprint" : "89:DD:C1:6C:C0:6E:1D:B1:75:0C:48:E5:E6:AC:76:B0",
    "expired" : true,
    "notYetValid" : false,
    "inbound" : false,
    "outbound" : true
  } ],
  "tags" : {
    "Type" : [ "REST" ],
    "Category" : [ "Social Network, Photos" ]
  }
}


POST /api/portal/v1.3/proxies/{id}/deprecate

Summary

Deprecates the API.

Description

Only an API Administrator may deprecate an API, and only published API may be deprecated. When an API is deprecated, the API can still be used, but users will be informed that the API has been deprecated. Optionally, a retirementDate may be set which will schedule the API to be automatically retired and removed from use. If specified, the retirementDate should be in ISO-8601 format (e.g. 2015-01-01T12:00:00Z).

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required
retirementDate Optional API retirement date specified in ISO-8601 format. Set to the past to retire immediately. String form

Status Codes

HTTP Status Code Reason
201 Created
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPI


GET /api/portal/v1.3/proxies/{id}/image/

Summary

Gets the image for the API.

Description

Returns the jpeg image associated with the API.

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required

Status Codes

HTTP Status Code Reason
200 OK
403 Forbidden
500 Internal Server Error

POST /api/portal/v1.3/proxies/{id}/image/

Summary

Set the image for the frontend API.

Description

Set the jpeg image to be associated with the API.

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required
file File form
type String query

Status Codes

HTTP Status Code Reason
204 No Content
400 Bad Request
413 Request Entity Too Large
500 Internal Server Error

GET /api/portal/v1.3/proxies/{id}/operations

Summary

Gets a list of methods that are avilable to the API proxy.

Description

none

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required

Status Codes

HTTP Status Code Reason
200 OK
403 Forbidden
500 Internal Server Error

Returns Array

[ VirtualizedAPIMethod ]


PUT /api/portal/v1.3/proxies/{id}/operations/{operationId}

Summary

Updates an API proxy operation.

Description

none

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required
operationId The frontend API method identifier. String path Required
- The method to update. VirtualizedAPIMethod body Required

Status Codes

HTTP Status Code Reason
200 OK
400 Bad Request
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPIMethod

Example

PUT https://localhost:8075/api/portal/v1.3/proxies/{id}/operations/{operationId}

Request

{
  "id" : "f2a0d13a-51f3-4256-855e-2b1d838a5cd2",
  "virtualizedApiId" : "bacb827e-e555-43fa-b006-50c7404aa990",
  "name" : "MyMethod",
  "apiId" : "ec5e0a01-832b-4ecb-8cae-b35630527bb4",
  "apiMethodId" : "21490aa6-ed14-4059-b8b7-d5bf0dc22dc6",
  "summary" : "This is a summary of my API Method",
  "descriptionType" : "original",
  "descriptionManual" : "This is _my_ API method",
  "descriptionMarkdown" : "${environment.VINSTDIR}/../markdown/myapi/method.md",
  "descriptionUrl" : "https://myapi.org/docs/api#method",
  "tags" : {
    "Category" : [ "Social Network, Photos" ],
    "Type" : [ "REST" ]
  }
}

Response
HTTP 1.1 200 OK
{
  "id" : "f2a0d13a-51f3-4256-855e-2b1d838a5cd2",
  "virtualizedApiId" : "bacb827e-e555-43fa-b006-50c7404aa990",
  "name" : "MyMethod",
  "apiId" : "ec5e0a01-832b-4ecb-8cae-b35630527bb4",
  "apiMethodId" : "21490aa6-ed14-4059-b8b7-d5bf0dc22dc6",
  "summary" : "This is a summary of my API Method",
  "descriptionType" : "original",
  "descriptionManual" : "This is _my_ API method",
  "descriptionMarkdown" : "${environment.VINSTDIR}/../markdown/myapi/method.md",
  "descriptionUrl" : "https://myapi.org/docs/api#method",
  "tags" : {
    "Category" : [ "Social Network, Photos" ],
    "Type" : [ "REST" ]
  }
}


GET /api/portal/v1.3/proxies/{id}/operations/{operationId}

Summary

Gets an API method by ID.

Description

none

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required
operationId The frontend API method identifier. String path Required

Status Codes

HTTP Status Code Reason
200 OK
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPIMethod


DELETE /api/portal/v1.3/proxies/{id}/operations/{operationId}

Summary

Deletes an API method by ID.

Description

none

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required
operationId The frontend API method identifier. String path Required

Status Codes

HTTP Status Code Reason
204 No Content
403 Forbidden
500 Internal Server Error

POST /api/portal/v1.3/proxies/{id}/publish

Summary

Publish the API.

Description

If called by an API Administrator, then the API state will be published, otherwise the API state will be pending, and an email notification will be sent to the API Administrators, notifying them of the event. Optionally, on publishing, a new name for the API may be specified. Similarly, an optional vhost may be specified. The vhost is an externally resolvable virtual host from which the API will be accessed.

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required
name The name on which to publish this API. String form Required
vhost The optional virtual host on which to publish this API. String form Required

Status Codes

HTTP Status Code Reason
201 Created
400 Bad Request
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPI


POST /api/portal/v1.3/proxies/{id}/undeprecate

Summary

Undeprecates the API.

Description

Only an API Administrator may undeprecate an API, and only published API, that are deprecated, may be undeprecated.

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required

Status Codes

HTTP Status Code Reason
201 Created
400 Bad Request
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPI


POST /api/portal/v1.3/proxies/{id}/unpublish

Summary

Unpublish the API.

Description

Only an API Administrator may unpublish an API. When an API is unpublished, all access to the API is revoked from all applications, and all organizations, save the API development organization that owns the API.

Parameters

Parameter Description Data Type Location Required Multiple
id The frontend API identifier. String path Required

Status Codes

HTTP Status Code Reason
201 Created
400 Bad Request
403 Forbidden
500 Internal Server Error

Returns Class

VirtualizedAPI