diff --git a/README.md b/README.md index d07d2ad..b8e0410 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ webMethods API Gateway is the core run time component in [webMethods API Manag APIs created in API Gateway can also be published to API Portal for external facing developers’ consumption.  -![](attachments/651659260/651659423.png) +![](attachments/651659260/apimgmt.png) Get API Gateway ---------------- @@ -31,7 +31,7 @@ Hope, everything went well in product provisioning . Lets now get started to exp Hurrah!!!!.. Now that the product is up and running and lets get into the real action of using it. First let us create an API and add some enforcement to it. -1. Login to the webapp ([http://localhost:9072/)](http://localhost:9072/)) using the default credentials (Administrator/manage). If you are using API cloud, make sure to launch the "API Gateway" app.  +1. Login to the webapp ([http://localhost:9072/)](http://localhost:9072/)) using the default credentials. If you are using API cloud, make sure to launch the "API Gateway" app.  2. Create a "DateAPI" by importing [the attached archive](attachments/651659260/651661834.zip) through the import option under the user menu. By default, this API is protected with the API Key security enforcement. @@ -88,7 +88,7 @@ References * [API Management Home](https://github.com/SoftwareAG/API-Management)  * [DevOps Templates](https://github.com/SoftwareAG/sagdevops-templates)  * [Product Documentation](https://docs.webmethods.io/)  -* [Tech community](http://techcommunity.softwareag.com/pwiki/-/wiki/tag/api-gateway) +* [Tech community](https://tech.forums.softwareag.com/tags/c/knowledge-base/6/API-Gateway) * [Software AG Devcast Videos](https://www.youtube.com/results?search_query=software+ag+devcast)  ______________________ diff --git a/apigatewayservices/APIGatewayAdministration.json b/apigatewayservices/APIGatewayAdministration.json index c4dd9a0..808ef8f 100644 --- a/apigatewayservices/APIGatewayAdministration.json +++ b/apigatewayservices/APIGatewayAdministration.json @@ -1,8 +1,8 @@ { "swagger" : "2.0", "info" : { - "description" : "API Gateway Administration Service provides interface for you to administer various functions of the API Gateway. The user needs to have different functional privileges to administer different functions. For example, in order to manage runtime transactions data of the API Gateway, the user needs to have 'Manage purge and restore runtime events' privilege. By default, the users who are part of API-Gateway-Administrators group will have all privileges. \n\nFollowing Administration functions are exposed using this API. \n\n1. Manage data- Archive, Purge and Restore API Gateway runtime events, audit logs & metrics data. \n\nThis function lets the users manage the API Gateway runtime events, audit logs & metrics data. \n\nAPI Gateway generates different types of events in the runtime depending on the state of the API invocation. For example, an error event is generated when API Gateway encounters an error while processing the API request or the response. API Metrics is an aggregated data computed from the different events that happen in the system. These metrics provides information about the key performance indicators of an API like its \"Availability\", \"Fault Count\" etc which are useful for monitoring & governing the service performance and service level agreements. The API providers has a variety of options to choose from for storing these events and metrics. By default, API Gateway store will be used for storing this data. Here are some details about different type of events.\n\nTransactional event: Provides a summary (request & response) of each runtime transaction in the system. It is generated when a Log Invocation policy is included for the API. For example, if an API has this policy attached to it, then for every invoke the system generates a transaction event. \n\nError event: Provides details of an error that occurred during an API invoke. This event is generated whenever there is an error in the system during a runtime service invocation. \n\nMonitoring event: This event is generated based on the parameters configured in the API monitoring policies such as Monitor Service Level Agreements, Throttling etc. Monitoring could be done based on various parameters such as Total Request Count, Total Success Count, Response Time, Availability. Monitoring can be done at the consumer application level too so that each consumer can be tracked individually. \n \nPolicy violation event: Provides a summary of the policy violations that occurred in the system. When a policy attached to an API is violated, the system generates the policy violation event.\n\nLifeCycle event: Provides a summary of the life cycle of the API Gateway instance. Whenever the instance is started or stopped, a life cycle notification is generated.\n\nThreat protection events: Provides a summary of the threat protection filter and rule violations. When a filter or rule is violated, the system generates the threat protection violation event. \n\nThe Audit logging of API Gateway provides audit information for different categories of system transactions, events, and occurrences of specific events (for example, login attempts) over a period of time. You can use audit logs to view a detailed record of various auditable events that occurred on the API Gateway objects, user login and logout operations, and identify the users who are responsible for the changes. You can configure which audit events to log for a specific destination based on your auditing requirements.You can configure API Gateway to log the auditable events for following destinations:\nAPI Gateway\nDatabase\nDigital Event Services (DES)\nElasticsearch. \n\nThe following auditable events can be configured to write to the API Gateway audit logs:\n Access profile management events: Creation, modification, and deletion of an Access profile object. \n Alias management events: Creation, modification, and deletion of an Alias object. \n Analytics management events: Archiving, purging, and restoring of analytics data in the database. \n API management events: Creation, modification, deletion, activation and deactivation of an API object. \n Application management events: Creation, modification, and deletion of an Application object. \n Approval management events: Approval and rejection of a request to create, register, and modify an application. Approval and rejection of a request to subscribe a package in API Portal.\n Group management events: Creation, modification, and deletion of a Group object.\n Package management events: Creation, modification, and deletion of a Package object.\n Plan management events: Creation, modification, and deletion of a Plan object.\n Policy management: Creation, modification, and deletion of a global Policy object.Creation, modification, and deletion of an API level Policy object.Activation and deactivation of a global policy.\n Activation and deactivation of an API level policy.\n Promotion management events: Creation, modification, and deletion of a Stage object.Promotion of an API stage.Rollback operation of an API stage.\n User management events: A user logs in or fails to log in to API Gateway.A user logs out of API Gateway.Creation, modification, and deletion of a User object.\n\nManaging the Events/Audit logs/Metrics Data\n\nPurge: The process of systematically deleting unwanted data from the database is called purging. You can purge events, audit logs and metrics from the API Gateway store by setting the required date or duration in the API Gateway. You must have the required functional privileges to purge the API analytics data.\n\nArchive: Moving data that is no longer actively used for long-term retention so that it can be used at a later time is called archiving. You can archive events, audit logs and metrics by setting the required date or duration per tenant in the API Gateway. You must have the required functional privileges to archive events, audit logs and metrics.\n\nRestore: You can restore the archived data as required. \n\n\n2.Transaction based license: \n\nAPI Gateway supports core as well as transaction-based licensing model. When API Gateway uses a transaction-based licensing model, then each service invocation is considered as a transaction and API Gateway keeps a track of these transactions. API Gateway transactions for the current month are compared with the maximum number of transactions allowed in a month.When the usage breaches, notification will be generated for the current month. Apart from this if the user wants to generate notifications before usage breach itself when usage reaches to some x% like 70% or 80% then the user has to add notification criteria at 70% or 80%. By default API Gateway will have two default notification criteria's at 90%, 100%.\n\n\n3.Destination configuration: \n\nAPI Gateway can publish events and performance metrics data to the configured destinations. You must have the API Gateway's manage destination configurations functional privilege assigned to configure the following destinations to which the event types and performance metrics data is published:\nAPI Gateway\nAPI Portal\nTransaction logger\nCentraSite\nDatabase\nDigital Events\nElasticsearch\nEmail\nSNMP \n\n\n4.Default API fault configuration: \n\n API provider can configure a global error handling behaviour. In case of the native service error, the provider may choose to either forward the native error as is or can choose to modify the error response. In case the provider chooses to provide a custom error response, he/she can use the default error template containing standard aliases. These alias values will be replaced with the request specific information before the response is sent to the client. The standard aliases like the error message, service, operation, date/time, IP address, user and consumer application can be used in the template. The custom error response configuration is applicable for the errors thrown by API Gateway also.\n\n\n5.Custom assertions: \n\nCustom assertions allow the API providers to extend and provide additional security policies that are not available by default in API Gateway. Kindly refer to Policy swagger documentation for information about these configurations. \n\n\n6.SAML Issuer: \n\nIf a native API is enforced with the SAML policy, API Gateway uses this configuration to communicate to STS (Security Token Service) to retrieve the SAMl token. This is internally stored as an alias, kindly refer Alias Swagger documentation for information about these configurations.\n\n\n7.OAuth 2.0: \n\nAPI Gateway allows the API provider to configure any 3rd party OAuth2 Authorization server. In this case API Gateway acts as Resource server. Use can refer to Alias Swagger documentation for information about configuring external Authorization server.\n\n\n8.OpenID Provider: \n\nAPI Gateway allows the API provider to configure any OpenID provider. In this case API Gateway acts as Relying Party. You can refer to Alias Swagger documentation for information about configuring OpenID provider.\n\n9. Approval \n\nAPI Gateway allows you to configure approvals for: \n\t- Create application: To enforce approvals for creating an application in API Gateway.\n\t- Register application: To enforce approvals for associating an application with APIs.\n\t- Update application: To enforce approvals for modifying an application.\n\t- Subscribe package: To enforce approvals in API Gateway to enable API Portal consumers for subscribing a package to a plan in API Portal.\n\nIn API Gateway, you can create an application and associate (register) the application created with APIs. If you have the API Gateway's manage general administration configurations functional privilege assigned, you can configure approvals for creating or registering an application. If you have configured approvers, and if a user wants to create and register an application in API Gateway, then the application is created and registered with an API only if any one approver from the approvers group approves the create application and the register application requests. Similarly, you can configure approvals for updating an application or subscribing a package.\n\n10. Load Balancer \n\nIf you cluster API Gateway instances, you must configure API Gateway with the load balancer URL. This is the URL to which the consumer applications sends the requests to. Also this URL will be used to generate the API endpoint during activation.\n\n11. API Portal Configuration Management \n\n This API is used for managing API Portal configurations in API Gateway.\n\nThe API Provider can define APIs in API Gateway, secure and monitor them and then may choose to publish these APIs to the API Portal. API Portal enables an organization to securely expose APIs to external developers, partners, and other consumers for use in building their own applications.\n\nAny user with 'Manage Destinations' functional privilege can configure API Portal connection in API Gateway. APIs/Packages can be published from API Gateway to API Portal if and only if the API Portal configuration changes are done successfully.\n\n12. URL Alias Management\n\nAPI Gateway provides support for managing URL Aliases. A URL Alias is used to substitute a specific path of a HTTP/HTTPS endpoint of an API in API Gateway. URL Aliases allow for a level of indirection and helps to mask or shorten the API endpoint so that the actual endpoint can be subject to changes without having to affect the end consumers of the API. You need to have the Manage general administration configurations functional privilege inorder to manage URL Aliases in API Gateway.\n\n13. Outbound Proxy Management\n\nDefine proxy server aliases in API Gateway to route outbound requests from API Gateway through proxy servers. This is useful if the API Gateway is behind a firewall and outbound requests are sent to remote servers located outside the firewall. Outbound proxies are supported for the following types of protocols: HTTP, HTTPS, FTP and SOCKS. You need to have the Manage general administration configurations functional privilege inorder to manage outbound proxies in API Gateway.\n\n14. Kerberos Settings\n\nAPI Gateway provides support for Kerberos authentication for inbound and outbound service requests. Kerberos is an authentication protocol that uses symmetric encryption and a trusted third party system to validate the identity of clients. You need to have the Manage security configurations functional privilege inorder to configure Kerberos settings in API Gateway.\n\n15. Keystore Management\n\nAPI Gateway uses keystores to store SSL certificates and private keys. A keystore file contains one or more pairs of a private key and signed certificate for its corresponding public key. The keystore should be strongly protected with a password. You need to have the Manage security configurations functional privilege inorder to manage keystores in API Gateway.\n\n16. Truststore Management\n\nAPI Gateway uses truststores to manage the public keys for the signing Certificate Authoritites (CAs) for clients and partners. These are identified using aliases during any form of SSL authentication performed by API Gateway. You need to have the Manage security configurations functional privilege inorder to manage truststores in API Gateway.\n\n17. Configure Whitelisted IPs\n\nServer side request forgery is a vulnerability which allows an attacker to force a vulnerable application to issue malicious requests to third-party servers and or internal resources.The remote API importing functionallity allows specifying an URL which contains the API specification, this URL is not properly sanitized and allows to issue arbitrary requests to any service, including ones inside the internal network or on the local host. An attacker can exploit this issue to attack other internal and external services.\n\nTo solve this SSRF issue, API Gateway implemented a filter for URL which would disallow users to use IPs or hosts that resolve to internal network IP ranges and this filter included the following IP ranges: \n127.0.0.1 \n10.0.0.0/8 \n172.16.0.0/12 \n192.168.0.0/16\n\nTo provide a way to customers to allow API creation from internal IP addresses/hostnames, this rest resource introduces a configuration with whitelisting of IP addresses we have to pull resources from.\n\n18.Master Password Management\n\nAPI Gateway handles many secure strings as part of its normal operations. It protects these secure keys by encrypting them using Password-Based Encryption (PBE) technology, also known as PKCS5. This encryption method requires the use of an encryption key or master password that you specify.API Gateway provides a default master password and this can be changed at any point of time.\n\nFor greater security there is an expiration interval associated with the master password which is the duration after which the master password would expire. Customers can change this master password periodically. In case if the master password is lost, the same can be reset to the default value and it can be changed later to a secure value.\n\n19.Log Aggregation: \n\nAPI Gateway collects and stores logs from different sources such as API Gateway server logs, API Gateway UI logs, Internal Data Store logs, dashboard logs and platform logs. Each type of logged data comes from different components. API Gateway provides an easy way of configuring log settings to collate the logs from different sources at a single place in a common format. You also have an option to download these logs as an archive. This provides an easy access to logs collected from different sources when you have to look into the logs to troubleshoot any issues, such as error or performance problems.\n\n\n20.Service Registry: \n\nA service registry is essentially a catalog of services. API Gateway allows Administrators to configure service registries. API Gateway supports ServiceConsul and Eureka service registries. Both client side discovery and server side discovery of Service Registry are supported by API Gateway. You can refer to Alias Swagger documentation for information about configuring Service Registries. Also refer to API Gateway Service Management Swagger documentation for information about how to register/deregister API Gateway APIs to/from Service Registries..\n\n\n21.Clustering : \n\nA Clustering is an advanced feature that substantially extends the reliability, availability, and scalability of APIGateway. Clustering accomplishes this by providing the infrastructure and tools to use multiple APIGateway as if they were a single virtual server and to deliver applications that leverage that architecture.\n\n\n22.JMS Configuration Management\r\n\r\nAPI Gateway provides support for JMS and message protocols like AMQP, any REST or SOAP API can be exposed over JMS/AMQP and vice-versa. \r\nBy exposing an API over JMS we can achieve Interoperability in asychronous way across the Java platforms. By exposing an API over AMQP we can achieve Interoperability in asychronous way across multiple languages and platforms.\r\nAPI Gateway uses JMS configurations like JNDI, JMS Connection, Web service Provider/Consumer aliases, JMS Trigger to expose the APIs over JMS/AMQP.\r\n\r\nTo Expose the APIs over JMS/AMQP, \r\n a) First, we need to create the JNDI \r\n b) Create a JMS connection using the above created JNDI\r\n\t -We can use this JMS connection alias to expose our REST APIs over JMS/AMQP and vice-versa\r\n In case of SOAP \t\t\r\n c) Create Web service Provider endpoint to expose our SOAP APIs over JMS/AMQP\r\n d) Create Web service Consumer endpoint to expose our existing Message queue/topic over SOAP\t \r\n\t \r\nYou need to have the Manage General Administration functional privilege inorder to configure JMS in API Gateway.\n\n\n23.AWS configuration: \n\nThis holds AWS instance configuration details. This can be used in any custom policies for invoking a lambda service running in any AWS cloud instance.\n\n\n24.Rule Management (REST resource '/rule')\r\n\r\nRules are defined by specifying one or more asset based conditions, and by configuring the rule output if the conditions are met.\r\nThis API can be used to create, retrieve, update or delete a rule.\r\nWhen Teamwork feature is enabled, Global Team Assignment rules can be defined to automate the team assignment for the assets.\n\n\n25.Proxy Bypass (REST resource '/is/proxyBypass')\r\n\r\nIf you are using a proxy server for outbound HTTP, HTTPS requests, you can optionally route selected requests directly to their targets, bypassing the proxy. To do this, the User who has manage general administration priviliege can define a list of domains to which you want APIGateway Server to issue requests directly..\n\n\n26.Integration servers: \n\nThis holds webMethods Integration Server accounts details. This configuration will be used to create connection to the integration server when publishing APIs to an integration server for implementing the API. You can refer to API Gateway Alias Swagger documentation for information about configuring Integration Server accounts. Also refer to API Gateway Service Management Swagger documentation for information about how to publish API Gateway APIs to/from Integration servers..", - "version" : "10.7", + "description" : "API Gateway Administration Service provides interface for you to administer various functions of the API Gateway. The user needs to have different functional privileges to administer different functions. For example, in order to manage runtime transactions data of the API Gateway, the user needs to have 'Manage purge and restore runtime events' privilege. By default, the users who are part of API-Gateway-Administrators group will have all privileges. \n\nFollowing Administration functions are exposed using this API. \n\n1. Manage data- Archive, Purge and Restore API Gateway runtime events, audit logs & metrics data. \n\nThis function lets the users manage the API Gateway runtime events, audit logs & metrics data. \n\nAPI Gateway generates different types of events in the runtime depending on the state of the API invocation. For example, an error event is generated when API Gateway encounters an error while processing the API request or the response. API Metrics is an aggregated data computed from the different events that happen in the system. These metrics provides information about the key performance indicators of an API like its \"Availability\", \"Fault Count\" etc which are useful for monitoring & governing the service performance and service level agreements. The API providers has a variety of options to choose from for storing these events and metrics. By default, API Gateway store will be used for storing this data. Here are some details about different type of events.\n\nTransactional event: Provides a summary (request & response) of each runtime transaction in the system. It is generated when a Log Invocation policy is included for the API. For example, if an API has this policy attached to it, then for every invoke the system generates a transaction event. \n\nError event: Provides details of an error that occurred during an API invoke. This event is generated whenever there is an error in the system during a runtime service invocation. \n\nMonitoring event: This event is generated based on the parameters configured in the API monitoring policies such as Monitor Service Level Agreements, Throttling etc. Monitoring could be done based on various parameters such as Total Request Count, Total Success Count, Response Time, Availability. Monitoring can be done at the consumer application level too so that each consumer can be tracked individually. \n \nPolicy violation event: Provides a summary of the policy violations that occurred in the system. When a policy attached to an API is violated, the system generates the policy violation event.\n\nLifeCycle event: Provides a summary of the life cycle of the API Gateway instance. Whenever the instance is started or stopped, a life cycle notification is generated.\n\nThreat protection events: Provides a summary of the threat protection filter and rule violations. When a filter or rule is violated, the system generates the threat protection violation event. \n\nThe Audit logging of API Gateway provides audit information for different categories of system transactions, events, and occurrences of specific events (for example, login attempts) over a period of time. You can use audit logs to view a detailed record of various auditable events that occurred on the API Gateway objects, user login and logout operations, and identify the users who are responsible for the changes. You can configure which audit events to log for a specific destination based on your auditing requirements.You can configure API Gateway to log the auditable events for following destinations:\nAPI Gateway\nDatabase\nDigital Event Services (DES)\nElasticsearch. \n\nThe following auditable events can be configured to write to the API Gateway audit logs:\n Access profile management events: Creation, modification, and deletion of an Access profile object. \n Alias management events: Creation, modification, and deletion of an Alias object. \n Analytics management events: Archiving, purging, and restoring of analytics data in the database. \n API management events: Creation, modification, deletion, activation and deactivation of an API object. \n Application management events: Creation, modification, and deletion of an Application object. \n Approval management events: Approval and rejection of a request to create, register, and modify an application. Approval and rejection of a request to subscribe a package in API Portal.\n Group management events: Creation, modification, and deletion of a Group object.\n Package management events: Creation, modification, and deletion of a Package object.\n Plan management events: Creation, modification, and deletion of a Plan object.\n Policy management: Creation, modification, and deletion of a global Policy object.Creation, modification, and deletion of an API level Policy object.Activation and deactivation of a global policy.\n Activation and deactivation of an API level policy.\n Promotion management events: Creation, modification, and deletion of a Stage object.Promotion of an API stage.Rollback operation of an API stage.\n User management events: A user logs in or fails to log in to API Gateway.A user logs out of API Gateway.Creation, modification, and deletion of a User object.\n\nManaging the Events/Audit logs/Metrics Data\n\nPurge: The process of systematically deleting unwanted data from the database is called purging. You can purge events, audit logs and metrics from the API Gateway store by setting the required date or duration in the API Gateway. You must have the required functional privileges to purge the API analytics data.\n\nArchive: Moving data that is no longer actively used for long-term retention so that it can be used at a later time is called archiving. You can archive events, audit logs and metrics by setting the required date or duration per tenant in the API Gateway. You must have the required functional privileges to archive events, audit logs and metrics.\n\nRestore: You can restore the archived data as required. \n\n\n2.Transaction based license: \n\nAPI Gateway supports core as well as transaction-based licensing model. When API Gateway uses a transaction-based licensing model, then each service invocation is considered as a transaction and API Gateway keeps a track of these transactions. API Gateway transactions for the current month are compared with the maximum number of transactions allowed in a month.When the usage breaches, notification will be generated for the current month. Apart from this if the user wants to generate notifications before usage breach itself when usage reaches to some x% like 70% or 80% then the user has to add notification criteria at 70% or 80%. By default API Gateway will have two default notification criteria's at 90%, 100%.\n\n\n3.Destination configuration: \n\nAPI Gateway can publish events and performance metrics data to the configured destinations. You must have the API Gateway's manage destination configurations functional privilege assigned to configure the following destinations to which the event types and performance metrics data is published:\nAPI Gateway\nAPI Portal\nTransaction logger\nCentraSite\nDatabase\nDigital Events\nElasticsearch\nEmail\nSNMP \n\n\n4.Default API fault configuration: \n\n API provider can configure a global error handling behaviour. In case of the native service error, the provider may choose to either forward the native error as is or can choose to modify the error response. In case the provider chooses to provide a custom error response, he/she can use the default error template containing standard aliases. These alias values will be replaced with the request specific information before the response is sent to the client. The standard aliases like the error message, service, operation, date/time, IP address, user and consumer application can be used in the template. The custom error response configuration is applicable for the errors thrown by API Gateway also.\n\n\n5.Custom assertions: \n\nCustom assertions allow the API providers to extend and provide additional security policies that are not available by default in API Gateway. Kindly refer to Policy swagger documentation for information about these configurations. \n\n\n6.SAML Issuer: \n\nIf a native API is enforced with the SAML policy, API Gateway uses this configuration to communicate to STS (Security Token Service) to retrieve the SAMl token. This is internally stored as an alias, kindly refer Alias Swagger documentation for information about these configurations.\n\n\n7.JWT/OAuth/OpenID: \n\nAPI Gateway allows Administrator to configure authorization servers for JWT/OAuth/OpenID. The authorization server can be local or 3rd party authorization server. Please refer to Alias Swagger documentation for information about configuring the local and external authorization servers.\n\n\n8.Clustering : \n\nClustering is an advanced feature that substantially extends the reliability, availability, and scalability of APIGateway. Clustering accomplishes this by providing the infrastructure and tools to use multiple APIGateway as if they were a single virtual server and to deliver applications that leverage that architecture.\n\n\n9. Approval \n\nAPI Gateway allows you to configure approvals for: \n\t- Create application: To enforce approvals for creating an application in API Gateway.\n\t- Register application: To enforce approvals for associating an application with APIs.\n\t- Update application: To enforce approvals for modifying an application.\n\t- Subscribe package: To enforce approvals in API Gateway to enable API Portal consumers for subscribing a package to a plan in API Portal.\n\nIn API Gateway, you can create an application and associate (register) the application created with APIs. If you have the API Gateway's manage general administration configurations functional privilege assigned, you can configure approvals for creating or registering an application. If you have configured approvers, and if a user wants to create and register an application in API Gateway, then the application is created and registered with an API only if any one approver from the approvers group approves the create application and the register application requests. Similarly, you can configure approvals for updating an application or subscribing a package.\n\n10. Load Balancer \n\nIf you cluster API Gateway instances, you must configure API Gateway with the load balancer URL. This is the URL to which the consumer applications sends the requests to. Also this URL will be used to generate the API endpoint during activation.\n\n11. API Portal Configuration Management \n\n This API is used for managing API Portal configurations in API Gateway.\n\nThe API Provider can define APIs in API Gateway, secure and monitor them and then may choose to publish these APIs to the API Portal. API Portal enables an organization to securely expose APIs to external developers, partners, and other consumers for use in building their own applications.\n\nAny user with 'Manage Destinations' functional privilege can configure API Portal connection in API Gateway. APIs/Packages can be published from API Gateway to API Portal if and only if the API Portal configuration changes are done successfully.\n\n12. URL Alias Management\n\nAPI Gateway provides support for managing URL Aliases. A URL Alias is used to substitute a specific path of a HTTP/HTTPS endpoint of an API in API Gateway. URL Aliases allow for a level of indirection and helps to mask or shorten the API endpoint so that the actual endpoint can be subject to changes without having to affect the end consumers of the API. You need to have the Manage general administration configurations functional privilege inorder to manage URL Aliases in API Gateway.\n\n13. Outbound Proxy Management\n\nDefine proxy server aliases in API Gateway to route outbound requests from API Gateway through proxy servers. This is useful if the API Gateway is behind a firewall and outbound requests are sent to remote servers located outside the firewall. Outbound proxies are supported for the following types of protocols: HTTP, HTTPS, FTP and SOCKS. You need to have the Manage general administration configurations functional privilege inorder to manage outbound proxies in API Gateway.\n\n14. Kerberos Settings\n\nAPI Gateway provides support for Kerberos authentication for inbound and outbound service requests. Kerberos is an authentication protocol that uses symmetric encryption and a trusted third party system to validate the identity of clients. You need to have the Manage security configurations functional privilege inorder to configure Kerberos settings in API Gateway.\n\n15. Keystore Management\n\nAPI Gateway uses keystores to store SSL certificates and private keys. A keystore file contains one or more pairs of a private key and signed certificate for its corresponding public key. The keystore should be strongly protected with a password. You need to have the Manage security configurations functional privilege inorder to manage keystores in API Gateway.\n\n16. Truststore Management\n\nAPI Gateway uses truststores to manage the public keys for the signing Certificate Authoritites (CAs) for clients and partners. These are identified using aliases during any form of SSL authentication performed by API Gateway. You need to have the Manage security configurations functional privilege inorder to manage truststores in API Gateway.\n\n17. Configure Whitelisted IPs\n\nServer side request forgery is a vulnerability which allows an attacker to force a vulnerable application to issue malicious requests to third-party servers and or internal resources.The remote API importing functionallity allows specifying an URL which contains the API specification, this URL is not properly sanitized and allows to issue arbitrary requests to any service, including ones inside the internal network or on the local host. An attacker can exploit this issue to attack other internal and external services.\n\nTo solve this SSRF issue, API Gateway implemented a filter for URL which would disallow users to use IPs or hosts that resolve to internal network IP ranges and this filter included the following IP ranges: \n127.0.0.1 \n10.0.0.0/8 \n172.16.0.0/12 \n192.168.0.0/16\n\nTo provide a way to customers to allow API creation from internal IP addresses/hostnames, this rest resource introduces a configuration with whitelisting of IP addresses we have to pull resources from.\n\n18.Master Password Management\n\nAPI Gateway handles many secure strings as part of its normal operations. It protects these secure keys by encrypting them using Password-Based Encryption (PBE) technology, also known as PKCS5. This encryption method requires the use of an encryption key or master password that you specify.API Gateway provides a default master password and this can be changed at any point of time.\n\nFor greater security there is an expiration interval associated with the master password which is the duration after which the master password would expire. Customers can change this master password periodically. In case if the master password is lost, the same can be reset to the default value and it can be changed later to a secure value.\n\n19.Log Aggregation: \n\nAPI Gateway collects and stores logs from different sources such as API Gateway server logs, API Gateway UI logs, Internal Data Store logs, dashboard logs and platform logs. Each type of logged data comes from different components. API Gateway provides an easy way of configuring log settings to collate the logs from different sources at a single place in a common format. You also have an option to download these logs as an archive. This provides an easy access to logs collected from different sources when you have to look into the logs to troubleshoot any issues, such as error or performance problems.\n\n\n20.Service Registry: \n\nA service registry is essentially a catalog of services. API Gateway allows Administrators to configure service registries. API Gateway supports ServiceConsul and Eureka service registries. Both client side discovery and server side discovery of Service Registry are supported by API Gateway. You can refer to Alias Swagger documentation for information about configuring Service Registries. Also refer to API Gateway Service Management Swagger documentation for information about how to register/deregister API Gateway APIs to/from Service Registries.\n\n\n21.JMS Configuration Management\r\n\r\nAPI Gateway provides support for JMS and message protocols like AMQP, any REST or SOAP API can be exposed over JMS/AMQP and vice-versa. \r\nBy exposing an API over JMS we can achieve Interoperability in asychronous way across the Java platforms. By exposing an API over AMQP we can achieve Interoperability in asychronous way across multiple languages and platforms.\r\nAPI Gateway uses JMS configurations like JNDI, JMS Connection, Web service Provider/Consumer aliases, JMS Trigger to expose the APIs over JMS/AMQP.\r\n\r\nTo Expose the APIs over JMS/AMQP, \r\n a) First, we need to create the JNDI \r\n b) Create a JMS connection using the above created JNDI\r\n\t -We can use this JMS connection alias to expose our REST APIs over JMS/AMQP and vice-versa\r\n In case of SOAP \t\t\r\n c) Create Web service Provider endpoint to expose our SOAP APIs over JMS/AMQP\r\n d) Create Web service Consumer endpoint to expose our existing Message queue/topic over SOAP\t \r\n\t \r\nYou need to have the Manage General Administration functional privilege inorder to configure JMS in API Gateway.", + "version" : "10.3", "title" : "API Gateway Administration Service" }, "host" : "localhost:5555", @@ -11,198 +11,132 @@ "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "paths" : { - "/is/webServiceEndpoints" : { + "/licenseNotifications" : { "get" : { - "description" : "The method retrieves list of all Webservice endpoints in API Gateway.", - "operationId" : "getAllWebserviceEndpoints", + "description" : "The GET method returns the latest notification issued for a transaction based license.", + "operationId" : "getCurrentMonthLatestNotification", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the list of Webservice endpoints is successfully retrieved.", + "description" : "This response indicates that the recent transaction based license alert notification has been returned successfully. The response body is the latest transaction based license alert notification.", "examples" : { - "application/json" : "{\r\n \"WebserviceEndpointAlias\": [\r\n {\r\n \"id\": \"c00222\",\r\n \"alias\": \"c00222\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n },\r\n {\r\n \"id\": \"c0022\",\r\n \"alias\": \"c0022\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n },\r\n {\r\n \"id\": \"AMQP_PROVIDER_ALIAS\",\r\n \"alias\": \"AMQP_PROVIDER_ALIAS\",\r\n \"description\": \"AMQP_PROVIDER_ALIAS\",\r\n \"aliasType\": \"PROVIDER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"\",\r\n \"keyAlias\": \"\",\r\n \"trustStoreAlias\": \"\",\r\n \"timestampPrecisionInMillis\": \"\",\r\n \"timestampTimeToLive\": \"\",\r\n \"timestampMaximumSkew\": \"\",\r\n \"jmsTriggerName\": \"wm.namespace.ws:wseTrigger_\",\r\n \"deliveryMode\": \"\",\r\n \"timeToLive\": 0,\r\n \"priority\": 0,\r\n \"replyToDestType\": \"\",\r\n \"includeConnFactoryName\": \"true\"\r\n },\r\n {\r\n \"id\": \"c0021272\",\r\n \"alias\": \"c0021272\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n },\r\n {\r\n \"id\": \"c002\",\r\n \"alias\": \"c002\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JNDI\",\r\n \"jndiProvAlias\": \"JNDI_AMQP\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n },\r\n {\r\n \"id\": \"c00214272\",\r\n \"alias\": \"c00214272\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JNDI\",\r\n \"jndiProvAlias\": \"JNDI_AMQP\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }\r\n ]\r\n}" + "application/json" : "{\r\n \"notification\": {\r\n \"user\": \"admin\",\r\n \"notificationType\": \"UI-notification\",\r\n \"currentUsagePercent\": \"265\",\r\n \"currentUsage\": \"53/20\",\r\n \"creationDate\": \"1502098979628\",\r\n \"notification\": \"Current month allocated quota has been reached\",\r\n \"notifyAt\": 100,\r\n \"monthAndYear\": \"8/2017\"\r\n },\r\n \"result\": \"success\"\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This response indicates that invalid credentials have been provided for the request." }, - "404" : { - "description" : "" + "500" : { + "description" : "This response indicates that the server has encountered an error while fetching the latest transaction based license alert notification" } }, "security" : [ { "Basic" : [ ] } ] - }, - "post" : { - "description" : "The method creates a Webservice endpoint in API Gateway. The API request body must contain the payload for the Webservice endpoint", - "operationId" : "createWebserviceEndpoint", - "consumes" : [ "application/json" ], + } + }, + "/urlaliases" : { + "get" : { + "description" : "Retrieves all URL Aliases or a URL Alias with a particular ID in API Gateway (if the query parameter alias is provided).", + "operationId" : "getURLALias", "produces" : [ "application/json" ], "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/WebserviceEndpointAlias" - }, - "x-examples" : { - "application/json" : "{\r\n \r\n \"alias\": \"c00222\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }" - } + "name" : "alias", + "in" : "query", + "description" : "The name of the URL alias to be retrieved. If this query parameter is provided, then it retrieves the URL Aliases identified by the given alias.", + "required" : false, + "type" : "string", + "x-example" : "SampleAlias" } ], "responses" : { - "201" : { - "description" : "This status code indicates that the Webservice endpoint has been successfully created in API Gateway, and the newly created Webservice endpoint is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"WebserviceEndpointAlias\": {\r\n \"id\": \"c001\",\r\n \"alias\": \"c001\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }\r\n}" - }, + "200" : { + "description" : "This status code indicates that the fetching of the requested URL alias(es) from API Gateway have been successful.", "schema" : { - "$ref" : "#/definitions/WebserviceEndpointAlias" + "$ref" : "#/definitions/URLAliasesGetResponse" } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, - "400" : { - "description" : "This status code indicates that the Webservice endpoint with the given name already exists in API Gateway or the request body is not correct.", - "examples" : { - "application/json" : "{}" - } + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while retrieving the URL Alias from API Gateway." } }, "security" : [ { "Basic" : [ ] } ] }, - "put" : { - "description" : "This REST service is used to update the Webservice endpoint", - "operationId" : "updateWebserviceEndpoint", + "post" : { + "description" : "Creates a new URL Alias in API Gateway.", + "operationId" : "createURLALias", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "", + "description" : "The request body for creating a new URL Alias in API Gateway.", "required" : true, "schema" : { - "$ref" : "#/definitions/WebserviceEndpointAlias" - }, - "x-examples" : { - "application/json" : "{\r\n \"id\": \"c001\",\r\n \"alias\": \"c001\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }" + "$ref" : "#/definitions/URLAliasSettings" } } ], "responses" : { "200" : { - "description" : "This status code indicates that API Gateway has successfully updated the specified Webservice endpoint and the updated Webservice endpoint details can be found in the response body", - "examples" : { - "application/json" : "{\r\n \"WebserviceEndpointAlias\": {\r\n \"id\": \"c001\",\r\n \"alias\": \"c001\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }\r\n}" - }, + "description" : "This status code indicates that the URL alias has been successfully created in API Gateway.", "schema" : { - "$ref" : "#/definitions/WebserviceEndpointAlias" + "$ref" : "#/definitions/URLAliasSettings" } }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, "400" : { - "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", - "examples" : { - "application/json" : "" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/is/webServiceEndpoints/{webserviceEndpointId}" : { - "get" : { - "description" : "The method retrieves the specified Webservice endpoint in API Gateway.", - "operationId" : "getWebserviceEndpoint", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "webserviceEndpointId", - "in" : "path", - "description" : "This path parameter is used to specify the Webservice endpoint id which Webservice endpoint needs to be retrived.", - "required" : true, - "type" : "string", - "x-example" : "sampleEndpoint" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified Webservice endpoint is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"WebserviceEndpointAlias\": {\r\n \"id\": \"c001\",\r\n \"alias\": \"c001\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/WebserviceEndpointAlias" - } + "description" : "This status code indicates invalid request or bad input." }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, "404" : { - "description" : "This status code indicates that the Webservice endpoint id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Exception occured : The Webservice endpoint object with the given ID: Consumer123 couldn't found\"\r\n}" - } + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while persisting the URL Alias in the API Gateway." } }, "security" : [ { "Basic" : [ ] } ] }, - "delete" : { - "description" : "This delete request will delete the Webservice endpoint based on the Webservice endpoint id which is specified in path", - "operationId" : "deleteWebserviceEndpoint", + "put" : { + "description" : "Updates an existing URL Alias in API Gateway.", + "operationId" : "updateURLALias", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "webserviceEndpointId", - "in" : "path", - "description" : "This path parameter is used to specify the Webservice endpoint id for which Webservice endpoint needs to deleted.", + "in" : "body", + "name" : "body", + "description" : "The request body for updating an existing URL Alias in API Gateway.", "required" : true, - "type" : "string", - "x-example" : "sampleEndpoint" - } ], - "responses" : { - "200" : { - "description" : "" - }, - "401" : { - "description" : "This status code indicates either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to delete the assertion." - }, - "404" : { - "description" : "This status code indicates that the corresponding Webservice endpoint id does not exist", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" - } + "schema" : { + "$ref" : "#/definitions/URLAliasSettings" } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/is/kerberos" : { - "get" : { - "description" : "Retrieves the configured Kerberos settings from API Gateway.", - "operationId" : "getKerberosSetting", - "produces" : [ "application/json" ], - "parameters" : [ ], + } ], "responses" : { "200" : { - "description" : "This status code indicates that the kerberos setting has been successfully retrieved from API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"kerberosRealm\": \"krbRelam\",\r\n\t\"kerberosKDC\": \"krbDistCenter\",\r\n\t\"useSubjectCreds\": false,\r\n\t\"kerberosConfigContents\": \"\"\r\n}" - }, + "description" : "This status code indicates that the URL alias has been successfully updated in API Gateway.", "schema" : { - "$ref" : "#/definitions/KerberosSettings" + "$ref" : "#/definitions/URLAliasSettings" } }, "400" : { @@ -218,32 +152,27 @@ "description" : "This status code indicates that the requested HTTP method is not supported for the resource." }, "500" : { - "description" : "This status code indicates an error occurred while fetching the configured Kerberos settings from API Gateway." + "description" : "This status code indicates an error occurred while persisting the URL Alias in the API Gateway." } }, "security" : [ { "Basic" : [ ] } ] }, - "put" : { - "operationId" : "updateKerberos", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], + "delete" : { + "description" : "The method deletes an URL alias in API Gateway.", + "operationId" : "deleteURLAlias", "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "The request payload for Kerberos settings in API Gateway.", + "name" : "alias", + "in" : "query", + "description" : "The name of the URL alias to be deleted.", "required" : true, - "schema" : { - "$ref" : "#/definitions/KerberosSettings" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"kerberosRealm\": \"krbRelam\",\r\n\t\"kerberosKDC\": \"krbDistCenter\",\r\n\t\"useSubjectCreds\": false,\r\n\t\"kerberosConfigContents\": \"\"\r\n}" - } + "type" : "string", + "x-example" : "SampleAlias" } ], "responses" : { "200" : { - "description" : "This status code indicates that the configured Kerberos settings have been successfully persisted in API Gateway." + "description" : "This status code indicates that the URL alias has been successfully deleted in API Gateway." }, "400" : { "description" : "This status code indicates invalid request or bad input." @@ -258,7 +187,7 @@ "description" : "This status code indicates that the requested HTTP method is not supported for the resource." }, "500" : { - "description" : "This status code indicates an error occurred while persisting the Kerberos settings in API Gateway." + "description" : "This status code indicates an error occurred while persisting the URL Alias in the API Gateway." } }, "security" : [ { @@ -266,22 +195,39 @@ } ] } }, - "/is/jmsConnections" : { + "/is/keystore" : { "get" : { - "description" : "The method retrieves list of all the JMS connections in API Gateway.", - "operationId" : "getAllJMSConnections", - "consumes" : [ "application/json" ], + "description" : "The method gets all keystores available in API Gateway.", + "operationId" : "getKeystores", "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the list of JMS connections is successfully retrieved.", + "description" : "This status code indicates that all keystores have been successfully fetched from API Gateway.", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/KeyStore" + } + }, "examples" : { - "application/json" : "{\r\n \"jmsList\": [\r\n {\r\n \"id\": \"JMSConn1\",\r\n \"aliasName\": \"JMSConn1\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n },\r\n {\r\n \"id\": \"JMSConn 002\",\r\n \"aliasName\": \"JMSConn 002\",\r\n \"enabled\": \"false\",\r\n \"description\": \"sailesh2\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"1000\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }\r\n ]\r\n}" + "application/json" : "{\r\n\t\"keystores\": [{\r\n\t\t\"keyStoreName\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyStoreDescription\": \"Default keystore alias for Integration Server.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.DEFAULT_IS_KEYSTORE\",\r\n\t\t\"pkAliasesList\": \"ssos\",\r\n\t\t\"pkPasswordsList\": \"wm.security.keystore.DEFAULT_IS_KEYSTORE.ssos\",\r\n\t\t\"nullPKpasswds\": \"false\",\r\n\t\t\"bitarray\": \"1\",\r\n\t\t\"isWarning\": false,\r\n\t\t\"isLoaded\": true,\r\n\t\t\"message\": null,\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAABAAAAAQAEc3NvcwAAAU3jFrE/AAAFAzCCBP8wDgYKKwYBBAEqAhEBAQUABIIE6/2CimpqOXAELQb47VWbZx5vQionU7882vDKQywXT2726dYXQK/YBtK3ufezdzTg82EEWyqw75YuqMcaa5zS8FiGEovvf2DsdCcHWkAso24Ya1l56j+FgF5TsaOrFcKu3HjuyzhqgDiD/U7NfIcFud4kaBxNI23/ouvB7O7+JOww8xzE2pyxtvGyyvzqMDHFE8+h0X+dSgVVCioL794mP7gj2ujg2EKS9lI1KhFjrZfOn6kLnDAsd1QUfAdJxrooLXPP97auAApX2C5aD+lIdS+yPs0eC7h0R3QBYBiPuCEBPmna0C2iZtukqmCNH/W0VPbdIswz0KcCATFH8LuC3Mg3IbTqdXFj4bzUPACqutmyObyGwFKEzNdicTV2f6UJDBfUnl7ip1f4vb/a18PM+FuKsHigW6+PHWAo4hc85ntFjXoQBKgSpeneuiRIQbvmcWlp68FVuebJjMsmYKsvhIfCTUWYmf3iS6sQUILD3IKvbZJqFIZ8iwdiHljW7wN8Cbu1Wrv8vj1pV38I8C1bmsUv7mCwEmOtAcCfBoduxG+iy/LsgQW4vCj3gCm98Fv/AKD7pe+IhVkVEY8m37W6wNgdDgDKHg9txgrckBY1gOEm4Z1bhlBFFLkfJBUN1hdQu425HK9EgOO0EsjDTi1jqUPuCIZ+1XqlN7W/5pmD9NH7Oo2pji9rFoPMBibs6h5dWGkjxGft3aGBkCuhPOSHbgJbSM/yNowVMlj9PNutJvNiqkVBT9aw1f8ANN7r1+X4JusVZAshesN6R6K3v/UlgOxIB9C41M4P57LCq\",\r\n\t\t\"uploadFileName\": \"keystore.jks\"\r\n\t},\r\n\t{\r\n\t\t\"keyStoreName\": \"SampleCustomKeystore\",\r\n\t\t\"keyStoreDescription\": \"Sample description for the keystore.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.SampleCustomKeystore\",\r\n\t\t\"pkAliasesList\": \"alias1.example.com,alias2.example.com,alias3.example.com\",\r\n\t\t\"pkPasswordsList\": \"wm.security.keystore.SampleCustomKeystore.alias1.example.com, ,wm.security.keystore.SampleCustomKeystore.alias3.example.com\",\r\n\t\t\"nullPKpasswds\": \"false,true,false\",\r\n\t\t\"bitarray\": \"1,1,1\",\r\n\t\t\"isWarning\": true,\r\n\t\t\"isLoaded\": true,\r\n\t\t\"message\": \"Keystore alias 'SampleCustomKeystore' saved successfully.\",\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAAJAAAAAgAKZGFlaW5tcmgzMQAAAV2xXQI0AAVYLjUwOQAAA6kwggOlMIICjaADAgECAgRtzQjDMA0GCSqGSIb3DQEBBAUAMIGCMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRQwEgYDVQQKEwtTb2Z0d2FyZSBBRzEXMBUGA1UECxMOU29mdHdhcmUgQUcgQ0ExHjAcBgNVBAMTFWRhZWlubXJoMzEuZXVyLmFkLnNhZzAeFw0xNzA3MjzdGFkdDEUMBIGA1UEChMLU29mdHdhcmUgQUcxFzAVBgNVBAsTDlNvZnR3YXJlIEFHIENBMRwwGgYDVQQDExNtY2RzYW4wMi5ldXIuYWQuc2FnMB4XDTE3MDcwNDExNDkwOFoXDTI3MDcwMjExNDkwOFowgYAxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdHZXJtYW55MRIwEAYDVQQHEwlEYXJtc3RhZHQxFDASBgNVBAoTC1NvZnR3YXJlIEFHMRcwFQYDVQQLEw5Tb2Z0d2FyZSBBRyBDVR0OBBYEFBTbx0ge90nA8/f5nj0Q3vvDHKfQMA0GCSqGSIb3DQEBBAUAA4IBAQCSmYycBUW30RT6v5dUL7OuWF1uOnTqycEJTXTs0NXsW/bpuwI2sUX/rZrivvOlWejy4hIwtjWfVIAhhE1TOeSV6CNr9MnvMgs0u9jUJ8un8dKPujmBfxPI07kzgshkMzHk0L/hacprYHkYKASOG0pjvPNXMaMULIuOJ/bo4sAUSqg6gnIhR/0K/9HK5Q6wsYKEmCefT4AbCaqo6ns74f0r7n459hh4Ur0hmWy3aEdUZ6NXJU6RngoXo2JFdjV711nmK3+vjzQfmCc+SCIe3M9gynWDt1kTamUweQH+OVBTPlEhBzUh+b0qQznvSvxRQYJd/veFAg4xbU4iTXV5O5Zi0aX/9Us0at03ku9iQ7iWupy88+w=\",\r\n\t\t\"uploadFileName\": \"keystore_file.jks\"\r\n\t}]\r\n}" } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while retrieving the available keystores from API Gateway." } }, "security" : [ { @@ -289,147 +235,305 @@ } ] }, "post" : { - "description" : "The method creates a JMS connection in API Gateway. The API request body must contain the payload for the JMS connection", - "operationId" : "createJMSConnection", - "consumes" : [ "application/json" ], + "description" : "Creates a keystore in API Gateway.", + "operationId" : "createKeystore", + "consumes" : [ "multipart/form-data" ], "produces" : [ "application/json" ], "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", + "name" : "keyStoreName", + "in" : "formData", + "description" : "The name of the keystore. It cannot contain spaces or special characters. The name of the key store must be unique across all the keystores created in API Gateway.", "required" : true, - "schema" : { - "$ref" : "#/definitions/JMSConnectionAlias" - }, - "x-examples" : { - "application/json" : "{\"aliasName\":\"JMSConn1\",\"enabled\":\"false\",\"description\":\"adasd\",\"transactionType\":\"0\",\"clientID\":\"clientID\",\"user\":\"user\",\"password\":\"pwd\",\"associationType\":\"0\",\"jndi_jndiAliasName\":\"JNDI_AMQP\",\"jndi_connectionFactoryLookupName\":\"qpidConnectionFactory\",\"jndi_automaticallyCreateUMAdminObjects\":\"false\",\"jndi_enableFollowTheMaster\":\"true\",\"jndi_connectionFactoryUpdateType\":\"NONE\",\"jndi_connectionFactoryPollingInterval\":\"0\",\"classLoader\":\"INTEGRATION_SERVER\",\"csqSize\":\"-1\",\"csqDrainInOrder\":\"true\",\"optTempQueueCreate\":\"true\",\"allowReplyToConsumer\":\"false\",\"manageDestinations\":\"true\",\"allowNewConnectionPerTrigger\":\"true\",\"producerCachingMode\":\"0\",\"producerSessionPoolSize\":\"0\",\"producerSessionPoolMinSize\":\"0\",\"cacheProducersPoolMinSize\":\"0\",\"cacheProducersPoolSize\":\"0\",\"poolTimeout\":\"6000\",\"cacheProducersQueueList\":\"\",\"producerMaxRetryAttempts\":\"0\",\"producerRetryInterval\":\"1000\",\"um_loggingOutput\":\"0\",\"um_producerMessageTracking\":\"false\",\"um_producerIncludedStrings\":\"1000\",\"um_consumerMessageTracking\":\"false\",\"um_consumerIncludedStrings\":\"1000\"}\r\n\r\n" - } + "type" : "string", + "x-example" : "SampleCustomKeystore" + }, { + "name" : "keyStoreDescription", + "in" : "formData", + "description" : "The description for the keystore.", + "required" : false, + "type" : "string", + "x-example" : "Sample description for the keystore." + }, { + "name" : "keyStoreType", + "in" : "formData", + "description" : "The certificate file format of the keystore.", + "required" : true, + "type" : "string", + "default" : "JKS", + "x-example" : "JKS", + "enum" : [ "JKS", "PKCS12" ] + }, { + "name" : "keyStoreProvider", + "in" : "formData", + "description" : "The provider that is used for the keystore type. The default is SUN for JKS type and SunJSSE for PKCS12 type.", + "required" : true, + "type" : "string", + "default" : "SUN", + "x-example" : "SUN", + "enum" : [ "SUN", "SunJSSE" ] + }, { + "name" : "keyStorePassword", + "in" : "formData", + "description" : "The keystore password that is defined at the time of keystore creation using a keystore utility.", + "required" : true, + "type" : "string", + "x-example" : "keystore_password" + }, { + "name" : "uploadFileName", + "in" : "formData", + "description" : "The name of the keystore file that will be used to save the keystore internally in API Gateway.", + "required" : true, + "type" : "string", + "x-example" : "keystore_file.jks" + }, { + "name" : "fileContent", + "in" : "formData", + "description" : "The contents of the truststore file.", + "required" : true, + "type" : "file" + }, { + "name" : "pkAliasesList", + "in" : "formData", + "description" : "Comma separated list of alias names in the uploaded keystore file.", + "required" : false, + "type" : "string", + "x-example" : "alias1.example.com,alias2.example.com,alias3.example.com" + }, { + "name" : "pkPasswordsList", + "in" : "formData", + "description" : "Comma separated list of passwords in the same order as the aliases specified in pkAliasesList. If a particular key alias does not have a password, it is denoted by space.", + "required" : false, + "type" : "string", + "x-example" : "alias1_password, ,alias3_password" + }, { + "name" : "nullPKpasswds", + "in" : "formData", + "description" : "Comma separated list of boolean values (true/false) indicating whether the particular alias has a password or not in the same order as the aliases specified in pkAliasesList. For each key alias, true indicates that the key alias does not have a password and false indicates that it does have a password.", + "required" : false, + "type" : "string", + "x-example" : "false,true,false" } ], "responses" : { - "201" : { - "description" : "This status code indicates that the JMS connection has been successfully created in API Gateway, and the newly created JMS connection is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"jms\": {\r\n \"id\": \"JMSConn11\",\r\n \"aliasName\": \"JMSConn11\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }\r\n}" - }, + "200" : { + "description" : "This status code indicates that the keystore has been successfully persisted in API Gateway.", "schema" : { - "$ref" : "#/definitions/JMSConnectionAlias" + "$ref" : "#/definitions/KeyStore" + }, + "examples" : { + "application/json" : "{\r\n\t\"keyStoreName\": \"SampleCustomKeystore\",\r\n\t\"keyStoreDescription\": \"Sample description for the keystore.\",\r\n\t\"keyStoreType\": \"JKS\",\r\n\t\"keyStoreProvider\": \"SUN\",\r\n\t\"keyStorePassword\": \"wm.security.keystore.SampleCustomKeystore\",\r\n\t\"pkAliasesList\": \"alias1.example.com,alias2.example.com,alias3.example.com\",\r\n\t\"pkPasswordsList\": \" , , \",\r\n\t\"nullPKpasswds\": \"false,false,false\",\r\n\t\"bitarray\": \"0,0,0\",\r\n\t\"isWarning\": true,\r\n\t\"isLoaded\": true,\r\n\t\"message\": \"Keystore alias 'SampleCustomKeystore' saved successfully. Warning: before using the keystore, you must create a password for at least one of its key aliases. Please edit the keystore alias configuration and add one or more valid key alias passwords.\",\r\n\t\"fileContent\": \"/u3+7QAAAAIAAAAJAAAAAgAKZGFlaW5tcmgzMQAAAV2xXQI0AAVYLjUwOQAAA6kwggOlMIICjaADAgECAgRtzQjDMA0GCSqGSIb3DQEBBAUAMIGCMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRQwEgYDVQQKEwtTb2Z0d2FyZSBBRzEXMBUGA1UECxMOU29mdHdhcmUgQUcgQ0ExHjAcBgNVBAMTFWRhZWlubXJoMzEuZXVyLmFkLnNhZzAeFw0xNzA3RFMRAwDgYDVQQIEwdHZXJtYW55MRIwEAYDVQQHEwlEYXJtc3RhZHQxFDASBgNVBAoTC1NvZnR3YXJlIEFHMRcwFQYDVQQLEw5Tb2Z0d2FyZSBBRyBDQTEcMBoGA1UEAxMTbWNkc2FuMDIuZXVyLmFkLnNhZzCCAS6RngoXo2JFdjV711nmK3+vjzQfmCc+SCIe3M9gynWDt1kTamUweQH+OVBTPlEhBzUh+b0qQznvSvxRQYJd/veFAg4xbU4iTXV5O5Zi0aX/9Us0at03ku9iQ7iWupy88+w=\",\r\n\t\"uploadFileName\": \"keystore_file.jks\"\r\n}" } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, - "400" : { - "description" : "This status code indicates that the JMS connection with the given name already exists in API Gateway or the request body is not correct.", - "examples" : { - "application/json" : "{}" - } + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while persisting the keystore in API Gateway." } }, "security" : [ { "Basic" : [ ] } ] - }, - "put" : { - "description" : "This REST service is used to update the JMS connection", - "operationId" : "updateJMSConnection", - "consumes" : [ "application/json" ], + } + }, + "/is/keystore/{keyStoreName}" : { + "get" : { + "description" : "The method gets keystore matching the name in API Gateway.", + "operationId" : "getKeystore", "produces" : [ "application/json" ], "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", + "name" : "keyStoreName", + "in" : "path", + "description" : "Keystore name to identify the corresponding Keystore", "required" : true, - "schema" : { - "$ref" : "#/definitions/JMSConnectionAlias" - }, - "x-examples" : { - "application/json" : "{\r\n \"id\": \"JMSConn11\",\r\n \"aliasName\": \"JMSConn11\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }" - } + "type" : "string", + "x-example" : "DEFAULT_IS_KEYSTORE" } ], "responses" : { "200" : { - "description" : "This status code indicates that API Gateway has successfully updated the specified JMS connection and the updated JMS connection details can be found in the response body", - "examples" : { - "application/json" : "{\r\n \"jms\": {\r\n \"id\": \"JMSConn11\",\r\n \"aliasName\": \"JMSConn11\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }\r\n}" - }, + "description" : "This status code indicates that the requested keystore has been successfully fetched from API Gateway.", "schema" : { - "$ref" : "#/definitions/JMSConnectionAlias" + "type" : "array", + "items" : { + "$ref" : "#/definitions/KeyStore" + } + }, + "examples" : { + "application/json" : "{\r\n\t\"keystores\": [{\r\n\t\t\"keyStoreName\": \"SampleCustomKeystore\",\r\n\t\t\"keyStoreDescription\": \"Sample description for the keystore.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.SampleCustomKeystore\",\r\n\t\t\"pkAliasesList\": \"alias1.example.com,alias2.example.com,alias3.example.com\",\r\n\t\t\"pkPasswordsList\": \"wm.security.keystore.SampleCustomKeystore.alias1.example.com, ,wm.security.keystore.SampleCustomKeystore.alias3.example.com\",\r\n\t\t\"nullPKpasswds\": \"false,true,false\",\r\n\t\t\"bitarray\": \"1,1,1\",\r\n\t\t\"isWarning\": true,\r\n\t\t\"isLoaded\": true,\r\n\t\t\"message\": \"Keystore alias 'SampleCustomKeystore' saved successfully.\",\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAAJAAAAAgAKZGFlaW5tcmgzMQAAAV2xXQI0AAVYLjUwOQAAA6kwggOlMIICjaADAgECAgRtzQjDMA0GCSqGSIb3DQEBBAUAMIGCMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRQwEgYDVQQKEwtTb2Z0d2FyZSBBRzEXMBUGA1UECxMOU29mdHdhcmUgQUcgQ0ExHjAcBgNVBAMTFWRhZWlubXJoMzEuZXVyLmFkLnNhZzAeFw0xNzA3MjzdGFkdDEUMBIGA1UEChMLU29mdHdhcmUgQUcxFzAVBgNVBAsTDlNvZnR3YXJlIEFHIENBMRwwGgYDVQQDExNtY2RzYW4wMi5ldXIuYWQuc2FnMB4XDTE3MDcwNDExNDkwOFoXDTI3MDcwMjExNDkwOFowgYAxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdHZXJtYW55MRIwEAYDVQQHEwlEYXJtc3RhZHQxFDASBgNVBAoTC1NvZnR3YXJlIEFHMRcwFQYDVQQLEw5Tb2Z0d2FyZSBBRyBDVR0OBBYEFBTbx0ge90nA8/f5nj0Q3vvDHKfQMA0GCSqGSIb3DQEBBAUAA4IBAQCSmYycBUW30RT6v5dUL7OuWF1uOnTqycEJTXTs0NXsW/bpuwI2sUX/rZrivvOlWejy4hIwtjWfVIAhhE1TOeSV6CNr9MnvMgs0u9jUJ8un8dKPujmBfxPI07kzgshkMzHk0L/hacprYHkYKASOG0pjvPNXMaMULIuOJ/bo4sAUSqg6gnIhR/0K/9HK5Q6wsYKEmCefT4AbCaqo6ns74f0r7n459hh4Ur0hmWy3aEdUZ6NXJU6RngoXo2JFdjV711nmK3+vjzQfmCc+SCIe3M9gynWDt1kTamUweQH+OVBTPlEhBzUh+b0qQznvSvxRQYJd/veFAg4xbU4iTXV5O5Zi0aX/9Us0at03ku9iQ7iWupy88+w=\",\r\n\t\t\"uploadFileName\": \"keystore_file.jks\"\r\n\t}]\r\n}" } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, - "400" : { - "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", - "examples" : { - "application/json" : "" - } + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while retrieving the specified keystore from API Gateway." } }, "security" : [ { "Basic" : [ ] } ] - } - }, - "/is/jmsConnections/{jmsConnId}/enable" : { - "put" : { - "description" : "The method enables the specified JMS connections in API Gateway.", - "operationId" : "enableJMSConnection", - "consumes" : [ "application/json" ], + }, + "post" : { + "description" : "Updates an already existing keystore in API Gateway.", + "operationId" : "UpdateKeystoreAliases", + "consumes" : [ "multipart/form-data" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "jmsConnId", + "name" : "keyStoreName", "in" : "path", - "description" : "This path parameter is used to specify the JMS connection id which JMS connection needs to be enabled.", + "description" : "The name of the keystore. It cannot contain spaces or special characters. The name of the key store must be unique across all the keystores created in API Gateway.", "required" : true, "type" : "string", - "x-example" : "sampleJMSConn" + "x-example" : "SampleCustomKeystore" + }, { + "name" : "keyStoreDescription", + "in" : "formData", + "description" : "The description for the keystore.", + "required" : false, + "type" : "string", + "x-example" : "Sample description for the keystore." + }, { + "name" : "keyStoreType", + "in" : "formData", + "description" : "The certificate file format of the keystore.", + "required" : true, + "type" : "string", + "default" : "JKS", + "x-example" : "JKS", + "enum" : [ "JKS", "PKCS12" ] + }, { + "name" : "keyStoreProvider", + "in" : "formData", + "description" : "The provider that is used for the keystore type. The default is SUN for JKS type and SunJSSE for PKCS12 type.", + "required" : true, + "type" : "string", + "default" : "SUN", + "x-example" : "SUN", + "enum" : [ "SUN", "SunJSSE" ] + }, { + "name" : "keyStorePassword", + "in" : "formData", + "description" : "The keystore password that is defined at the time of keystore creation using a keystore utility.", + "required" : true, + "type" : "string", + "x-example" : "keystore_password" + }, { + "name" : "uploadFileName", + "in" : "formData", + "description" : "The name of the keystore file that will be used to save the keystore internally in API Gateway.", + "required" : true, + "type" : "string", + "x-example" : "keystore_file.jks" + }, { + "name" : "fileContent", + "in" : "formData", + "description" : "The contents of the keystore file.", + "required" : true, + "type" : "file" + }, { + "name" : "pkAliasesList", + "in" : "formData", + "description" : "Comma separated list of alias names in the uploaded keystore file.", + "required" : false, + "type" : "string", + "x-example" : "alias1.example.com,alias2.example.com,alias3.example.com" + }, { + "name" : "pkPasswordsList", + "in" : "formData", + "description" : "Comma separated list of passwords in the same order as the aliases specified in pkAliasesList. If a particular key alias does not have a password, it is denoted by space.", + "required" : false, + "type" : "string", + "x-example" : "alias1_password, ,alias3_password" + }, { + "name" : "nullPKpasswds", + "in" : "formData", + "description" : "Comma separated list of boolean values (true/false) indicating whether the particular alias has a password or not in the same order as the aliases specified in pkAliasesList. For each key alias, true indicates that the key alias does not have a password and false indicates that it does have a password.", + "required" : false, + "type" : "string", + "x-example" : "false,true,false" } ], "responses" : { "200" : { - "description" : "This status code indicates that the specified JMS connections is successfully enabled.", + "description" : "This status code indicates that the keystore has been successfully persisted in API Gateway.", + "schema" : { + "$ref" : "#/definitions/KeyStore" + }, "examples" : { - "application/json" : "{\r\n \"status\": \"JMS Connection Alias \\\"JMSConn11\\\" set to enabled.\",\r\n \"result\": true\r\n}" + "application/json" : "{\r\n\t\"keyStoreName\": \"SampleCustomKeystore\",\r\n\t\"keyStoreDescription\": \"Sample description for the keystore.\",\r\n\t\"keyStoreType\": \"JKS\",\r\n\t\"keyStoreProvider\": \"SUN\",\r\n\t\"keyStorePassword\": \"wm.security.keystore.SampleCustomKeystore\",\r\n\t\"pkAliasesList\": \"alias1.example.com,alias2.example.com,alias3.example.com\",\r\n\t\"pkPasswordsList\": \"wm.security.keystore.SampleCustomKeystore.alias1.example.com, ,wm.security.keystore.SampleCustomKeystore.alias3.example.com\",\r\n\t\"nullPKpasswds\": \"false,true,false\",\r\n\t\"bitarray\": \"1,1,1\",\r\n\t\"isWarning\": true,\r\n\t\"isLoaded\": true,\r\n\t\"message\": \"Keystore alias 'SampleCustomKeystore' saved successfully.\",\r\n\t\"fileContent\": \"/u3+7QAAAAIAAAAJAAAAAgAKZGFlaW5tcmgzMQAAAV2xXQI0AAVYLjUwOQAAA6kwggOlMIICjaADAgECAgRtzQjDMA0GCSqGSIb3DQEBBAUAMIGCMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRQwEgYDVQQKEwtTb2Z0d2FyZSBBRzEXMBUGA1UECxMOU29mdHdhcmUgQUcgQ0ExHjAcBgNVBAMTFWRhZWlubXJoMzEuZXVyLmFkLnNhZzAeFw0xNzA3MjzdGFkdDEUMBIGA1UEChMLU29mdHdhcmUgQUcxFzAVBgNVBAsTDlNvZnR3YXJlIEFHIENBMRwwGgYDVQQDExNtY2RzYW4wMi5ldXIuYWQuc2FnMB4XDTE3MDcwNDExNDkwOFoXDTI3MDcwMjExNDkwOFowgYAxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdHZXJtYW55MRIwEAYDVQQHEwlEYXJtc3RhZHQxFDASBgNVBAoTC1NvZnR3YXJlIEFHMRcwFQYDVQQLEw5Tb2Z0d2FyZSBBRyBDVR0OBBYEFBTbx0ge90nA8/f5nj0Q3vvDHKfQMA0GCSqGSIb3DQEBBAUAA4IBAQCSmYycBUW30RT6v5dUL7OuWF1uOnTqycEJTXTs0NXsW/bpuwI2sUX/rZrivvOlWejy4hIwtjWfVIAhhE1TOeSV6CNr9MnvMgs0u9jUJ8un8dKPujmBfxPI07kzgshkMzHk0L/hacprYHkYKASOG0pjvPNXMaMULIuOJ/bo4sAUSqg6gnIhR/0K/9HK5Q6wsYKEmCefT4AbCaqo6ns74f0r7n459hh4Ur0hmWy3aEdUZ6NXJU6RngoXo2JFdjV711nmK3+vjzQfmCc+SCIe3M9gynWDt1kTamUweQH+OVBTPlEhBzUh+b0qQznvSvxRQYJd/veFAg4xbU4iTXV5O5Zi0aX/9Us0at03ku9iQ7iWupy88+w=\",\r\n\t\"uploadFileName\": \"keystore_file.jks\"\r\n}" } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, "500" : { - "description" : "" + "description" : "This status code indicates an error occurred while persisting the keystore in API Gateway." } }, "security" : [ { "Basic" : [ ] } ] - } - }, - "/is/jmsConnections/{jmsConnId}/disable" : { - "put" : { - "description" : "The method disables the specified JMS connections in API Gateway.", - "operationId" : "disableJMSConnection", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], + }, + "delete" : { + "description" : "Deletes keystore matching the specified name in API Gateway.", + "operationId" : "deleteKeystore", "parameters" : [ { - "name" : "jmsConnId", + "name" : "keyStoreName", "in" : "path", - "description" : "This path parameter is used to specify the JMS connection id which JMS connection needs to be disabled.", + "description" : "Keystore name to identify the corresponding Keystore", "required" : true, "type" : "string", - "x-example" : "sampleJMSConn" + "x-example" : "DEFAULT_IS_KEYSTORE" } ], "responses" : { "200" : { - "description" : "This status code indicates that the specified JMS connections is successfully disabled.", - "examples" : { - "application/json" : "{\r\n \"status\": \"JMS Connection Alias \\\"JMSConn11\\\" set to disabled.\",\r\n \"result\": true\r\n}" + "description" : "This status code indicates that the specified keystore has been deleted successfully from API Gateway.", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/KeyStore" + } } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, "500" : { - "description" : "" + "description" : "This status code indicates an error occurred while deleting the specified keystore from API Gateway." } }, "security" : [ { @@ -437,90 +541,111 @@ } ] } }, - "/is/jmsConnections/{jmsConnId}" : { + "/is/truststore" : { "get" : { - "description" : "The method retrieves the specified JMS connection in API Gateway.", - "operationId" : "getJMSConnection", - "consumes" : [ "application/json" ], + "description" : "Retrieves all available truststores from API Gateway.", + "operationId" : "getTruststores", "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "jmsConnId", - "in" : "path", - "description" : "This path parameter is used to specify the JMS connection id which JMS connection needs to be retrived.", - "required" : true, - "type" : "string", - "x-example" : "sampleJMSConn" - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the specified JMS connections is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"jms\": {\r\n \"id\": \"JMSConn1\",\r\n \"aliasName\": \"JMSConn1\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }\r\n}" - }, + "description" : "This status code indicates that all trust stores have been successfully fetched from API Gateway.", "schema" : { - "$ref" : "#/definitions/JMSConnectionAlias" + "type" : "array", + "items" : { + "$ref" : "#/definitions/TrustStore" + } + }, + "examples" : { + "application/json" : "{\r\n\t\"truststores\": [{\r\n\t\t\"id\": \"Truststore2\",\r\n\t\t\"keyStoreName\": \"Truststore2\",\r\n\t\t\"keyStoreDescription\": \"Some sample description for truststore.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.Truststore2\",\r\n\t\t\"keyStoreLocation\": null,\r\n\t\t\"certficateAliases\": [\"10.21.38.112\", \"10.60.33.18\", \"10.60.37.86\"],\r\n\t\t\"isLoaded\": true,\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAAEAAAAAgAIbWNkc2FuMDIAAAFdsV3/PwAFWC41MDkAAAOlMIIDoTCCAomgAwIBAgIEVRJWFTANBgkqhkiG9w0BAQQFADCBgDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURlRxqzR24p9unbAbjpEAlgBgiJvUAB2KKnpkRJRhS8Ae2cOC7vgMcc6r9S/cfWNnaHYcU6wqWlat+8BWh15ZyETKCnHPwOEsBZ181YLjSznzWE7Sjl887cenULQDK55HMtyF/BEwPqQH6SGGMw4WnhbEPeyNzhMrsOpM/Y6Nbx4AJ0YjbU5jA4Igw4OPRDw4z9kXgWNrjd+nwnuQmMPwaRgwmJXQQ52NC2ccTOeZ1NeXNAsqdGNXnJ6Jzb0Ge1HYRlvQ4SDj40ZRhfLOuCdbk=\",\r\n\t\t\"uploadFileName\": \"truststore2.jks\",\r\n\t\t\"isWarning\": false,\r\n\t\t\"message\": null\r\n\t}]\r\n}" } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, "404" : { - "description" : "This status code indicates that the JMS id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Exception occured : The JMS settings object with the given ID: JMSConn11 couldn't found\"\r\n}" - } + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while retrieving the available truststores from API Gateway." } }, "security" : [ { "Basic" : [ ] } ] }, - "delete" : { - "description" : "This delete request will delete the JMS connection based on the JMS connection id which is specified in path", - "operationId" : "deleteJMSConnection", - "consumes" : [ "application/json" ], + "post" : { + "description" : "Creates a truststore in API Gateway.", + "operationId" : "createTruststore", + "consumes" : [ "multipart/form-data" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "jmsConnId", - "in" : "path", - "description" : "This path parameter is used to specify the JMS connection id for which JMS connection needs to deleted.", + "name" : "keyStoreName", + "in" : "formData", + "description" : "The name of the truststore. It cannot contain spaces or special characters. The name of the trust store must be unique across all the truststores created in API Gateway.", "required" : true, "type" : "string", - "x-example" : "sampleJMSConn" + "x-example" : "TruststoreSampleName" + }, { + "name" : "keyStoreDescription", + "in" : "formData", + "description" : "The description for the truststore.", + "required" : false, + "type" : "string", + "x-example" : "Sample description for the truststore." + }, { + "name" : "keyStoreType", + "in" : "formData", + "description" : "The certificate file format of the truststore.", + "required" : true, + "type" : "string", + "default" : "JKS", + "x-example" : "JKS", + "enum" : [ "JKS" ] + }, { + "name" : "keyStoreProvider", + "in" : "formData", + "description" : "The provider that is used for the truststore type.", + "required" : true, + "type" : "string", + "default" : "SUN", + "x-example" : "SUN", + "enum" : [ "SUN" ] + }, { + "name" : "keyStorePassword", + "in" : "formData", + "description" : "The truststore password that is defined at the time of truststore creation using a keystore utility.", + "required" : true, + "type" : "string", + "x-example" : "truststore_password" + }, { + "name" : "uploadFileName", + "in" : "formData", + "description" : "The name of the truststore file that will be used to save the truststore internally in API Gateway.", + "required" : true, + "type" : "string", + "x-example" : "truststore_file.jks" + }, { + "name" : "fileContent", + "in" : "formData", + "description" : "The contents of the truststore file.", + "required" : true, + "type" : "file" } ], - "responses" : { - "204" : { - "description" : "This status code indicates that the specified JMS connection is successfully deleted" - }, - "401" : { - "description" : "This status code indicates either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to delete the assertion." - }, - "404" : { - "description" : "This status code indicates that the corresponding JMS connection id does not exist", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/is/license" : { - "get" : { - "description" : "Retrieves the license details from API Gateway.", - "operationId" : "getLicenseDetails", - "produces" : [ "application/json" ], - "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the license has been successfully retrieved from API Gateway.", - "examples" : { - "application/json" : "{ \r\n\t\"LicenseInfo\": { \r\n\t\t\"Clustering\": \"true\", \r\n\t\t\"Publish / Subscribe\": \"false\", \r\n\t\t\"Adapter Runtime\": \"false\", \r\n\t\t\"Remote Invoke\": \"true\", \r\n\t\t\"Guaranteed Delivery\": \"false\", \r\n\t\t\"Security Auditing\": \"true\", \r\n\t\t\"Enterprise Gateway\": \"true\", \r\n\t\t\"Distributed Cache\": \"true\", \r\n\t\t\"Microservices\": \"false\" }, \r\n\t\"LicenseDetails\": [ { \r\n\t\t\"Sales Information\": { \r\n\t\t\t\"Serial Number\": \"12323232\", \r\n\t\t\t\"License Key\": \"dddddddddddddddddd\", \r\n\t\t\t\"Customer ID\": \"LK-WIN\", \r\n\t\t\t\"Customer Name\": \"Software AG Internal\", \r\n\t\t\t\"ContractDetails\": \"1\", \r\n\t\t\t\"ContractPosNumber\": \"1\", \r\n\t\t\t\"License Type Details\": \"Internal\", \r\n\t\t\t\"AutoCallHome\": \"\" \r\n\t\t} \r\n\t}, \r\n\t{ \r\n\t\t\"Product Information\": { \r\n\t\t\t\"Expiration Date\": \"2019-12-01 23:59:59 IST\", \r\n\t\t\t\"Operating System\": \"win\", \r\n\t\t\t\"Product Code\": \"YAIAA\", \r\n\t\t\t\"Product ID\": \"\", \r\n\t\t\t\"Product Name\": \"API Gateway Advanced Edition\", \r\n\t\t\t\"Product Version\": \"10.1\", \r\n\t\t\t\"Usage\": \"1\", \r\n\t\t\t\"RenewalDate\": \"\", \r\n\t\t\t\"HigherLevPosNr\": \"\", \r\n\t\t\t\"HigherLevProdCode\": \"\", \r\n\t\t\t\"HigherLevProdName\": \"\" \r\n\t\t} \r\n\t}, \r\n\t{ \r\n\t\t\"Integration Server\": { \r\n\t\t\t\"Product Code\": \"YAI\", \r\n\t\t\t\"Product Version\": \"10.1\", \r\n\t\t\t\"Concurrent Sessions\": \"Unlimited\", \r\n\t\t\t\"Clustering\": \"yes\", \r\n\t\t\t\"Publish / Subscribe\": \"no\", \r\n\t\t\t\"Adapter Runtime\": \"no\", \r\n\t\t\t\"Remote Invoke\": \"yes\", \r\n\t\t\t\"Guaranteed Delivery\": \"no\", \r\n\t\t\t\"Security Auditing\": \"yes\", \r\n\t\t\t\"Distributed Cache\": \"yes\", \r\n\t\t\t\"Enterprise Gateway\": \"yes\" \r\n\t\t} \r\n\t}, \r\n\t{ \r\n\t\t\"License Information\": { \r\n\t\t\t\"Price Unit\": \"CoreA\", \r\n\t\t\t\"Price Quantity\": \"1\", \r\n\t\t\t\"TypeOfInstallation\": \"1\", \r\n\t\t\t\"LicenseType\": \"\", \r\n\t\t\t\"ExtendedRights\": \"\", \r\n\t\t\t\"LicenseVersion\": \"1.2\", \r\n\t\t\t\"Metering\": \"\" \r\n\t\t} \r\n\t}, \r\n\t{ \r\n\t\t\"API Gateway\": { \r\n\t\t\t\"Policy Management - Threat Protection\": \"yes\", \r\n\t\t\t\"Policy Management - Gateway\": \"yes\", \r\n\t\t\t\"Application Management\": \"yes\", \r\n\t\t\t\"APIManagement\": \"yes\" \r\n\t\t} \r\n\t} \r\n\t], \r\n\t\"TerracottaLicenseInformation\": { \r\n\t\t\"License File\": null, \r\n\t\t\"BigMemory\": \"no\", \r\n\t\t\"Expiration Date\": null \r\n\t}, \r\n\t\"LicenseSettings\": { \r\n\t\t\"LicenseKeyFile\": \"C:\\GatewayTrunk\\IntegrationServer\\instances\\default\\config\\licenseKey.xml\", \r\n\t\t\"terracottaLicenseFileSet\": null \r\n\t\t} \r\n\t}" - }, + "description" : "This status code indicates that the truststore has been successfully created in API Gateway.", "schema" : { - "$ref" : "#/definitions/LicenseDetail" + "$ref" : "#/definitions/TrustStore" + }, + "examples" : { + "application/json" : "{\r\n\t\"id\": \"Truststore2\",\r\n\t\"keyStoreName\": \"Truststore2\",\r\n\t\"keyStoreDescription\": null,\r\n\t\"keyStoreType\": \"JKS\",\r\n\t\"keyStoreProvider\": \"SUN\",\r\n\t\"keyStorePassword\": \"wm.security.keystore.Truststore2\",\r\n\t\"keyStoreLocation\": null,\r\n\t\"certficateAliases\": [\"10.21.38.112\", \"10.60.33.18\", \"10.60.37.86\"],\r\n\t\"isLoaded\": true,\r\n\t\"fileContent\": \"/u3+7QAAAAIAAAAEAAAAAgAIbWNkc2FuMDIAAAFdsV3/PwAFWC41MDkAAAOlMIIDoTCCAomgAwIBAgIEVRJWFTANBgkqhkiG9w0BAQQFADCBgDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURlRxqzR24p9unbAbjpEAlgBgiJvUAB2KKnpkRJRhS8Ae2cOC7vgMcc6r9S/cfWNnaHYcU6wqWlat+8BWh15ZyETKCnHPwOEsBZ181YLjSznzWE7Sjl887cenULQDK55HMtyF/BEwPqQH6SGGMw4WnhbEPeyNzhMrsOpM/Y6Nbx4AJ0YjbU5jA4Igw4OPRDw4z9kXgWNrjd+nwnuQmMPwaRgwmJXQQ52NC2ccTOeZ1NeXNAsqdGNXnJ6Jzb0Ge1HYRlvQ4SDj40ZRhfLOuCdbk=\",\r\n\t\"uploadFileName\": \"truststore2.jks\",\r\n\t\"isWarning\": false,\r\n\t\"message\": null\r\n}" } }, "400" : { @@ -536,32 +661,39 @@ "description" : "This status code indicates that the requested HTTP method is not supported for the resource." }, "500" : { - "description" : "This status code indicates an error occurred while fetching the configured license details from API Gateway." + "description" : "This status code indicates an error occurred while persisting the truststore in API Gateway." } }, "security" : [ { "Basic" : [ ] } ] - }, - "put" : { - "operationId" : "updateLicenseDetails", - "consumes" : [ "application/json" ], + } + }, + "/is/truststore/{trustStoreName}" : { + "get" : { + "description" : "Retrieves an existing truststore matching the given name from API Gateway.", + "operationId" : "getTruststore", "produces" : [ "application/json" ], "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "The request payload for updating license details in APIGateway.", + "name" : "trustStoreName", + "in" : "path", + "description" : "Truststore name to identify the corresponding trust store in API Gateway", "required" : true, - "schema" : { - "$ref" : "#/definitions/LicenseDetail" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"APIGatewayLicensePath\": \"C:\\GatewayTrunk\\IntegrationServer\\instances\\default\\config\\licenseKey.xml\", \r\n\t\"TerraCottaLicensePath\": \"C:\\Documents\\SAG License\\terracotta-license.key\" \r\n}" - } + "type" : "string", + "x-example" : "DEFAULT_IS_TRUSTSTORE" } ], "responses" : { "200" : { - "description" : "This status code indicates that the configured license details have been successfully persisted in API Gateway." + "description" : "This status code indicates that the truststore has been successfully retrieved from API Gateway.", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/TrustStore" + } + }, + "examples" : { + "application/json" : "{\r\n\t\"truststores\": [{\r\n\t\t\"id\": \"Truststore2\",\r\n\t\t\"keyStoreName\": \"Truststore2\",\r\n\t\t\"keyStoreDescription\": \"Some sample description for truststore.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.Truststore2\",\r\n\t\t\"keyStoreLocation\": null,\r\n\t\t\"certficateAliases\": [\"10.21.38.112\", \"10.60.33.18\", \"10.60.37.86\"],\r\n\t\t\"isLoaded\": true,\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAAEAAAAAgAIbWNkc2FuMDIAAAFdsV3/PwAFWC41MDkAAAOlMIIDoTCCAomgAwIBAgIEVRJWFTANBgkqhkiG9w0BAQQFADCBgDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURlRxqzR24p9unbAbjpEAlgBgiJvUAB2KKnpkRJRhS8Ae2cOC7vgMcc6r9S/cfWNnaHYcU6wqWlat+8BWh15ZyETKCnHPwOEsBZ181YLjSznzWE7Sjl887cenULQDK55HMtyF/BEwPqQH6SGGMw4WnhbEPeyNzhMrsOpM/Y6Nbx4AJ0YjbU5jA4Igw4OPRDw4z9kXgWNrjd+nwnuQmMPwaRgwmJXQQ52NC2ccTOeZ1NeXNAsqdGNXnJ6Jzb0Ge1HYRlvQ4SDj40ZRhfLOuCdbk=\",\r\n\t\t\"uploadFileName\": \"truststore2.jks\",\r\n\t\t\"isWarning\": false,\r\n\t\t\"message\": null\r\n\t}]\r\n}" + } }, "400" : { "description" : "This status code indicates invalid request or bad input." @@ -576,148 +708,95 @@ "description" : "This status code indicates that the requested HTTP method is not supported for the resource." }, "500" : { - "description" : "This status code indicates an error occurred while persisting the license details in API Gateway." + "description" : "This status code indicates an error occurred while retrieving the truststore from API Gateway." } }, "security" : [ { "Basic" : [ ] } ] - } - }, - "/licenseUsageDetails" : { - "get" : { - "description" : "This REST request is used to retrieve the details of transaction based license.", - "operationId" : "getLicenseUsageDetails", - "consumes" : [ "application/json" ], + }, + "post" : { + "description" : "Updates an already existing truststore in API Gateway.", + "operationId" : "updateTruststore", + "consumes" : [ "multipart/form-data" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "month", - "in" : "query", - "description" : "This query parameter is used to provide the month details in numeric format", - "required" : false, + "name" : "trustStoreName", + "in" : "path", + "description" : "The name of the truststore. It cannot contain spaces or special characters. The name of the trust store must be unique across all the truststores created in API Gateway.", + "required" : true, "type" : "string", - "x-example" : "month=5" + "x-example" : "TruststoreSampleName" }, { - "name" : "year", - "in" : "query", - "description" : "This query parameter is used to provide the year details in numeric format", + "name" : "keyStoreDescription", + "in" : "formData", + "description" : "The description for the truststore.", "required" : false, "type" : "string", - "x-example" : "year=2018" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the transaction based license details for the given month has sent successfully as response.", - "examples" : { - "application/json" : "{\r\n \"currentUsage\": 111,\r\n \"licenseLimitPerMonth\": 20,\r\n \"pendingQuota\": 0,\r\n \"monthAndYear\": \"5/2018\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to get the transaction based license details." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apitransactions/typedefinitions" : { - "get" : { - "description" : "Returns the list of runtime event types. The available event types are as follows 1.transactionalEvents 2.monitorEvents 3.errorEvents 4.performanceMetrics 5.threatProtectionEvents 6.lifecycleEvents 7.policyViolationEvents 8.auditLogs 9.applicationlogs. You can use these eventType to scope the archive/purge operation. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", - "operationId" : "getMappings", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This response indicates that the list of type definitions has been returned to the requestor.", - "examples" : { - "application/json" : "{\r\n \"Mappings\": [\r\n \"performanceMetrics\",\r\n \"monitorEvents\",\r\n \"transactionalEvents\",\r\n \"policyViolationEvents\",\r\n \"errorEvents\",\r\n \"threatProtectionEvents\",\r\n \"lifecycleEvents\",\r\n \"auditLogs\"\r\n,\r\n \"applicationlogs\"\r\n ]\r\n}" - } - }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "500" : { - "description" : "This response indicates that the server has encountered an error while returning the list of type definitions. " - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/approvalConfigurations/{id}" : { - "get" : { - "description" : "The method retrieves the details of a specified approval configuration in API Gateway", - "operationId" : "getApprovalConfiguration", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "id", - "in" : "path", - "description" : "This parameter specifies the ID of an approval configuration whose details are to be retrieved in API Gateway.", + "x-example" : "Sample description for the truststore." + }, { + "name" : "keyStoreType", + "in" : "formData", + "description" : "The certificate file format of the truststore.", "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the details of the specified approval configuration are retrieved successfully.", - "examples" : { - "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/ApprovalConfiguration" - } - }, - "404" : { - "description" : "This status code indicates that an approval configuration with the given ID could not be found in API Gateway." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "The method updates the approval configuration in API Gateway.", - "operationId" : "updateApprovalConfiguration", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of an approval configuration that is to be updated in API Gateway.", + "type" : "string", + "default" : "JKS", + "x-example" : "JKS", + "enum" : [ "JKS" ] + }, { + "name" : "keyStoreProvider", + "in" : "formData", + "description" : "The provider that is used for the truststore type.", "required" : true, - "schema" : { - "$ref" : "#/definitions/ApprovalConfiguration" - }, - "x-examples" : { - "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" - } + "type" : "string", + "default" : "SUN", + "x-example" : "SUN", + "enum" : [ "SUN" ] }, { - "name" : "id", - "in" : "path", - "description" : "This parameter specifies the ID of an approval configuration that is to be updated in API Gateway.", + "name" : "keyStorePassword", + "in" : "formData", + "description" : "The truststore password that is defined at the time of truststore creation using a keystore utility.", "required" : true, - "type" : "string" + "type" : "string", + "x-example" : "truststore_password" + }, { + "name" : "uploadFileName", + "in" : "formData", + "description" : "The name of the truststore file that will be used to save the truststore internally in API Gateway.", + "required" : true, + "type" : "string", + "x-example" : "truststore_file.jks" + }, { + "name" : "fileContent", + "in" : "formData", + "description" : "The contents of the truststore file.", + "required" : true, + "type" : "file" } ], "responses" : { "200" : { - "description" : "This status code indicates that the approval configuration has been successfully updated in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" - }, + "description" : "This status code indicates that the truststore has been successfully updated in API Gateway.", "schema" : { - "$ref" : "#/definitions/ApprovalConfiguration" + "$ref" : "#/definitions/TrustStore" + }, + "examples" : { + "application/json" : "{\r\n\t\"id\": \"Truststore2\",\r\n\t\"keyStoreName\": \"Truststore2\",\r\n\t\"keyStoreDescription\": null,\r\n\t\"keyStoreType\": \"JKS\",\r\n\t\"keyStoreProvider\": \"SUN\",\r\n\t\"keyStorePassword\": \"wm.security.keystore.Truststore2\",\r\n\t\"keyStoreLocation\": null,\r\n\t\"certficateAliases\": [\"10.21.38.112\", \"10.60.33.18\", \"10.60.37.86\"],\r\n\t\"isLoaded\": true,\r\n\t\"fileContent\": \"/u3+7QAAAAIAAAAEAAAAAgAIbWNkc2FuMDIAAAFdsV3/PwAFWC41MDkAAAOlMIIDoTCCAomgAwIBAgIEVRJWFTANBgkqhkiG9w0BAQQFADCBgDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURlRxqzR24p9unbAbjpEAlgBgiJvUAB2KKnpkRJRhS8Ae2cOC7vgMcc6r9S/cfWNnaHYcU6wqWlat+8BWh15ZyETKCnHPwOEsBZ181YLjSznzWE7Sjl887cenULQDK55HMtyF/BEwPqQH6SGGMw4WnhbEPeyNzhMrsOpM/Y6Nbx4AJ0YjbU5jA4Igw4OPRDw4z9kXgWNrjd+nwnuQmMPwaRgwmJXQQ52NC2ccTOeZ1NeXNAsqdGNXnJ6Jzb0Ge1HYRlvQ4SDj40ZRhfLOuCdbk=\",\r\n\t\"uploadFileName\": \"truststore2.jks\",\r\n\t\"isWarning\": false,\r\n\t\"message\": null\r\n}" } }, "400" : { - "description" : "This status code indicates that the given approval configuration request body is not correct." + "description" : "This status code indicates invalid request or bad input." }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while persisting the truststore in API Gateway." } }, "security" : [ { @@ -725,25 +804,34 @@ } ] }, "delete" : { - "description" : "The method deletes the specified approval configuration in API Gateway.", - "operationId" : "deleteApprovalConfiguration", - "produces" : [ "application/json" ], + "description" : "Deletes an already existing truststore matching the name in API Gateway.", + "operationId" : "deleteTruststore", "parameters" : [ { - "name" : "id", + "name" : "trustStoreName", "in" : "path", - "description" : "This parameter specifies the ID of an approval configuration that is to be deleted in API Gateway.", + "description" : "Truststore name to identify the corresponding trust store to delete in API Gateway", "required" : true, - "type" : "string" + "type" : "string", + "x-example" : "DEFAULT_IS_TRUSTSTORE" } ], "responses" : { + "200" : { + "description" : "This status code indicates that the trust store has been successfully deleted from API Gateway." + }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, - "204" : { - "description" : "This status code indicates that the specified approval configuration has been successfully deleted from API Gateway." - }, "404" : { - "description" : "This status code indicates that an approval configuration with the given ID could not be found in API Gateway." + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while retrieving the truststore from API Gateway." } }, "security" : [ { @@ -751,62 +839,76 @@ } ] } }, - "/approvalConfigurations" : { + "/is/license" : { "get" : { - "description" : "The method retrieves a list of available approval configurations in API Gateway.", - "operationId" : "getApprovalConfigurations", + "description" : "Retrieves the license details from API Gateway.", + "operationId" : "getLicenseDetails", "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that a list of the available approval configurations is retrieved successfully.", - "examples" : { - "application/json" : "{\r\n \"approvalConfigurations\": [\r\n {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n ]\r\n}" - }, + "description" : "This status code indicates that the license has been successfully retrieved from API Gateway.", "schema" : { - "$ref" : "#/definitions/ApprovalConfiguration" + "$ref" : "#/definitions/LicenseDetail" + }, + "examples" : { + "application/json" : "{ \r\n\t\"LicenseInfo\": { \r\n\t\t\"Clustering\": \"true\", \r\n\t\t\"Publish / Subscribe\": \"false\", \r\n\t\t\"Adapter Runtime\": \"false\", \r\n\t\t\"Remote Invoke\": \"true\", \r\n\t\t\"Guaranteed Delivery\": \"false\", \r\n\t\t\"Security Auditing\": \"true\", \r\n\t\t\"Enterprise Gateway\": \"true\", \r\n\t\t\"Distributed Cache\": \"true\", \r\n\t\t\"Microservices\": \"false\" }, \r\n\t\"LicenseDetails\": [ { \r\n\t\t\"Sales Information\": { \r\n\t\t\t\"Serial Number\": \"12323232\", \r\n\t\t\t\"License Key\": \"dddddddddddddddddd\", \r\n\t\t\t\"Customer ID\": \"LK-WIN\", \r\n\t\t\t\"Customer Name\": \"Software AG Internal\", \r\n\t\t\t\"ContractDetails\": \"1\", \r\n\t\t\t\"ContractPosNumber\": \"1\", \r\n\t\t\t\"License Type Details\": \"Internal\", \r\n\t\t\t\"AutoCallHome\": \"\" \r\n\t\t} \r\n\t}, \r\n\t{ \r\n\t\t\"Product Information\": { \r\n\t\t\t\"Expiration Date\": \"2019-12-01 23:59:59 IST\", \r\n\t\t\t\"Operating System\": \"win\", \r\n\t\t\t\"Product Code\": \"YAIAA\", \r\n\t\t\t\"Product ID\": \"\", \r\n\t\t\t\"Product Name\": \"API Gateway Advanced Edition\", \r\n\t\t\t\"Product Version\": \"10.1\", \r\n\t\t\t\"Usage\": \"1\", \r\n\t\t\t\"RenewalDate\": \"\", \r\n\t\t\t\"HigherLevPosNr\": \"\", \r\n\t\t\t\"HigherLevProdCode\": \"\", \r\n\t\t\t\"HigherLevProdName\": \"\" \r\n\t\t} \r\n\t}, \r\n\t{ \r\n\t\t\"Integration Server\": { \r\n\t\t\t\"Product Code\": \"YAI\", \r\n\t\t\t\"Product Version\": \"10.1\", \r\n\t\t\t\"Concurrent Sessions\": \"Unlimited\", \r\n\t\t\t\"Clustering\": \"yes\", \r\n\t\t\t\"Publish / Subscribe\": \"no\", \r\n\t\t\t\"Adapter Runtime\": \"no\", \r\n\t\t\t\"Remote Invoke\": \"yes\", \r\n\t\t\t\"Guaranteed Delivery\": \"no\", \r\n\t\t\t\"Security Auditing\": \"yes\", \r\n\t\t\t\"Distributed Cache\": \"yes\", \r\n\t\t\t\"Enterprise Gateway\": \"yes\" \r\n\t\t} \r\n\t}, \r\n\t{ \r\n\t\t\"License Information\": { \r\n\t\t\t\"Price Unit\": \"CoreA\", \r\n\t\t\t\"Price Quantity\": \"1\", \r\n\t\t\t\"TypeOfInstallation\": \"1\", \r\n\t\t\t\"LicenseType\": \"\", \r\n\t\t\t\"ExtendedRights\": \"\", \r\n\t\t\t\"LicenseVersion\": \"1.2\", \r\n\t\t\t\"Metering\": \"\" \r\n\t\t} \r\n\t}, \r\n\t{ \r\n\t\t\"API Gateway\": { \r\n\t\t\t\"Policy Management - Threat Protection\": \"yes\", \r\n\t\t\t\"Policy Management - Gateway\": \"yes\", \r\n\t\t\t\"Application Management\": \"yes\", \r\n\t\t\t\"APIManagement\": \"yes\" \r\n\t\t} \r\n\t} \r\n\t], \r\n\t\"TerracottaLicenseInformation\": { \r\n\t\t\"License File\": null, \r\n\t\t\"BigMemory\": \"no\", \r\n\t\t\"Expiration Date\": null \r\n\t}, \r\n\t\"LicenseSettings\": { \r\n\t\t\"LicenseKeyFile\": \"C:\\GatewayTrunk\\IntegrationServer\\instances\\default\\config\\licenseKey.xml\", \r\n\t\t\"terracottaLicenseFileSet\": null \r\n\t\t} \r\n\t}" } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while fetching the configured license details from API Gateway." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "The method creates an approval configuration in API Gateway.", - "operationId" : "createApprovalConfiguration", + "put" : { + "operationId" : "updateLicenseDetails", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "This parameter describes the request payload of an approval configuration that is to be created in API Gateway.", + "description" : "The request payload for updating license details in APIGateway.", "required" : true, "schema" : { - "$ref" : "#/definitions/ApprovalConfiguration" + "$ref" : "#/definitions/LicenseDetail" }, "x-examples" : { - "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" + "application/json" : "{\r\n\t\"APIGatewayLicensePath\": \"C:\\GatewayTrunk\\IntegrationServer\\instances\\default\\config\\licenseKey.xml\", \r\n\t\"TerraCottaLicensePath\": \"C:\\Documents\\SAG License\\terracotta-license.key\" \r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the approval configuration has been successfully created in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/ApprovalConfiguration" - } + "description" : "This status code indicates that the configured license details have been successfully persisted in API Gateway." }, "400" : { - "description" : "This status code indicates that the given approval configuration request body is not correct." + "description" : "This status code indicates invalid request or bad input." }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while persisting the license details in API Gateway." } }, "security" : [ { @@ -823,11 +925,11 @@ "responses" : { "200" : { "description" : "This status code indicates that the outbound proxy server aliases has been successfully retireved from API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"proxyServerList\": {\r\n\t\t\"https_proxy\": {\r\n\t\t\t\"proxyAlias\": \"https_proxy\",\r\n\t\t\t\"host\": \"10.20.30.40\",\r\n\t\t\t\"port\": \"443\",\r\n\t\t\t\"username\": \"https_proxy_username\",\r\n\t\t\t\"password\": \"**********\",\r\n\t\t\t\"protocol\": \"HTTPS\",\r\n\t\t\t\"isDefault\": \"Y\",\r\n\t\t\t\"status\": \"Enabled\",\r\n\t\t\t\"ftpType\": null,\r\n\t\t\t\"socksVersion\": null,\r\n\t\t\t\"passwordHandle\": \"OutboundProxyPasswordhttps_proxy\",\r\n\t\t\t\"caller\": \"Administrator\",\r\n\t\t\t\"entityId\": \"https_proxy\"\r\n\t\t},\r\n\t\t\"ftp_proxy_alias\": {\r\n\t\t\t\"proxyAlias\": \"ftp_proxy_alias\",\r\n\t\t\t\"host\": \"ftp.proxy.server.com\",\r\n\t\t\t\"port\": \"8745\",\r\n\t\t\t\"username\": \"username\",\r\n\t\t\t\"password\": \"*****\",\r\n\t\t\t\"protocol\": \"FTP\",\r\n\t\t\t\"isDefault\": \"N\",\r\n\t\t\t\"status\": \"Enabled\",\r\n\t\t\t\"ftpType\": \"2\",\r\n\t\t\t\"socksVersion\": null,\r\n\t\t\t\"passwordHandle\": \"OutboundProxyPasswordftp_proxy_alias\",\r\n\t\t\t\"caller\": \"Administrator\",\r\n\t\t\t\"entityId\": \"ftp_proxy_alias\"\r\n\t\t},\r\n\t\t\"socks_proxy\": {\r\n\t\t\t\"proxyAlias\": \"socks_proxy\",\r\n\t\t\t\"host\": \"socks.proxy.server.com\",\r\n\t\t\t\"port\": \"447\",\r\n\t\t\t\"username\": \"\",\r\n\t\t\t\"password\": \"\",\r\n\t\t\t\"protocol\": \"SOCKS\",\r\n\t\t\t\"isDefault\": \"N\",\r\n\t\t\t\"status\": \"Disabled\",\r\n\t\t\t\"ftpType\": \"0\",\r\n\t\t\t\"socksVersion\": \"4\",\r\n\t\t\t\"passwordHandle\": null,\r\n\t\t\t\"caller\": \"Administrator\",\r\n\t\t\t\"entityId\": \"socks_proxy\"\r\n\t\t}\r\n\t}\r\n}" - }, "schema" : { "$ref" : "#/definitions/OutboundProxyGetResponse" + }, + "examples" : { + "application/json" : "{\r\n\t\"proxyServerList\": {\r\n\t\t\"https_proxy\": {\r\n\t\t\t\"proxyAlias\": \"https_proxy\",\r\n\t\t\t\"host\": \"10.20.30.40\",\r\n\t\t\t\"port\": \"443\",\r\n\t\t\t\"username\": \"https_proxy_username\",\r\n\t\t\t\"password\": \"**********\",\r\n\t\t\t\"protocol\": \"HTTPS\",\r\n\t\t\t\"isDefault\": \"Y\",\r\n\t\t\t\"status\": \"Enabled\",\r\n\t\t\t\"ftpType\": null,\r\n\t\t\t\"socksVersion\": null,\r\n\t\t\t\"passwordHandle\": \"OutboundProxyPasswordhttps_proxy\",\r\n\t\t\t\"caller\": \"Administrator\",\r\n\t\t\t\"entityId\": \"https_proxy\"\r\n\t\t},\r\n\t\t\"ftp_proxy_alias\": {\r\n\t\t\t\"proxyAlias\": \"ftp_proxy_alias\",\r\n\t\t\t\"host\": \"ftp.proxy.server.com\",\r\n\t\t\t\"port\": \"8745\",\r\n\t\t\t\"username\": \"username\",\r\n\t\t\t\"password\": \"*****\",\r\n\t\t\t\"protocol\": \"FTP\",\r\n\t\t\t\"isDefault\": \"N\",\r\n\t\t\t\"status\": \"Enabled\",\r\n\t\t\t\"ftpType\": \"2\",\r\n\t\t\t\"socksVersion\": null,\r\n\t\t\t\"passwordHandle\": \"OutboundProxyPasswordftp_proxy_alias\",\r\n\t\t\t\"caller\": \"Administrator\",\r\n\t\t\t\"entityId\": \"ftp_proxy_alias\"\r\n\t\t},\r\n\t\t\"socks_proxy\": {\r\n\t\t\t\"proxyAlias\": \"socks_proxy\",\r\n\t\t\t\"host\": \"socks.proxy.server.com\",\r\n\t\t\t\"port\": \"447\",\r\n\t\t\t\"username\": \"\",\r\n\t\t\t\"password\": \"\",\r\n\t\t\t\"protocol\": \"SOCKS\",\r\n\t\t\t\"isDefault\": \"N\",\r\n\t\t\t\"status\": \"Disabled\",\r\n\t\t\t\"ftpType\": \"0\",\r\n\t\t\t\"socksVersion\": \"4\",\r\n\t\t\t\"passwordHandle\": null,\r\n\t\t\t\"caller\": \"Administrator\",\r\n\t\t\t\"entityId\": \"socks_proxy\"\r\n\t\t}\r\n\t}\r\n}" } }, "400" : { @@ -931,23 +1033,21 @@ } ] } }, - "/is/outboundproxy{outboundproxyAlias}/enable" : { - "put" : { - "description" : "Enables an already existing outbound proxy server alias in API Gateway.", - "operationId" : "enableOutboundProxy", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], + "/is/outboundproxy/{outboundproxyAlias}" : { + "delete" : { + "description" : "Deletes the specified outbound proxy server alias from API Gateway.", + "operationId" : "deleteOutboundProxy", "parameters" : [ { "name" : "outboundproxyAlias", "in" : "path", - "description" : "The outbound proxy server alias to be enabled", + "description" : "The outbound proxy server alias to be deleted", "required" : true, "type" : "string", "x-example" : "sample_proxy_alias" } ], "responses" : { "200" : { - "description" : "This status code indicates that the outbound proxy server alias has been successfully enabled in API Gateway." + "description" : "This status code indicates that the outbound proxy server alias has been successfully deleted from API Gateway." }, "400" : { "description" : "This status code indicates invalid request or bad input." @@ -962,7 +1062,7 @@ "description" : "This status code indicates that the requested HTTP method is not supported for the resource." }, "500" : { - "description" : "This status code indicates an error occurred while enabling the outbound proxy server alias in the API Gateway." + "description" : "This status code indicates an error occurred while deleting the specified outbound proxy server alias from API Gateway." } }, "security" : [ { @@ -970,23 +1070,23 @@ } ] } }, - "/is/outboundproxy{outboundproxyAlias}/disable" : { + "/is/outboundproxy{outboundproxyAlias}/enable" : { "put" : { - "description" : "Disables an already existing outbound proxy server alias in API Gateway.", - "operationId" : "disableOutboundProxy", + "description" : "Enables an already existing outbound proxy server alias in API Gateway.", + "operationId" : "enableOutboundProxy", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "name" : "outboundproxyAlias", "in" : "path", - "description" : "The outbound proxy server alias to be disabled", + "description" : "The outbound proxy server alias to be enabled", "required" : true, "type" : "string", "x-example" : "sample_proxy_alias" } ], "responses" : { "200" : { - "description" : "This status code indicates that the outbound proxy server alias has been successfully disabled in API Gateway." + "description" : "This status code indicates that the outbound proxy server alias has been successfully enabled in API Gateway." }, "400" : { "description" : "This status code indicates invalid request or bad input." @@ -1001,7 +1101,7 @@ "description" : "This status code indicates that the requested HTTP method is not supported for the resource." }, "500" : { - "description" : "This status code indicates an error occurred while disabling the outbound proxy server alias in the API Gateway." + "description" : "This status code indicates an error occurred while enabling the outbound proxy server alias in the API Gateway." } }, "security" : [ { @@ -1009,21 +1109,23 @@ } ] } }, - "/is/outboundproxy/{outboundproxyAlias}" : { - "delete" : { - "description" : "Deletes the specified outbound proxy server alias from API Gateway.", - "operationId" : "deleteOutboundProxy", + "/is/outboundproxy{outboundproxyAlias}/disable" : { + "put" : { + "description" : "Disables an already existing outbound proxy server alias in API Gateway.", + "operationId" : "disableOutboundProxy", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], "parameters" : [ { "name" : "outboundproxyAlias", "in" : "path", - "description" : "The outbound proxy server alias to be deleted", + "description" : "The outbound proxy server alias to be disabled", "required" : true, "type" : "string", "x-example" : "sample_proxy_alias" } ], "responses" : { "200" : { - "description" : "This status code indicates that the outbound proxy server alias has been successfully deleted from API Gateway." + "description" : "This status code indicates that the outbound proxy server alias has been successfully disabled in API Gateway." }, "400" : { "description" : "This status code indicates invalid request or bad input." @@ -1038,7 +1140,7 @@ "description" : "This status code indicates that the requested HTTP method is not supported for the resource." }, "500" : { - "description" : "This status code indicates an error occurred while deleting the specified outbound proxy server alias from API Gateway." + "description" : "This status code indicates an error occurred while disabling the outbound proxy server alias in the API Gateway." } }, "security" : [ { @@ -1046,36 +1148,25 @@ } ] } }, - "/is/proxyBypass" : { + "/licenseNotificationCriteria" : { "get" : { - "description" : "The method retrieves a list of all hostlists for which outbound proxy servers are skipped. Note: proxyBypass Id is always proxyBypass", - "operationId" : "getProxyBypass", + "description" : "Transaction based license notification criteria are like a usage checkpoint and whenever usage reaches to that checkpoint, a notification will be generated. This GET method returns the existing transaction based license notification criteria's as a response.The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", + "operationId" : "getAllNotificationCriteria", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the proxyBypassAddresses are successfully retrieved.", + "description" : "This response indicates that the list of notification criteria's has been returned successfully. The response body is the list of notification criteria's.", "examples" : { - "application/json" : "{\"proxyBypassAddresses\":[\"localhost\"]}" - }, - "schema" : { - "$ref" : "#/definitions/ProxyBypass" + "application/json" : "{\r\n \"notificationCriteriaList\": [\r\n {\r\n \"id\": \"1503882085022\",\r\n \"user\": \"admin\",\r\n \"notifyAt\": 100,\r\n \"notificationType\": \"UI-notification\",\r\n \"creationDate\": \"1503560319396\",\r\n \"defaultNotificationCriteria\": true\r\n },\r\n {\r\n \"id\": \"1503882084702\",\r\n \"user\": \"admin\",\r\n \"notifyAt\": 90,\r\n \"notificationType\": \"UI-notification\",\r\n \"creationDate\": \"1503560319260\",\r\n \"defaultNotificationCriteria\": true\r\n }\r\n ],\r\n \"result\": \"success\"\r\n}" } }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "description" : "This response indicates that invalid credentials have been provided for the request." }, "500" : { - "description" : "This status code indicates an error occurred while retrieving the available proxybypass from API Gateway." + "description" : "This response indicates that the server has encountered an error while fetching the list of notification criteria's" } }, "security" : [ { @@ -1083,40 +1174,34 @@ } ] }, "post" : { - "description" : "The method updates the proxyBypassAddresses to bypass the outbound proxy servers. The API request body must contain the payload. In the proxyBypassAddresses field, type the fully qualified host and domain name of each server to which you want the Integration Server to issue requests directly. Type the host name and the domain name exactly as they appear in the URLs the server uses. To enter multiple names, separate each with commas.\r\nYou can use the asterisk (*) to identify several servers with similar names. The asterisk matches any number of characters. For example, if you want to bypass requests made to localhost, www.yahoo.com, home.microsoft.com, and all hosts whose names begin with NYC, you would type:\r\nlocalhost,www.yahoo.com,home.microsoft.com, NYC*.*", - "operationId" : "saveProxyBypass", + "description" : "Transaction based license(TBL) notification criteria is used to monitor the API Gateway usage. API Gateway TBL will have the the permitted invocations per month defined in the license file and if user want to get notified when usage reaches to some point before it breaches the license limit, then user has to add a notification criteria by mentioning the usage point and notification will be generated when usage reaches to that point. This POST method is used to create transaction based license notification criteria in API Gateway. The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", + "operationId" : "saveNotificationCriteria", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "The request payload of proxybypass server that is to be saved in API Gateway.", + "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/ProxyBypass" + "$ref" : "#/definitions/NotificationCriteria" }, "x-examples" : { - "application/json" : "{\"proxyBypassAddresses\":[\"localhost\"]}" + "application/json" : "{\"notificationCriteria\":{\"user\":\"admin\",\"notifyAt\":\"70\",\"email\":\"sss@sag.com\",\"notificationType\":\"both\"}}" } } ], "responses" : { - "200" : { - "description" : "This status code indicates that the proxybypass server has been successfully created in API Gateway." - }, - "400" : { - "description" : "This status code indicates invalid request or bad input." + "201" : { + "description" : "This response indicates that the notification criteria has been created successfully.", + "examples" : { + "application/json" : "{\r\n \"notificationCriteriaResponse\": \"license notificationCriteria created successfully\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "description" : "This response indicates that invalid credentials have been provided for the request." }, "500" : { - "description" : "This status code indicates an error occurred while persisting the proxybypass in API Gateway." + "description" : "This response indicates that the server has encountered an error while creating the notification criteria" } }, "security" : [ { @@ -1124,43 +1209,98 @@ } ] }, "put" : { - "description" : "The method updates the proxyBypassAddresses to bypass the outbound proxy servers. The API request body must contain the payload. In the proxyBypassAddresses field, type the fully qualified host and domain name of each server to which you want the Integration Server to issue requests directly. Type the host name and the domain name exactly as they appear in the URLs the server uses. To enter multiple names, separate each with commas.\r\nYou can use the asterisk (*) to identify several servers with similar names. The asterisk matches any number of characters. For example, if you want to bypass requests made to localhost, www.yahoo.com, home.microsoft.com, and all hosts whose names begin with NYC, you would type:\r\nlocalhost,www.yahoo.com,home.microsoft.com, NYC*.*", - "operationId" : "updateProxyBypass", + "description" : "This PUT method is used to update the existing transaction based license notification criteria in API Gateway.The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", + "operationId" : "updateNotificationCriteria", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "The request payload of proxybypass that is to be updated in API Gateway.", + "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/ProxyBypass" + "$ref" : "#/definitions/NotificationCriteria" }, "x-examples" : { - "application/json" : "{\"proxyBypassAddresses\":[\"localhost\"]}" + "application/json" : "{\"notificationCriteria\":{\"id\":\"123\",\"notifyAt\":\"70\",\"email\":\"sss@sag.com\",\"notificationType\":\"both\"}}" } } ], "responses" : { "200" : { - "description" : "The method updates the proxyBypassAddresses.", + "description" : "This response indicates that the notification criteria has been updated successfully.", "examples" : { - "application/json" : "{\"proxyBypassAddresses\":[\"localhost\"]}" + "application/json" : "{\r\n \"notificationCriteriaResponse\": \"license notificationCriteria updated sucessfully\"\r\n}" } }, - "400" : { - "description" : "This status code indicates invalid request or bad input." + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "500" : { + "description" : "This response indicates that the server has encountered an error while updating the notification criteria" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/licenseNotificationCriteria/{notificationCriteriaId}" : { + "get" : { + "description" : "The GET method returns the transaction based license notification criteria based on the id. \n\nTransaction based license notification criteria is like a usage check point whenever usage reaches to that check point user will get notified by the notification.The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", + "operationId" : "getNotificationCriteria", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "notificationCriteriaId", + "in" : "path", + "description" : "This parameter indicates the notification criteria id to fetch the notification criteria", + "required" : true, + "type" : "string", + "x-example" : "12334" + } ], + "responses" : { + "200" : { + "description" : "This response indicates that the notification criteria has been returned successfully. The response body is the notification criteria.", + "examples" : { + "application/json" : "{\"notificationCriteria\":{\"id\":\"2423422\",\"user\":\"admin\",\"notifyAt\":\"70\",\"email\":\"sss@sag.com\",\"notificationType\":\"both\"}}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This response indicates that invalid credentials have been provided for the request." }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." + "500" : { + "description" : "This response indicates that the server has encountered an error while fetching the the notification criteria" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This method deletes the transaction based license notification criteria based on the id. The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", + "operationId" : "deleteNotificationCriteria", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "notificationCriteriaId", + "in" : "path", + "description" : "This parameter indicates the notification criteria id to purge the notification criteria", + "required" : true, + "type" : "string", + "x-example" : "12334" + } ], + "responses" : { + "204" : { + "description" : "This response indicates that the transaction based license notification criteria deleted successfully." }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "400" : { + "description" : "This status code indicates that the request URL is not valid." }, "500" : { - "description" : "This status code indicates an error occurred while persisting the proxybypass in the API Gateway." + "description" : "This response indicates that the server has encountered an error while purging the notification criteria. " } }, "security" : [ { @@ -1189,11 +1329,11 @@ "responses" : { "200" : { "description" : "This status code indicates that the master password expiry interval has been successfully updated in API Gateway", - "examples" : { - "application/json" : "{\r\n \"expireInterval\": \"60\",\r\n \"message\": \"Master password expiration interval updated\"\r\n}" - }, "schema" : { "$ref" : "#/definitions/MasterPasswordExpiryIntervalResponse" + }, + "examples" : { + "application/json" : "{\r\n \"expireInterval\": \"60\",\r\n \"message\": \"Master password expiration interval updated\"\r\n}" } }, "401" : { @@ -1229,11 +1369,11 @@ "responses" : { "200" : { "description" : "This status code indicates that the master password has been successfully updated", - "examples" : { - "application/json" : "{\r\n \"message\": \"New master password saved\"\r\n}" - }, "schema" : { "$ref" : "#/definitions/MasterPasswordUpdateResponse" + }, + "examples" : { + "application/json" : "{\r\n \"message\": \"New master password saved\"\r\n}" } }, "401" : { @@ -1257,11 +1397,11 @@ "responses" : { "200" : { "description" : "This status code indicates that the master password has been successfully updated to default value", - "examples" : { - "application/json" : "{\r\n \"handleCount\": \"7\",\r\n \"message\": \"7 passwords reset\"\r\n}" - }, "schema" : { "$ref" : "#/definitions/MasterPasswordResetResponse" + }, + "examples" : { + "application/json" : "{\r\n \"handleCount\": \"7\",\r\n \"message\": \"7 passwords reset\"\r\n}" } }, "401" : { @@ -1286,11 +1426,11 @@ "responses" : { "200" : { "description" : "This status code indicates that the master password properties are retrieved successfully", - "examples" : { - "application/json" : "{\r\n \"lastChangeDate\": \"2018-09-04 11:50:51 IST\",\r\n \"expireDate\": \"2018-12-03 11:50:51 IST\",\r\n \"expireInterval\": \"90\",\r\n \"daysTilExpire\": \"75\",\r\n \"expireMessage\": null,\r\n \"statusMessage\": \"Active\"\r\n}" - }, "schema" : { "$ref" : "#/definitions/MasterPasswordProperties" + }, + "examples" : { + "application/json" : "{\r\n \"lastChangeDate\": \"2018-09-04 11:50:51 IST\",\r\n \"expireDate\": \"2018-12-03 11:50:51 IST\",\r\n \"expireInterval\": \"90\",\r\n \"daysTilExpire\": \"75\",\r\n \"expireMessage\": null,\r\n \"statusMessage\": \"Active\"\r\n}" } }, "401" : { @@ -1302,79 +1442,80 @@ } ] } }, - "/assets/owner" : { - "post" : { - "description" : "This resource is used to change the owner of APIGateway asset", - "operationId" : "changeOwner", - "consumes" : [ "application/json" ], + "/is/cluster" : { + "get" : { + "description" : "Retrieves the configured cluster settings from API Gateway.", + "operationId" : "getClusterSetting", "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/ChangeOwnerRequest" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"assetType\":\"*\",\r\n\t\"newOwner\": \"user1\",\r\n\t\"currentOwner\": \"Administrator\"\r\n}\r\n" - } - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the ownership has been changed for the displayed assets", - "examples" : { - "application/json" : "{\r\n\t\"message\":\"Assets have been changed to user1\",\r\n\t\"apis\": [\"apiId1\", \"apiId2\"]\r\n\t\"application\": [\"appId1\", \"appId2\"]\r\n}\r\n" - }, + "description" : "This status code indicates that the cluster setting has been successfully retrieved from API Gateway.", "schema" : { - "$ref" : "#/definitions/ChangeOwnerResponse" + "$ref" : "#/definitions/ClusterInfo" } }, "400" : { - "description" : "Given payload is invalid" + "description" : "This status code indicates invalid request or bad input." }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while fetching the configured cluster settings from API Gateway." } }, "security" : [ { "Basic" : [ ] } ] - } - }, - "/assets/team" : { - "post" : { - "description" : "This resource is used to change the team of APIGateway asset", - "operationId" : "changeTeam", + }, + "put" : { + "description" : "Updates the cluster settings in API Gateway.", + "operationId" : "updateCluster", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "", + "description" : "The request payload for cluster settings in API Gateway.", "required" : true, "schema" : { - "$ref" : "#/definitions/ChangeOwnerRequest" + "$ref" : "#/definitions/ClusterInfo" }, "x-examples" : { - "application/json" : "{\r\n\t\"assetType\":\"API\",\r\n\t\"assetIds\":[\"3e60f075-9415-4974-b9d8-f4a2180a3a44\"],\r\n\t\r\n\t\"newTeams\":[\"API-Gateway-Providers\"]\r\n}\r\n" + "application/json" : "{\r\n\t\"clusterAware\":true,\r\n\t\"pendingRestart\":false,\r\n\t\"currentlyClustered\":false,\r\n\t\"clusterSessTimeout\":\"60\",\r\n\t\"clusterName\":\"devCluster\",\r\n\t\"actionOnStartupError\":\"standalone\",\r\n\t\"tsaURLs\":\"bluebird:9510\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the team has been changed for the displayed assets", - "examples" : { - "application/json" : "{\r\n\t\"message\":\"The assets have been assigned to the following teams : [Administrators, API-Gateway-Providers]\",\r\n\t\"api\":\"[3e60f075-9415-4974-b9d8-f4a2180a3a44]\"}\r\n" - }, + "description" : "This status code indicates that the configured cluster settings have been successfully persisted in API Gateway.", "schema" : { - "$ref" : "#/definitions/ChangeOwnerResponse" + "$ref" : "#/definitions/ClusterInfo" + }, + "examples" : { + "application/json" : "{\r\n\t\"clusterAware\":true,\r\n\t\"pendingRestart\":false,\r\n\t\"currentlyClustered\":false,\r\n\t\"clusterSessTimeout\":\"60\",\r\n\t\"clusterName\":\"devCluster\",\r\n\t\"actionOnStartupError\":\"standalone\",\r\n\t\"tsaURLs\":\"bluebird:9510\"\r\n}" } }, "400" : { - "description" : "Given payload is invalid" + "description" : "This status code indicates that the the user sends an empty or invalid JSON payload." }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to update extended and watt settings." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while persisting the cluster settings in API Gateway." } }, "security" : [ { @@ -1382,32 +1523,36 @@ } ] } }, - "/apitransactions/jobs/{jobId}" : { + "/licenseUsageDetails" : { "get" : { - "description" : "Use this method to know the status of a specific job. This method returns the status and file name (in case of archive process) as a response. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation", - "operationId" : "trackJobStatus", + "description" : "This REST request is used to retrieve the details of transaction based license.", + "operationId" : "getLicenseUsageDetails", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "jobId", - "in" : "path", - "description" : "This parameter indicates the job Id. job Id is needed to identify and track the status of a job which has been initiated earlier. Ex: jobId=1504011632215", - "required" : true, + "name" : "month", + "in" : "query", + "description" : "This query parameter is used to provide the month details in numeric format", + "required" : false, "type" : "string", - "x-example" : "1234432412312" + "x-example" : "month=5" + }, { + "name" : "year", + "in" : "query", + "description" : "This query parameter is used to provide the year details in numeric format", + "required" : false, + "type" : "string", + "x-example" : "year=2018" } ], "responses" : { "200" : { - "description" : "This response indicates that the status has been returned to the requestor.", + "description" : "This status code indicates that the transaction based license details for the given month has sent successfully as response.", "examples" : { - "application/json" : "{\r\n \"status\": \"Completed\",\r\n \"Filename\": \"default-2017-08-31-1504177207377\"\r\n}" + "application/json" : "{\r\n \"currentUsage\": 111,\r\n \"licenseLimitPerMonth\": 20,\r\n \"pendingQuota\": 0,\r\n \"monthAndYear\": \"5/2018\"\r\n}" } }, "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "500" : { - "description" : "This response indicates that the server has encountered an error while returning the status. " + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to get the transaction based license details." } }, "security" : [ { @@ -1415,25 +1560,25 @@ } ] } }, - "/apitransactions/jobs" : { + "/apitransactions/typedefinitions" : { "get" : { - "description" : "This method returns a list of pending jobs. Every time you initiate archive, restore or purge process you will get the job id as a response. You can then use the specific job id to query the status of the initiated operation. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", - "operationId" : "listAllPendingJobs", + "description" : "Returns the list of runtime event types. The available event types are as follows 1.transactionalEvents 2.monitorEvents 3.errorEvents 4.performanceMetrics 5.threatProtectionEvents 6.lifecycleEvents 7.policyViolationEvents 8.auditLogs 9.applicationlogs. You can use these eventType to scope the archive/purge operation. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", + "operationId" : "getMappings", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This response indicates that the list of in progress job ids has been returned to the requestor.", + "description" : "This response indicates that the list of type definitions has been returned to the requestor.", "examples" : { - "application/json" : "{\r\n \"pendingJobs\": [124234,3312312]\r\n}" + "application/json" : "{\r\n \"Mappings\": [\r\n \"performanceMetrics\",\r\n \"monitorEvents\",\r\n \"transactionalEvents\",\r\n \"policyViolationEvents\",\r\n \"errorEvents\",\r\n \"threatProtectionEvents\",\r\n \"lifecycleEvents\",\r\n \"auditLogs\"\r\n,\r\n \"applicationlogs\"\r\n ]\r\n}" } }, "401" : { "description" : "This response indicates that invalid credentials have been provided for the request." }, "500" : { - "description" : "This response indicates that the server has encountered an error while returning the list of in progress job ids. " + "description" : "This response indicates that the server has encountered an error while returning the list of type definitions. " } }, "security" : [ { @@ -1441,22 +1586,155 @@ } ] } }, - "/is/jndi" : { + "/logAggregation/downloadLogs" : { "get" : { - "description" : "The method retrieves list of all JNDI configurations in API Gateway.", - "operationId" : "listAllJNDI", + "description" : "This resource is used to download logs from different components used by APIGateway, server configurations and thread dumps.", + "operationId" : "downloadLogs", + "consumes" : [ "application/json" ], + "produces" : [ "multipart/form-data" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This response indicates that the logs are downloaded successfully. The response body is the zipped archive." + }, + "400" : { + "description" : "This response indicates that the server has encountered an error while downloading the logs." + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to download the logs." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apitransactions/archives" : { + "get" : { + "description" : "This GET method is used to fetch the details of existing archive files and response of this method would be the list of archive file names. Select one from the list of archive file names returned by this method and use the POST /apitransactions/archives/{fileName} method to restore.The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", + "operationId" : "listAllArchives", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the list of JNDI configurations is successfully retrieved.", + "description" : "This response indicates that the list of archive file names returned successfully. The response body is the list of archive file names.", "examples" : { - "application/json" : "{\r\n \"jndiList\": [\r\n {\r\n \"id\": \"JNDI_AMQP\",\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n },\r\n {\r\n \"id\": \"JNDI_AMQP2\",\r\n \"jndiAliasName\": \"JNDI_AMQP2\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }\r\n ]\r\n}" + "application/json" : "{\r\n \"archiveFiles\": [\r\n \"default-2017-08-29-1504011306456\",\r\n \"default-2017-08-29-1504012415981\"\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "500" : { + "description" : "This response indicates that the server has encountered an error while returning the list of archive file names" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "This method is used to archive the runtime events and metrics. You can additionally scope the archive data using input parameter filters. This method returns the job id as the response which will be used to know the status of the job. \n\nUse the GET /apitransactions/jobs/{jobId} to know the status, file name and use POST /apitransactions/archives/{fileName} method to restore. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", + "operationId" : "apiTransactionsArchiveBasedOnDuration", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "until", + "in" : "query", + "description" : "This is a date parameter. All the specified api transactions until the given date will be purged. Example value: until=2017-12-18 00:00:00. Either one of until or duration is a mandatory parameter", + "required" : true, + "type" : "string", + "x-example" : "until=2017-10-10 00:00:00" + }, { + "name" : "olderThan", + "in" : "query", + "description" : "All the api transactions that are older than the value specified will be purged. Ex: olderThan='2d'. Possible values are d(days),M(months),y(years), lets say a. 2d means 2days b. 1M means 1 month c. 1y means 1 year", + "required" : false, + "type" : "string", + "x-example" : "olderThan=2d" + }, { + "name" : "eventType", + "in" : "query", + "description" : "This parameter is used to specify the api transaction type. Specify eventType=ALL to archive all the events and specify any specific type to archive that particular event type alone. Ex: eventType=transactionalEvents. The available event types are as follows 1.transactionalEvents 2.monitorEvents 3.errorEvents 4.performanceMetrics 5.threatProtectionEvents 6.lifecycleEvents 7.policyViolationEvents 8.auditLogs 9.applicationlogs", + "required" : true, + "type" : "string", + "x-example" : "eventType=ALL" + } ], + "responses" : { + "202" : { + "description" : "This response indicates that the archiving process has been started and returned the jobId to track it further.", + "examples" : { + "application/json" : "{\r\n \"jobId\": \"1504177213671\"\r\n}" + } + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "400" : { + "description" : "This status code indicates that the request URL is not valid." + }, + "500" : { + "description" : "This response indicates that the server has encountered an error while archiving the api transactions. " + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apitransactions/archives/{fileName}" : { + "post" : { + "description" : "This method is used to restore the runtime data by specifying the archive file name. See GET /apitransactions/archives/ to know how to get the existing archive file names for more details. This method returns the job id as a response to track the status further. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", + "operationId" : "restoreData", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "fileName", + "in" : "path", + "description" : "This parameter indicates the file name to restore. Ex: fileName=default-2017-08-29-1504011306456.", + "required" : true, + "type" : "string", + "x-example" : "default-2017-02-09-1486644396751" + } ], + "responses" : { + "202" : { + "description" : "This response indicates that the restore process has been started and returned the jobId to track it further.", + "examples" : { + "application/json" : "{\r\n \"jobId\": \"1504177213671\"\r\n}" + } + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "500" : { + "description" : "This response indicates that the server has encountered an error while restoring the archive file. " + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/is/webServiceEndpoints" : { + "get" : { + "description" : "The method retrieves list of all Webservice endpoints in API Gateway.", + "operationId" : "getAllWebserviceEndpoints", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This status code indicates that the list of Webservice endpoints is successfully retrieved.", + "examples" : { + "application/json" : "{\r\n \"WebserviceEndpointAlias\": [\r\n {\r\n \"id\": \"c00222\",\r\n \"alias\": \"c00222\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n },\r\n {\r\n \"id\": \"c0022\",\r\n \"alias\": \"c0022\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n },\r\n {\r\n \"id\": \"AMQP_PROVIDER_ALIAS\",\r\n \"alias\": \"AMQP_PROVIDER_ALIAS\",\r\n \"description\": \"AMQP_PROVIDER_ALIAS\",\r\n \"aliasType\": \"PROVIDER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"\",\r\n \"keyAlias\": \"\",\r\n \"trustStoreAlias\": \"\",\r\n \"timestampPrecisionInMillis\": \"\",\r\n \"timestampTimeToLive\": \"\",\r\n \"timestampMaximumSkew\": \"\",\r\n \"jmsTriggerName\": \"wm.namespace.ws:wseTrigger_\",\r\n \"deliveryMode\": \"\",\r\n \"timeToLive\": 0,\r\n \"priority\": 0,\r\n \"replyToDestType\": \"\",\r\n \"includeConnFactoryName\": \"true\"\r\n },\r\n {\r\n \"id\": \"c0021272\",\r\n \"alias\": \"c0021272\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n },\r\n {\r\n \"id\": \"c002\",\r\n \"alias\": \"c002\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JNDI\",\r\n \"jndiProvAlias\": \"JNDI_AMQP\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n },\r\n {\r\n \"id\": \"c00214272\",\r\n \"alias\": \"c00214272\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JNDI\",\r\n \"jndiProvAlias\": \"JNDI_AMQP\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }\r\n ]\r\n}" } }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "" } }, "security" : [ { @@ -1464,8 +1742,8 @@ } ] }, "post" : { - "description" : "The method creates a JNDI configuration in API Gateway. The API request body must contain the payload for the JNDI configuration", - "operationId" : "createJNDI", + "description" : "The method creates a Webservice endpoint in API Gateway. The API request body must contain the payload for the Webservice endpoint", + "operationId" : "createWebserviceEndpoint", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -1474,27 +1752,27 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/JNDIProviderAlias" + "$ref" : "#/definitions/WebserviceEndpointAlias" }, "x-examples" : { - "application/json" : "{\"jndiAliasName\":\"JNDIALIAS22\",\"description\":\"new des\",\"initialContextFactory\":\"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"}" + "application/json" : "{\r\n \r\n \"alias\": \"c00222\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }" } } ], "responses" : { "201" : { - "description" : "This status code indicates that the JNDI configuration has been successfully created in API Gateway, and the newly created JNDI configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"jndi\": {\r\n \"id\": \"JNDI_AMQPSample\",\r\n \"jndiAliasName\": \"JNDI_AMQPSample\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }\r\n}" - }, + "description" : "This status code indicates that the Webservice endpoint has been successfully created in API Gateway, and the newly created Webservice endpoint is available in the response body.", "schema" : { - "$ref" : "#/definitions/JNDIProviderAlias" + "$ref" : "#/definitions/WebserviceEndpointAlias" + }, + "examples" : { + "application/json" : "{\r\n \"WebserviceEndpointAlias\": {\r\n \"id\": \"c001\",\r\n \"alias\": \"c001\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }\r\n}" } }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, "400" : { - "description" : "This status code indicates that the JNDI configuration with the given name already exists in API Gateway or the request body is not correct.", + "description" : "This status code indicates that the Webservice endpoint with the given name already exists in API Gateway or the request body is not correct.", "examples" : { "application/json" : "{}" } @@ -1505,8 +1783,8 @@ } ] }, "put" : { - "description" : "This REST service is used to update the JNDI configuration", - "operationId" : "updateJNDI", + "description" : "This REST service is used to update the Webservice endpoint", + "operationId" : "updateWebserviceEndpoint", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -1515,20 +1793,20 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/JNDIProviderAlias" + "$ref" : "#/definitions/WebserviceEndpointAlias" }, "x-examples" : { - "application/json" : "{\r\n \"id\": \"JNDI_AMQP\",\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }" + "application/json" : "{\r\n \"id\": \"c001\",\r\n \"alias\": \"c001\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }" } } ], "responses" : { "200" : { - "description" : "This status code indicates that API Gateway has successfully updated the specified JNDI configuration and the updated JNDI configuration details can be found in the response body", - "examples" : { - "application/json" : "{\r\n \"jndi\": {\r\n \"id\": \"JNDI_AMQP\",\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }\r\n}" - }, + "description" : "This status code indicates that API Gateway has successfully updated the specified Webservice endpoint and the updated Webservice endpoint details can be found in the response body", "schema" : { - "$ref" : "#/definitions/JNDIProviderAlias" + "$ref" : "#/definitions/WebserviceEndpointAlias" + }, + "examples" : { + "application/json" : "{\r\n \"WebserviceEndpointAlias\": {\r\n \"id\": \"c001\",\r\n \"alias\": \"c001\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }\r\n}" } }, "401" : { @@ -1537,7 +1815,7 @@ "400" : { "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"Unable to create or update JNDI settings. providerURL should not be null\"\r\n}" + "application/json" : "" } } }, @@ -1546,32 +1824,38 @@ } ] } }, - "/is/jndi/{jndiId}" : { + "/is/webServiceEndpoints/{webserviceEndpointId}" : { "get" : { - "description" : "The method retrieves the specified JNDI configuration in API Gateway.", - "operationId" : "listJNDI", + "description" : "The method retrieves the specified Webservice endpoint in API Gateway.", + "operationId" : "getWebserviceEndpoint", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "jndiId", + "name" : "webserviceEndpointId", "in" : "path", - "description" : "This path parameter is used to specify the JNDI configuration id which JNDI configuration needs to be retrived.", + "description" : "This path parameter is used to specify the Webservice endpoint id which Webservice endpoint needs to be retrived.", "required" : true, "type" : "string", - "x-example" : "sampleJNDI" + "x-example" : "sampleEndpoint" } ], "responses" : { "200" : { - "description" : "This status code indicates that the specified JNDI configuration is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"jndi\": {\r\n \"id\": \"JNDI_AMQP\",\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }\r\n}" - }, + "description" : "This status code indicates that the specified Webservice endpoint is successfully retrieved.", "schema" : { - "$ref" : "#/definitions/JNDIProviderAlias" + "$ref" : "#/definitions/WebserviceEndpointAlias" + }, + "examples" : { + "application/json" : "{\r\n \"WebserviceEndpointAlias\": {\r\n \"id\": \"c001\",\r\n \"alias\": \"c001\",\r\n \"description\": \"des\",\r\n \"aliasType\": \"CONSUMER\",\r\n \"transportType\": \"JMS\",\r\n \"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n \"keyAlias\": \"ssos\",\r\n \"trustStoreAlias\": \"DEFAULT_IS_TRUSTSTORE\",\r\n \"timestampPrecisionInMillis\": \"false\",\r\n \"timestampTimeToLive\": \"123\",\r\n \"timestampMaximumSkew\": \"1234\",\r\n \"executeACL\": \"Default\",\r\n \"jmsAliasType\": \"JMS\",\r\n \"jndiProvAlias\": \"\",\r\n \"connFactoryName\": \"qpidConnectionFactory\",\r\n \"jmsConnAlias\": \"JMS_CONN\",\r\n \"user\": \"user\",\r\n \"password\": \"password\"\r\n }\r\n}" } }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the Webservice endpoint id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Exception occured : The Webservice endpoint object with the given ID: Consumer123 couldn't found\"\r\n}" + } } }, "security" : [ { @@ -1579,27 +1863,27 @@ } ] }, "delete" : { - "description" : "This delete request will delete the JNDI configuration based on the JNDI id which is specified in path", - "operationId" : "deleteJNDI", + "description" : "This delete request will delete the Webservice endpoint based on the Webservice endpoint id which is specified in path", + "operationId" : "deleteWebserviceEndpoint", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "jndiId", + "name" : "webserviceEndpointId", "in" : "path", - "description" : "This path parameter is used to specify the JNDI id for which JNDI configuration needs to deleted.", + "description" : "This path parameter is used to specify the Webservice endpoint id for which Webservice endpoint needs to deleted.", "required" : true, "type" : "string", - "x-example" : "sampleJNDI" + "x-example" : "sampleEndpoint" } ], "responses" : { - "204" : { - "description" : "This status code indicates that the specified JNDI configuration is successfully deleted" + "200" : { + "description" : "" }, "401" : { "description" : "This status code indicates either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to delete the assertion." }, "404" : { - "description" : "This status code indicates that the corresponding JNDI id does not exist", + "description" : "This status code indicates that the corresponding Webservice endpoint id does not exist", "examples" : { "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" } @@ -1610,57 +1894,72 @@ } ] } }, - "/is/jndi/{jndiId}/test" : { + "/configurations/loadBalancer" : { "get" : { - "description" : "The method is to test the given JNDI configuration in API Gateway.", - "operationId" : "testJNDI", + "description" : "The method retrieves the details of the Load Balancer configuration in API Gateway.", + "operationId" : "getLoadBalancers", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "jndiId", - "in" : "path", - "required" : true, - "type" : "string", - "x-example" : "sampleJNDI" - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that test result of the given JNDI configuration is successfully returned.", - "examples" : { - "application/json" : "{\r\n \"jndiTest\": {\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"messages\": \"Test lookup successful\",\r\n \"test\": \"success\",\r\n \"jndiLookupData\": [\r\n \"dynamicQueues: org.apache.qpid.jms.jndi.JmsInitialContextFactory$1\",\r\n \"dynamicTopics: org.apache.qpid.jms.jndi.JmsInitialContextFactory$2\",\r\n \"qpidConnectionFactory: org.apache.qpid.jms.JmsConnectionFactory\"\r\n ]\r\n }\r\n}" + "description" : "This status code indicates that the Load Balancer configurations are retrieved successfully. ", + "schema" : { + "$ref" : "#/definitions/LoadBalancer" + }, + "examples" : { + "application/json" : "{\r\n \"webAppUrl\": \"\",\r\n \"httpUrls\": [\r\n \"http://localhost:8080\"\r\n ],\r\n \"httpsUrls\": [\r\n \"https://localhost:443\"\r\n ],\r\n \"websocketUrls\": []\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that the loadBalancer not mentioned in API access uri path.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"Missing mandatory field configId in request.\"\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Load Balancer configuration." } }, "security" : [ { "Basic" : [ ] } ] - } - }, - "/is/jndi/template" : { - "get" : { - "description" : "The method retrieves list of all JNDI templates in API Gateway.", - "operationId" : "fetchJNDITemplates", + }, + "put" : { + "description" : "The method is used to update the details of the load Balancer configuration in API Gateway.", + "operationId" : "saveLoadBalancers", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "jndiId", - "in" : "path", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "string", - "x-example" : "sampleJNDI" + "schema" : { + "$ref" : "#/definitions/LoadBalancer" + }, + "x-examples" : { + "application/json" : "{\r\n \"webAppUrl\": \"\",\r\n \"httpUrls\": [\r\n \"http://localhost:8080\"\r\n ],\r\n \"httpsUrls\": [\r\n \"https://localhost:443\"\r\n ],\r\n \"websocketUrls\": []\r\n}" + } } ], "responses" : { "200" : { - "description" : "This status code indicates that the list of JNDI templates is successfully retrieved.", + "description" : "This status code indicates that the Load Balancer configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", + "schema" : { + "$ref" : "#/definitions/LoadBalancer" + }, "examples" : { - "application/json" : "{\r\n \"jndiTemplates\": [\r\n {\r\n \"name\": \"Broker\",\r\n \"context\": \"com.webmethods.jms.naming.WmJmsNamingCtxFactory\",\r\n \"url\": \"wmjmsnaming://@:6849\",\r\n \"otherProps\": \"com.webmethods.jms.naming.clientgroup=admin\"\r\n },\r\n {\r\n \"name\": \"UM\",\r\n \"context\": \"com.pcbsys.nirvana.nSpace.NirvanaContextFactory\",\r\n \"url\": \"nsp://:9000/\",\r\n \"otherProps\": \"\"\r\n },\r\n {\r\n \"name\": \"file system\",\r\n \"context\": \"com.sun.jndi.fscontext.RefFSContextFactory\",\r\n \"url\": \"file:/\",\r\n \"otherProps\": \"\"\r\n },\r\n {\r\n \"name\": \"LDAP\",\r\n \"context\": \"com.sun.jndi.ldap.LdapCtxFactory\",\r\n \"url\": \"ldap://:389\",\r\n \"otherProps\": \"\"\r\n },\r\n {\r\n \"name\": \"JBoss\",\r\n \"context\": \"org.jnp.interfaces.NamingContextFactory\",\r\n \"url\": \"jnp://:1099\",\r\n \"otherProps\": \"java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces\"\r\n },\r\n {\r\n \"name\": \"WebLogic\",\r\n \"context\": \"weblogic.jndi.WLInitialContextFactory\",\r\n \"url\": \"t3://:7001\",\r\n \"otherProps\": \"\"\r\n }\r\n ]\r\n}" + "application/json" : "{\r\n \"webAppUrl\": \"\",\r\n \"httpUrls\": [\r\n \"http://localhost:8080\"\r\n ],\r\n \"httpsUrls\": [\r\n \"https://localhost:443\"\r\n ],\r\n \"websocketUrls\": []\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage General Administration\" functional privilege to access this API." + }, + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -1668,127 +1967,63 @@ } ] } }, - "/is/truststore" : { + "/configurations/whiteListedIPs" : { "get" : { - "description" : "Retrieves all available truststores from API Gateway.", - "operationId" : "getTruststores", + "description" : "The method retrieves the details of the whitelisted IPs configuration in API Gateway.", + "operationId" : "getWhiteListedIPs", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that all trust stores have been successfully fetched from API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"truststores\": [{\r\n\t\t\"id\": \"Truststore2\",\r\n\t\t\"keyStoreName\": \"Truststore2\",\r\n\t\t\"keyStoreDescription\": \"Some sample description for truststore.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.Truststore2\",\r\n\t\t\"keyStoreLocation\": null,\r\n\t\t\"certficateAliases\": [\"10.21.38.112\", \"10.60.33.18\", \"10.60.37.86\"],\r\n\t\t\"isLoaded\": true,\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAAEAAAAAgAIbWNkc2FuMDIAAAFdsV3/PwAFWC41MDkAAAOlMIIDoTCCAomgAwIBAgIEVRJWFTANBgkqhkiG9w0BAQQFADCBgDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURlRxqzR24p9unbAbjpEAlgBgiJvUAB2KKnpkRJRhS8Ae2cOC7vgMcc6r9S/cfWNnaHYcU6wqWlat+8BWh15ZyETKCnHPwOEsBZ181YLjSznzWE7Sjl887cenULQDK55HMtyF/BEwPqQH6SGGMw4WnhbEPeyNzhMrsOpM/Y6Nbx4AJ0YjbU5jA4Igw4OPRDw4z9kXgWNrjd+nwnuQmMPwaRgwmJXQQ52NC2ccTOeZ1NeXNAsqdGNXnJ6Jzb0Ge1HYRlvQ4SDj40ZRhfLOuCdbk=\",\r\n\t\t\"uploadFileName\": \"truststore2.jks\",\r\n\t\t\"isWarning\": false,\r\n\t\t\"message\": null\r\n\t}]\r\n}" - }, + "description" : "This status code indicates that the whitelistedIPs configurations are retrieved successfully.", "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/TrustStore" - } + "$ref" : "#/definitions/WhiteListedIPs" + }, + "examples" : { + "application/json" : "{\r\n \"privateIPs\": [\r\n \"127.0.0.1\",\r\n \"10.0.0.0/8\",\r\n \"172.16.0.0/12\",\r\n \"192.168.0.0/16\"\r\n ]\r\n}" } }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while retrieving the available truststores from API Gateway." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the whitelistedIPs configuration." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "Creates a truststore in API Gateway.", - "operationId" : "createTruststore", - "consumes" : [ "multipart/form-data" ], + "put" : { + "description" : "The method is used to update the details of the whitelisted IPs configuration in API Gateway.", + "operationId" : "saveWhitelistedIPs", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "keyStoreName", - "in" : "formData", - "description" : "The name of the truststore. It cannot contain spaces or special characters. The name of the trust store must be unique across all the truststores created in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "TruststoreSampleName" - }, { - "name" : "keyStoreDescription", - "in" : "formData", - "description" : "The description for the truststore.", - "required" : false, - "type" : "string", - "x-example" : "Sample description for the truststore." - }, { - "name" : "keyStoreType", - "in" : "formData", - "description" : "The certificate file format of the truststore.", - "required" : true, - "type" : "string", - "default" : "JKS", - "x-example" : "JKS", - "enum" : [ "JKS" ] - }, { - "name" : "keyStoreProvider", - "in" : "formData", - "description" : "The provider that is used for the truststore type.", - "required" : true, - "type" : "string", - "default" : "SUN", - "x-example" : "SUN", - "enum" : [ "SUN" ] - }, { - "name" : "keyStorePassword", - "in" : "formData", - "description" : "The truststore password that is defined at the time of truststore creation using a keystore utility.", - "required" : true, - "type" : "string", - "x-example" : "truststore_password" - }, { - "name" : "uploadFileName", - "in" : "formData", - "description" : "The name of the truststore file that will be used to save the truststore internally in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "truststore_file.jks" - }, { - "name" : "fileContent", - "in" : "formData", - "description" : "The contents of the truststore file.", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "file" + "schema" : { + "$ref" : "#/definitions/WhiteListedIPs" + }, + "x-examples" : { + "application/json" : "{\r\n \"privateIPs\": [\r\n \"127.0.0.1\",\r\n \"10.0.0.0/8\",\r\n \"172.16.0.0/12\",\r\n \"192.168.0.0/16\"\r\n ]\r\n}" + } } ], "responses" : { "200" : { - "description" : "This status code indicates that the truststore has been successfully created in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"id\": \"Truststore2\",\r\n\t\"keyStoreName\": \"Truststore2\",\r\n\t\"keyStoreDescription\": null,\r\n\t\"keyStoreType\": \"JKS\",\r\n\t\"keyStoreProvider\": \"SUN\",\r\n\t\"keyStorePassword\": \"wm.security.keystore.Truststore2\",\r\n\t\"keyStoreLocation\": null,\r\n\t\"certficateAliases\": [\"10.21.38.112\", \"10.60.33.18\", \"10.60.37.86\"],\r\n\t\"isLoaded\": true,\r\n\t\"fileContent\": \"/u3+7QAAAAIAAAAEAAAAAgAIbWNkc2FuMDIAAAFdsV3/PwAFWC41MDkAAAOlMIIDoTCCAomgAwIBAgIEVRJWFTANBgkqhkiG9w0BAQQFADCBgDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURlRxqzR24p9unbAbjpEAlgBgiJvUAB2KKnpkRJRhS8Ae2cOC7vgMcc6r9S/cfWNnaHYcU6wqWlat+8BWh15ZyETKCnHPwOEsBZ181YLjSznzWE7Sjl887cenULQDK55HMtyF/BEwPqQH6SGGMw4WnhbEPeyNzhMrsOpM/Y6Nbx4AJ0YjbU5jA4Igw4OPRDw4z9kXgWNrjd+nwnuQmMPwaRgwmJXQQ52NC2ccTOeZ1NeXNAsqdGNXnJ6Jzb0Ge1HYRlvQ4SDj40ZRhfLOuCdbk=\",\r\n\t\"uploadFileName\": \"truststore2.jks\",\r\n\t\"isWarning\": false,\r\n\t\"message\": null\r\n}" - }, + "description" : "This status code indicates that the whitelisted IPs configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/TrustStore" + "$ref" : "#/definitions/WhiteListedIPs" + }, + "examples" : { + "application/json" : "{\r\n \"privateIPs\": [\r\n \"127.0.0.1\",\r\n \"10.0.0.0/8\",\r\n \"172.16.0.0/12\",\r\n \"192.168.0.0/16\"\r\n ]\r\n}" } }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage General Administration\" functional privilege to access this API." }, - "500" : { - "description" : "This status code indicates an error occurred while persisting the truststore in API Gateway." + "400" : { + "description" : "This status code indicates that the request body is invalid." } }, "security" : [ { @@ -1796,169 +2031,69 @@ } ] } }, - "/is/truststore/{trustStoreName}" : { + "/configurations/apiCallBackSettings" : { "get" : { - "description" : "Retrieves an existing truststore matching the given name from API Gateway.", - "operationId" : "getTruststore", + "description" : "This method retrieves the API callback processor settings from API Gateway.", + "operationId" : "getAPICallbackProcessorSettings", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "trustStoreName", - "in" : "path", - "description" : "Truststore name to identify the corresponding trust store in API Gateway", - "required" : true, - "type" : "string", - "x-example" : "DEFAULT_IS_TRUSTSTORE" - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the truststore has been successfully retrieved from API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"truststores\": [{\r\n\t\t\"id\": \"Truststore2\",\r\n\t\t\"keyStoreName\": \"Truststore2\",\r\n\t\t\"keyStoreDescription\": \"Some sample description for truststore.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.Truststore2\",\r\n\t\t\"keyStoreLocation\": null,\r\n\t\t\"certficateAliases\": [\"10.21.38.112\", \"10.60.33.18\", \"10.60.37.86\"],\r\n\t\t\"isLoaded\": true,\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAAEAAAAAgAIbWNkc2FuMDIAAAFdsV3/PwAFWC41MDkAAAOlMIIDoTCCAomgAwIBAgIEVRJWFTANBgkqhkiG9w0BAQQFADCBgDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURlRxqzR24p9unbAbjpEAlgBgiJvUAB2KKnpkRJRhS8Ae2cOC7vgMcc6r9S/cfWNnaHYcU6wqWlat+8BWh15ZyETKCnHPwOEsBZ181YLjSznzWE7Sjl887cenULQDK55HMtyF/BEwPqQH6SGGMw4WnhbEPeyNzhMrsOpM/Y6Nbx4AJ0YjbU5jA4Igw4OPRDw4z9kXgWNrjd+nwnuQmMPwaRgwmJXQQ52NC2ccTOeZ1NeXNAsqdGNXnJ6Jzb0Ge1HYRlvQ4SDj40ZRhfLOuCdbk=\",\r\n\t\t\"uploadFileName\": \"truststore2.jks\",\r\n\t\t\"isWarning\": false,\r\n\t\t\"message\": null\r\n\t}]\r\n}" - }, + "description" : "This status code indicates that the API callback processor settings is successfully retrieved from API Gateway.", "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/TrustStore" - } + "$ref" : "#/definitions/CallbackProcessorSettings" + }, + "examples" : { + "application/json" : "{\r\n \"configuration\": {\r\n \"processCallbackRequests\": true,\r\n \"allowCallBackRequestsHTTPsAccessOnly\": true,\r\n \"allowCallbackRequestAccessToAllowedIPs\": false,\r\n \"allowedIPs\": []\r\n }\r\n}" } }, "400" : { - "description" : "This status code indicates invalid request or bad input." + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: apiCallBackSettings.\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while retrieving the truststore from API Gateway." + "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to retrieve API callback processor settings." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "Updates an already existing truststore in API Gateway.", - "operationId" : "updateTruststore", - "consumes" : [ "multipart/form-data" ], + "put" : { + "description" : "This method updates or creates API callback processor settings in API Gateway. The user should have Manage general administration configurations privilege to update the API callback processor settings.", + "operationId" : "saveAPICallbackProcessorSettings", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "trustStoreName", - "in" : "path", - "description" : "The name of the truststore. It cannot contain spaces or special characters. The name of the trust store must be unique across all the truststores created in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "TruststoreSampleName" - }, { - "name" : "keyStoreDescription", - "in" : "formData", - "description" : "The description for the truststore.", - "required" : false, - "type" : "string", - "x-example" : "Sample description for the truststore." - }, { - "name" : "keyStoreType", - "in" : "formData", - "description" : "The certificate file format of the truststore.", - "required" : true, - "type" : "string", - "default" : "JKS", - "x-example" : "JKS", - "enum" : [ "JKS" ] - }, { - "name" : "keyStoreProvider", - "in" : "formData", - "description" : "The provider that is used for the truststore type.", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "string", - "default" : "SUN", - "x-example" : "SUN", - "enum" : [ "SUN" ] - }, { - "name" : "keyStorePassword", - "in" : "formData", - "description" : "The truststore password that is defined at the time of truststore creation using a keystore utility.", - "required" : true, - "type" : "string", - "x-example" : "truststore_password" - }, { - "name" : "uploadFileName", - "in" : "formData", - "description" : "The name of the truststore file that will be used to save the truststore internally in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "truststore_file.jks" - }, { - "name" : "fileContent", - "in" : "formData", - "description" : "The contents of the truststore file.", - "required" : true, - "type" : "file" + "schema" : { + "$ref" : "#/definitions/CallbackProcessorSettings" + }, + "x-examples" : { + "application/json" : "{\r\n \"configuration\": {\r\n \"processCallbackRequests\": true,\r\n \"allowCallBackRequestsHTTPsAccessOnly\": true,\r\n \"allowCallbackRequestAccessToAllowedIPs\": false,\r\n \"allowedIPs\": []\r\n }\r\n}" + } } ], "responses" : { "200" : { - "description" : "This status code indicates that the truststore has been successfully updated in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"id\": \"Truststore2\",\r\n\t\"keyStoreName\": \"Truststore2\",\r\n\t\"keyStoreDescription\": null,\r\n\t\"keyStoreType\": \"JKS\",\r\n\t\"keyStoreProvider\": \"SUN\",\r\n\t\"keyStorePassword\": \"wm.security.keystore.Truststore2\",\r\n\t\"keyStoreLocation\": null,\r\n\t\"certficateAliases\": [\"10.21.38.112\", \"10.60.33.18\", \"10.60.37.86\"],\r\n\t\"isLoaded\": true,\r\n\t\"fileContent\": \"/u3+7QAAAAIAAAAEAAAAAgAIbWNkc2FuMDIAAAFdsV3/PwAFWC41MDkAAAOlMIIDoTCCAomgAwIBAgIEVRJWFTANBgkqhkiG9w0BAQQFADCBgDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURlRxqzR24p9unbAbjpEAlgBgiJvUAB2KKnpkRJRhS8Ae2cOC7vgMcc6r9S/cfWNnaHYcU6wqWlat+8BWh15ZyETKCnHPwOEsBZ181YLjSznzWE7Sjl887cenULQDK55HMtyF/BEwPqQH6SGGMw4WnhbEPeyNzhMrsOpM/Y6Nbx4AJ0YjbU5jA4Igw4OPRDw4z9kXgWNrjd+nwnuQmMPwaRgwmJXQQ52NC2ccTOeZ1NeXNAsqdGNXnJ6Jzb0Ge1HYRlvQ4SDj40ZRhfLOuCdbk=\",\r\n\t\"uploadFileName\": \"truststore2.jks\",\r\n\t\"isWarning\": false,\r\n\t\"message\": null\r\n}" - }, + "description" : "This status code indicates that the API callback processor settings has been successfully updated in API Gateway, and the updated list of API callback processor settings is available in the response body.", "schema" : { - "$ref" : "#/definitions/TrustStore" + "$ref" : "#/definitions/CallbackProcessorSettings" + }, + "examples" : { + "application/json" : "{\r\n \"configuration\": {\r\n \"processCallbackRequests\": true,\r\n \"allowCallBackRequestsHTTPsAccessOnly\": true,\r\n \"allowCallbackRequestAccessToAllowedIPs\": false,\r\n \"allowedIPs\": []\r\n }\r\n}" } }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while persisting the truststore in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "Deletes an already existing truststore matching the name in API Gateway.", - "operationId" : "deleteTruststore", - "parameters" : [ { - "name" : "trustStoreName", - "in" : "path", - "description" : "Truststore name to identify the corresponding trust store to delete in API Gateway", - "required" : true, - "type" : "string", - "x-example" : "DEFAULT_IS_TRUSTSTORE" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the trust store has been successfully deleted from API Gateway." + "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to update API callback processor settings." }, "400" : { - "description" : "This status code indicates invalid request or bad input." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while retrieving the truststore from API Gateway." + "description" : "This status code indicates that the the user sends an empty or invalid JSON payload." } }, "security" : [ { @@ -1966,34 +2101,37 @@ } ] } }, - "/licenseNotificationCriteria" : { + "/configurations/settings" : { "get" : { - "description" : "Transaction based license notification criteria are like a usage checkpoint and whenever usage reaches to that checkpoint, a notification will be generated. This GET method returns the existing transaction based license notification criteria's as a response.The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", - "operationId" : "getAllNotificationCriteria", + "description" : "This method retrieves the list of extended settings and watt properties from API Gateway.", + "operationId" : "getSettings", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This response indicates that the list of notification criteria's has been returned successfully. The response body is the list of notification criteria's.", + "description" : "This status code indicates that the list of extended settings and watt properties are successfully retrieved from API Gateway.", + "schema" : { + "$ref" : "#/definitions/ExtendedSettingsOutput" + }, "examples" : { - "application/json" : "{\r\n \"notificationCriteriaList\": [\r\n {\r\n \"id\": \"1503882085022\",\r\n \"user\": \"admin\",\r\n \"notifyAt\": 100,\r\n \"notificationType\": \"UI-notification\",\r\n \"creationDate\": \"1503560319396\",\r\n \"defaultNotificationCriteria\": true\r\n },\r\n {\r\n \"id\": \"1503882084702\",\r\n \"user\": \"admin\",\r\n \"notifyAt\": 90,\r\n \"notificationType\": \"UI-notification\",\r\n \"creationDate\": \"1503560319260\",\r\n \"defaultNotificationCriteria\": true\r\n }\r\n ],\r\n \"result\": \"success\"\r\n}" + "application/json" : "{\r\n \"preferredSettings\": {\r\n \"wattKeys\": {},\r\n \"extendedKeys\": {\r\n \"allowExceedMaxWindowSize\": \"true\"\r\n }\r\n },\r\n \"allSettings\": {\r\n \"wattKeys\": {\r\n \"watt.server.http.allowOptions\": \"true\",\r\n \"watt.server.coder.responseAsXML\": \"false\",\r\n \"watt.server.SoapRPC.checkHeaders\": \"true\",\r\n \"watt.server.ws.responseTNS.from.request\": \"false\",\r\n \"watt.server.brokerTransport.dur\": \"60\"\r\n },\r\n \"extendedKeys\": {\r\n \"allowExceedMaxWindowSize\": \"true\",\r\n \"saveAuditlogsWithPayload\": \"true\",\r\n \"apig_schemaValidationPoolSize\": \"10\",\r\n \"apig_MENConfiguration_tickInterval\": \"60\",\r\n \"pg_JWT_isHTTPS\": \"true\"\r\n\t}\r\n }\r\n}" } }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." + "400" : { + "description" : "This status code indicates that the provided configuration id is invalid." }, - "500" : { - "description" : "This response indicates that the server has encountered an error while fetching the list of notification criteria's" + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to retrieve extended and watt settings." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "Transaction based license(TBL) notification criteria is used to monitor the API Gateway usage. API Gateway TBL will have the the permitted invocations per month defined in the license file and if user want to get notified when usage reaches to some point before it breaches the license limit, then user has to add a notification criteria by mentioning the usage point and notification will be generated when usage reaches to that point. This POST method is used to create transaction based license notification criteria in API Gateway. The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", - "operationId" : "saveNotificationCriteria", + "put" : { + "description" : "This method updates or creates a list of extended settings and watt properties in API Gateway. The user should have an API Gateway administrator access to update thse settings. The user needs to send only the modified settings i.e, 'preferredSettings', in the payload.", + "operationId" : "saveSettings", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -2002,24 +2140,56 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/NotificationCriteria" + "$ref" : "#/definitions/ExtendedSettingsInput" }, "x-examples" : { - "application/json" : "{\"notificationCriteria\":{\"user\":\"admin\",\"notifyAt\":\"70\",\"email\":\"sss@sag.com\",\"notificationType\":\"both\"}}" + "application/json" : "{\r\n\t\"preferredSettings\": {\r\n\t\t\"wattKeys\": {\r\n\t\t\"watt.net.timeout\": \"300\",\r\n\t\t\"watt.server.oauth.authCode.expirySeconds\": \"600\"\r\n\t},\r\n\t\"extendedKeys\": {\r\n\t\t\"pg_oauth2_isHTTPS\": \"false\"\r\n\t}\r\n\t}}" } } ], "responses" : { - "201" : { - "description" : "This response indicates that the notification criteria has been created successfully.", + "200" : { + "description" : "This status code indicates that the list of extended settings and watt properties has been successfully updated in API Gateway.", + "schema" : { + "$ref" : "#/definitions/ExtendedSettingsOutput" + }, "examples" : { - "application/json" : "{\r\n \"notificationCriteriaResponse\": \"license notificationCriteria created successfully\"\r\n}" + "application/json" : "{\r\n \"preferredSettings\": {\r\n \"wattKeys\": {},\r\n \"extendedKeys\": {\r\n \"allowExceedMaxWindowSize\": \"true\"\r\n }\r\n },\r\n \"allSettings\": {\r\n \"wattKeys\": {\r\n \"watt.server.http.allowOptions\": \"true\",\r\n \"watt.server.coder.responseAsXML\": \"false\",\r\n \"watt.server.SoapRPC.checkHeaders\": \"true\",\r\n \"watt.server.ws.responseTNS.from.request\": \"false\",\r\n \"watt.server.brokerTransport.dur\": \"60\"\r\n },\r\n \"extendedKeys\": {\r\n \"allowExceedMaxWindowSize\": \"true\",\r\n \"saveAuditlogsWithPayload\": \"true\",\r\n \"apig_schemaValidationPoolSize\": \"10\",\r\n \"apig_MENConfiguration_tickInterval\": \"60\",\r\n \"pg_JWT_isHTTPS\": \"true\"\r\n\t}\r\n }\r\n}" } }, "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." + "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to update extended and watt settings." }, - "500" : { - "description" : "This response indicates that the server has encountered an error while creating the notification criteria" + "400" : { + "description" : "This status code indicates that the the user sends an empty or invalid JSON payload." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/configurations/errorProcessing" : { + "get" : { + "description" : "This REST method is used to get the configured error template and the value of the property - sendNativeProviderFault,which enables the server to forward the native error as it is.", + "operationId" : "getErrorProcessingDetails", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This response returns the current fault message templates and the native fault configuration", + "schema" : { + "$ref" : "#/definitions/ErrorProcessing" + }, + "examples" : { + "application/json" : "{\r\n \"sendNativeProviderFault\": \"false\",\r\n \"defaultErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION.\",\r\n \"fallbackErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicates the request payload is not correct and corresponding error details can be seen in the response body" + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." } }, "security" : [ { @@ -2027,8 +2197,8 @@ } ] }, "put" : { - "description" : "This PUT method is used to update the existing transaction based license notification criteria in API Gateway.The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", - "operationId" : "updateNotificationCriteria", + "description" : "This REST method is used to update the default error template with any custom templates and the value of the property - sendNativeProviderFault.", + "operationId" : "saveErrorProcessingDetails", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -2037,24 +2207,27 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/NotificationCriteria" + "$ref" : "#/definitions/ErrorProcessing" }, "x-examples" : { - "application/json" : "{\"notificationCriteria\":{\"id\":\"123\",\"notifyAt\":\"70\",\"email\":\"sss@sag.com\",\"notificationType\":\"both\"}}" + "application/json" : "{\r\n \"sendNativeProviderFault\": \"false\",\r\n \"defaultErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION.\",\r\n \"fallbackErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This response indicates that the notification criteria has been updated successfully.", + "description" : "This status code indicates that API Gateway has successfully updated the API Fault template and the updated template can be found in the response body", + "schema" : { + "$ref" : "#/definitions/ErrorProcessing" + }, "examples" : { - "application/json" : "{\r\n \"notificationCriteriaResponse\": \"license notificationCriteria updated sucessfully\"\r\n}" + "application/json" : "{\r\n \"sendNativeProviderFault\": \"false\",\r\n \"defaultErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION.\",\r\n \"fallbackErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION\"\r\n}" } }, "401" : { "description" : "This response indicates that invalid credentials have been provided for the request." }, - "500" : { - "description" : "This response indicates that the server has encountered an error while updating the notification criteria" + "400" : { + "description" : "This status code indicates the request payload is not correct and corresponding error details can be seen in the response body" } }, "security" : [ { @@ -2062,63 +2235,72 @@ } ] } }, - "/licenseNotificationCriteria/{notificationCriteriaId}" : { + "/configurations/keystore" : { "get" : { - "description" : "The GET method returns the transaction based license notification criteria based on the id. \n\nTransaction based license notification criteria is like a usage check point whenever usage reaches to that check point user will get notified by the notification.The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", - "operationId" : "getNotificationCriteria", + "description" : "The method retrieves the details of the default keystore, truststore and alias settings in API Gateway. You might want to configure API Gateway to refer to a default keystore, truststore, or both, before deploying any SOAP message flows that require signature, encryption, X.509 authentication, and so on, as configured in the Inbound Authentication - Message policy. The default keystore and truststore are that you want API Gateway to use for the incoming secured messages", + "operationId" : "getKeyStoreTrustore", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "notificationCriteriaId", - "in" : "path", - "description" : "This parameter indicates the notification criteria id to fetch the notification criteria", - "required" : true, - "type" : "string", - "x-example" : "12334" - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This response indicates that the notification criteria has been returned successfully. The response body is the notification criteria.", + "description" : "This status code indicates that the default keystore, truststore and alias configurations are retrieved successfully. ", + "schema" : { + "$ref" : "#/definitions/KeystoreTruststore" + }, "examples" : { - "application/json" : "{\"notificationCriteria\":{\"id\":\"2423422\",\"user\":\"admin\",\"notifyAt\":\"70\",\"email\":\"sss@sag.com\",\"notificationType\":\"both\"}}" + "application/json" : "{\r\n\t\"keystoreName\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\"signingAlias\": \"ssos\",\r\n\t\"truststoreName\": \"DEFAULT_IS_TRUSTSTORE\"\r\n}" } }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." + "400" : { + "description" : "This status code indicates that the keystore not mentioned in API access uri path.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"Missing mandatory field configId in request.\"\r\n}" + } }, - "500" : { - "description" : "This response indicates that the server has encountered an error while fetching the the notification criteria" + "401" : { + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving this configuration." } }, "security" : [ { "Basic" : [ ] } ] }, - "delete" : { - "description" : "This method deletes the transaction based license notification criteria based on the id. The user should be part of API-Gateway-Administrators group or else should have 'manage administration configurations' privilege to add notification criteria.", - "operationId" : "deleteNotificationCriteria", + "put" : { + "description" : "The method is used to update the details of the default keystore, truststore and alias configuration in API Gateway.", + "operationId" : "saveKeystoreTruststore", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "notificationCriteriaId", - "in" : "path", - "description" : "This parameter indicates the notification criteria id to purge the notification criteria", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "string", - "x-example" : "12334" + "schema" : { + "$ref" : "#/definitions/KeystoreTruststore" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"keystoreName\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\"signingAlias\": \"ssos\",\r\n\t\"truststoreName\": \"DEFAULT_IS_TRUSTSTORE\"\r\n}" + } } ], "responses" : { - "204" : { - "description" : "This response indicates that the transaction based license notification criteria deleted successfully." + "200" : { + "description" : "This status code indicates that the default keystore, truststore and alias configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", + "schema" : { + "$ref" : "#/definitions/KeystoreTruststore" + }, + "examples" : { + "application/json" : "{\r\n \"configId\": \"keystore\",\r\n \"keystoreName\": \"DEFAULT_IS_KEYSTORE\",\r\n \"signingAlias\": \"ssos\",\r\n \"truststoreName\": \"DEFAULT_IS_TRUSTSTORE\"\r\n}" + } }, "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage security configurations\" functional privilege to access this API." }, "400" : { - "description" : "This status code indicates that the request URL is not valid." - }, - "500" : { - "description" : "This response indicates that the server has encountered an error while purging the notification criteria. " + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -2126,157 +2308,157 @@ } ] } }, - "/urlaliases" : { + "/configurations/gatewayDestinationConfig" : { "get" : { - "description" : "Retrieves all URL Aliases or a URL Alias with a particular ID in API Gateway (if the query parameter alias is provided).", - "operationId" : "getURLALias", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "alias", - "in" : "query", - "description" : "The name of the URL alias to be retrieved. If this query parameter is provided, then it retrieves the URL Aliases identified by the given alias.", - "required" : false, - "type" : "string", - "x-example" : "SampleAlias" - } ], + "description" : "The method retrieves the details of the API Gateway destination. API Gateway can publish runtime events(example: policy violation, log invocation, error events etc), design time events (example: audit log events) and metrics data. By default, error events, lifecycle events, policy violation event, audit logs and performance data are published to API Gateway.", + "operationId" : "getGatewayAsDestination", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the fetching of the requested URL alias(es) from API Gateway have been successful.", + "description" : "This status code indicates that the API Gateway destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to API Gateway destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to API Gateway destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to API Gateway destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to API Gateway destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60. sendAuditlogAliasManagementEvent indicates whether API Gateway has to send Alias Management related audit logs to API Gateway destination. sendAuditlogPackageManagementEvent indicates whether API Gateway has to send Package Management related audit logs to API Gateway destination. sendAuditlogRuntimeDataManagementEvent indicates whether API Gateway has to send RuntimeData Management related audit logs to API Gateway destination. sendAuditlogPolicyManagementEvent indicates whether API Gateway has to send Policy Management related audit logs to API Gateway destination. sendAuditlogPlanManagementEvent indicates whether API Gateway has to send Plan Management related audit logs to API Gateway destination. sendAuditlogApprovalManagementEvent indicates whether API Gateway has to send Approval Management related audit logs to API Gateway destination. sendAuditlogUserManagementEvent indicates whether API Gateway has to send User Management related audit logs to API Gateway destination. sendAuditlogApplicationManagementEvent indicates whether API Gateway has to send Application Management related audit logs to API Gateway destination. sendAuditlogAdministrationEvent indicates whether API Gateway has to send Administration related audit logs to API Gateway destination. sendAuditlogGroupManagementEvent indicates whether API Gateway has to send Group Management related audit logs to API Gateway destination. sendAuditlogAccessProfileManagementEvent indicates whether API Gateway has to send Access Profile Management related audit logs to API Gateway destination. sendAuditlogAPIManagementEvent indicates whether API Gateway has to send API Management related audit logs to API Gateway destination. sendAuditlogPromotionManagementEvent indicates whether API Gateway has to send Promotion Management related audit logs to API Gateway destination.", "schema" : { - "$ref" : "#/definitions/URLAliasesGetResponse" + "$ref" : "#/definitions/Destination" + }, + "examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } }, "400" : { - "description" : "This status code indicates invalid request or bad input." + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: gatewayDestinationConfigg.\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while retrieving the URL Alias from API Gateway." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the API Gateway destination configuration." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "Creates a new URL Alias in API Gateway.", - "operationId" : "createURLALias", + "put" : { + "description" : "The method is used to update the details of the API Gateway destination in API Gateway.", + "operationId" : "saveGatewayAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "The request body for creating a new URL Alias in API Gateway.", + "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/URLAliasSettings" + "$ref" : "#/definitions/Destination" + }, + "x-examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the URL alias has been successfully created in API Gateway.", + "description" : "This status code indicates that the API Gateway destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/URLAliasSettings" + "$ref" : "#/definitions/Destination" + }, + "examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } }, - "400" : { - "description" : "This status code indicates invalid request or bad input." + "405" : { + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for API Gateway destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: gatewayDestinationConfig\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, - "500" : { - "description" : "This status code indicates an error occurred while persisting the URL Alias in the API Gateway." + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { "Basic" : [ ] } ] - }, - "put" : { - "description" : "Updates an existing URL Alias in API Gateway.", - "operationId" : "updateURLALias", + } + }, + "/configurations/auditlogDestinationConfig" : { + "get" : { + "description" : "The method retrieves the details of the Transaction Logger destination in API Gateway. Transaction Logger captures the API runtime invocations performed in API Gateway. The transaction logger data is written to a file or a database based on the configurations. Transactions events are written to the transaction logger only when the Transaction Logger is selected as a destination in Log Invocation Policy.", + "operationId" : "getAuditLogAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "The request body for updating an existing URL Alias in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/URLAliasSettings" - } - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the URL alias has been successfully updated in API Gateway.", + "description" : "This status code indicates that the Transaction Logger destination configurations are retrieved successfully.", "schema" : { - "$ref" : "#/definitions/URLAliasSettings" + "$ref" : "#/definitions/AuditLogDestination" + }, + "examples" : { + "application/json" : "{\r\n \"name\": \"API Gateway Transaction Logger\",\r\n \"enabled\": \"false\",\r\n \"mode\": \"synchronous\",\r\n \"guaranteed\": \"false\",\r\n \"destination\": \"file\",\r\n \"maximumQueueSize\": \"100000\",\r\n \"maximumRetries\": \"3\",\r\n \"waitBetweenRetries\": \"5\"\r\n}" } }, "400" : { - "description" : "This status code indicates invalid request or bad input." + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: auditlogDestinationConfigg.\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while persisting the URL Alias in the API Gateway." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Transaction Logger destination configuration." } }, "security" : [ { "Basic" : [ ] } ] }, - "delete" : { - "description" : "The method deletes an URL alias in API Gateway.", - "operationId" : "deleteURLAlias", + "put" : { + "description" : "The method is used to update the details of the Transaction Logger destination in API Gateway.", + "operationId" : "saveAuditLogAsDestination", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], "parameters" : [ { - "name" : "alias", - "in" : "query", - "description" : "The name of the URL alias to be deleted.", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "string", - "x-example" : "SampleAlias" + "schema" : { + "$ref" : "#/definitions/AuditLogDestination" + }, + "x-examples" : { + "application/json" : "{\r\n \"name\": \"API Gateway Transaction Logger\",\r\n \"enabled\": \"false\",\r\n \"mode\": \"synchronous\",\r\n \"guaranteed\": \"false\",\r\n \"destination\": \"file\",\r\n \"maximumQueueSize\": \"100000\",\r\n \"maximumRetries\": \"3\",\r\n \"waitBetweenRetries\": \"5\"\r\n}" + } } ], "responses" : { "200" : { - "description" : "This status code indicates that the URL alias has been successfully deleted in API Gateway." - }, - "400" : { - "description" : "This status code indicates invalid request or bad input." + "description" : "This status code indicates that the Transaction Logger destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", + "schema" : { + "$ref" : "#/definitions/AuditLogDestination" + }, + "examples" : { + "application/json" : "{\r\n \"name\": \"API Gateway Transaction Logger\",\r\n \"enabled\": \"false\",\r\n \"mode\": \"synchronous\",\r\n \"guaranteed\": \"false\",\r\n \"destination\": \"file\",\r\n \"maximumQueueSize\": \"100000\",\r\n \"maximumRetries\": \"3\",\r\n \"waitBetweenRetries\": \"5\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Audit Log destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: auditlogDestinationConfig\"\r\n}" + } }, - "500" : { - "description" : "This status code indicates an error occurred while persisting the URL Alias in the API Gateway." + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -2284,73 +2466,78 @@ } ] } }, - "/apitransactions/archives" : { + "/configurations/centraSiteDestinationCommunicationConfig" : { "get" : { - "description" : "This GET method is used to fetch the details of existing archive files and response of this method would be the list of archive file names. Select one from the list of archive file names returned by this method and use the POST /apitransactions/archives/{fileName} method to restore.The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", - "operationId" : "listAllArchives", + "description" : "The method retrieves the communication details of the CentraSite destination in API Gateway. API Gateway can publish events and metrics to the configured CentraSite destination.", + "operationId" : "getCentraSiteCommunicationAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This response indicates that the list of archive file names returned successfully. The response body is the list of archive file names.", + "description" : "This status code indicates that the Communication details for the CentraSite destination configurations are retrieved successfully.", + "schema" : { + "$ref" : "#/definitions/CSCommunicationDestination" + }, "examples" : { - "application/json" : "{\r\n \"archiveFiles\": [\r\n \"default-2017-08-29-1504011306456\",\r\n \"default-2017-08-29-1504012415981\"\r\n ]\r\n}" + "application/json" : "{\r\n \"protocol\": \"tcp\",\r\n \"hostName\": \"localhost\",\r\n \"targetName\": \"cstarget\",\r\n \"UDDIPort\": \"53307\",\r\n \"userName\": \"Admin\",\r\n \"password\": \"***\",\r\n \"gatewayAssetId\": \"334-3443-sd34\"\r\n}" } }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." + "400" : { + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: centraSiteDestinationCommunicationConfigg.\"\r\n}" + } }, - "500" : { - "description" : "This response indicates that the server has encountered an error while returning the list of archive file names" + "401" : { + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Communication details for the CentraSite destination." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "This method is used to archive the runtime events and metrics. You can additionally scope the archive data using input parameter filters. This method returns the job id as the response which will be used to know the status of the job. \n\nUse the GET /apitransactions/jobs/{jobId} to know the status, file name and use POST /apitransactions/archives/{fileName} method to restore. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", - "operationId" : "apiTransactionsArchiveBasedOnDuration", + "put" : { + "description" : "The method is used to update the Communication details of the CentraSite destination in API Gateway.", + "operationId" : "saveCentraSiteCommunicationAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "until", - "in" : "query", - "description" : "This is a date parameter. All the specified api transactions until the given date will be purged. Example value: until=2017-12-18 00:00:00. Either one of until or duration is a mandatory parameter", - "required" : true, - "type" : "string", - "x-example" : "until=2017-10-10 00:00:00" - }, { - "name" : "olderThan", - "in" : "query", - "description" : "All the api transactions that are older than the value specified will be purged. Ex: olderThan='2d'. Possible values are d(days),M(months),y(years), lets say a. 2d means 2days b. 1M means 1 month c. 1y means 1 year", - "required" : false, - "type" : "string", - "x-example" : "olderThan=2d" - }, { - "name" : "eventType", - "in" : "query", - "description" : "This parameter is used to specify the api transaction type. Specify eventType=ALL to archive all the events and specify any specific type to archive that particular event type alone. Ex: eventType=transactionalEvents. The available event types are as follows 1.transactionalEvents 2.monitorEvents 3.errorEvents 4.performanceMetrics 5.threatProtectionEvents 6.lifecycleEvents 7.policyViolationEvents 8.auditLogs 9.applicationlogs", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "string", - "x-example" : "eventType=ALL" + "schema" : { + "$ref" : "#/definitions/CSCommunicationDestination" + }, + "x-examples" : { + "application/json" : "{\r\n \"protocol\": \"tcp\",\r\n \"hostName\": \"localhost\",\r\n \"targetName\": \"cstarget\",\r\n \"UDDIPort\": \"53307\",\r\n \"userName\": \"Admin\",\r\n \"password\": \"***\",\r\n \"gatewayAssetId\": \"334-3443-sd34\"\r\n}" + } } ], "responses" : { - "202" : { - "description" : "This response indicates that the archiving process has been started and returned the jobId to track it further.", + "200" : { + "description" : "This status code indicates that the CentraSite Communication destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", + "schema" : { + "$ref" : "#/definitions/CSCommunicationDestination" + }, "examples" : { - "application/json" : "{\r\n \"jobId\": \"1504177213671\"\r\n}" + "application/json" : "{\r\n \"protocol\": \"tcp\",\r\n \"hostName\": \"localhost\",\r\n \"targetName\": \"cstarget\",\r\n \"UDDIPort\": \"53307\",\r\n \"userName\": \"Admin\",\r\n \"password\": \"***\",\r\n \"gatewayAssetId\": \"334-3443-sd34\"\r\n}" } }, "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, - "400" : { - "description" : "This status code indicates that the request URL is not valid." + "405" : { + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Audit Log destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: centraSiteDestinationCommunicationConfigg\"\r\n}" + } }, - "500" : { - "description" : "This response indicates that the server has encountered an error while archiving the api transactions. " + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -2358,67 +2545,31 @@ } ] } }, - "/apitransactions/archives/{fileName}" : { - "post" : { - "description" : "This method is used to restore the runtime data by specifying the archive file name. See GET /apitransactions/archives/ to know how to get the existing archive file names for more details. This method returns the job id as a response to track the status further. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", - "operationId" : "restoreData", + "/configurations/centraSiteDestinationSNMPConfig" : { + "get" : { + "description" : "The method retrieves the SNMP details of the CentraSite destination in API Gateway. API Gateway can publish events and metrics to the configured CentraSite destination.", + "operationId" : "getCentraSiteSNMPAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "fileName", - "in" : "path", - "description" : "This parameter indicates the file name to restore. Ex: fileName=default-2017-08-29-1504011306456.", - "required" : true, - "type" : "string", - "x-example" : "default-2017-02-09-1486644396751" - } ], + "parameters" : [ ], "responses" : { - "202" : { - "description" : "This response indicates that the restore process has been started and returned the jobId to track it further.", + "200" : { + "description" : "This status code indicates that the CentraSite SNMP destination configurations are retrieved successfully.", + "schema" : { + "$ref" : "#/definitions/CSSNMPDestination" + }, "examples" : { - "application/json" : "{\r\n \"jobId\": \"1504177213671\"\r\n}" + "application/json" : "{\r\n \"sendTRAPsToCentrasite\": \"false\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8181\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Administrator\",\r\n \"authorizationPassword\": \"*****\",\r\n \"authorizationProtocol\": \"MD5\",\r\n \"privacyPassword\": \"*****\",\r\n \"privacyProtocol\": \"DES\"\r\n}" } }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "500" : { - "description" : "This response indicates that the server has encountered an error while restoring the archive file. " - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/rule/{ruleId}" : { - "get" : { - "description" : "The method retrieves the details of a rule in API Gateway.", - "operationId" : "getRule", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "ruleId", - "in" : "path", - "description" : "The path parameter specifies the id of a rule that is to be retrieved.", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the details of the rule is successfully retrieved.", + "400" : { + "description" : "This status code indicates that the provided configuration id is invalid.", "examples" : { - "application/json" : "{\r\n \"rule\": {\r\n \"id\": \"69dbb4aa-2c8e-431d-8a72-3af171c2ca44\",\r\n \"ruleType\": \"teamAssignmentRule\",\r\n \"name\": \"pet2rule\",\r\n \"attributeContexts\": [\r\n \"api\",\r\n \"application\",\r\n \"package\",\r\n \"plan\"\r\n ],\r\n \"ruleLogicalOperator\": \"AND\",\r\n \"ruleExpressions\": [\r\n {\r\n \"attributeName\": \"name\",\r\n \"operator\": \"startsWith\",\r\n \"attributeValue\": \"pet2\"\r\n }\r\n ],\r\n \"owner\": \"Administrator\",\r\n \"active\": false,\r\n \"teamsAssigned\": [\r\n \"55fd3eb7-668b-4aba-b3ad-6136448e2bed\"\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Rule" + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: centraSiteDestinationSNMPConfigg.\"\r\n}" } }, - "404" : { - "description" : "This status code indicates that a rule with the given id could not be found in API Gateway." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the CentraSite SNMP destination configuration." } }, "security" : [ { @@ -2426,82 +2577,46 @@ } ] }, "put" : { - "description" : "The method updates the details of a specified rule in API Gateway. The API request body must contain the payload for the updated rule.", - "operationId" : "updateRule", + "description" : "The method is used to update the details of the CentraSite SNMP destination in API Gateway.", + "operationId" : "saveCentraSiteSNMPAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "ruleId", - "in" : "path", - "description" : "The path parameter specifies the id of the rule that is to be updated in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - }, { "in" : "body", "name" : "body", - "description" : "This parameter describes the request payload of an rule that is to be updated in API Gateway.", + "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/Rule" + "$ref" : "#/definitions/CSSNMPDestination" }, "x-examples" : { - "application/json" : "{\r\n \"attributeContexts\": [\r\n \"api\",\r\n \"application\",\r\n \"package\",\r\n \"plan\"\r\n ],\r\n \"name\": \"pet2rule\",\r\n \"ruleExpressions\": [\r\n {\r\n \"attributeName\": \"name\",\r\n \"attributeValue\": \"pet2\",\r\n \"operator\": \"startsWith\"\r\n }\r\n ],\r\n \"ruleLogicalOperator\": \"AND\",\r\n \"ruleType\": \"teamAssignmentRule\",\r\n \"teamsAssigned\": [\r\n \"55fd3eb7-668b-4aba-b3ad-6136448e2bed\"\r\n ]\r\n}" + "application/json" : "{\r\n \"sendTRAPsToCentrasite\": \"false\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8181\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Administrator\",\r\n \"authorizationPassword\": \"*****\",\r\n \"authorizationProtocol\": \"MD5\",\r\n \"privacyPassword\": \"*****\",\r\n \"privacyProtocol\": \"DES\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the rule has been successfully updated in API Gateway, and the updated rule is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"rule\": {\r\n \"id\": \"69dbb4aa-2c8e-431d-8a72-3af171c2ca44\",\r\n \"ruleType\": \"teamAssignmentRule\",\r\n \"name\": \"pet2rule\",\r\n \"attributeContexts\": [\r\n \"api\",\r\n \"application\",\r\n \"package\",\r\n \"plan\"\r\n ],\r\n \"ruleLogicalOperator\": \"AND\",\r\n \"ruleExpressions\": [\r\n {\r\n \"attributeName\": \"name\",\r\n \"operator\": \"startsWith\",\r\n \"attributeValue\": \"pet2\"\r\n }\r\n ],\r\n \"owner\": \"Administrator\",\r\n \"active\": false,\r\n \"teamsAssigned\": [\r\n \"55fd3eb7-668b-4aba-b3ad-6136448e2bed\"\r\n ]\r\n }\r\n}" - }, + "description" : "This status code indicates that the CentraSite SNMP destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/Rule" - } - }, - "404" : { - "description" : "This status code indicates that an rule with the specified id could not be found in API Gateway.", + "$ref" : "#/definitions/CSSNMPDestination" + }, "examples" : { - "application/json" : "{}" + "application/json" : "{\r\n \"sendTRAPsToCentrasite\": \"false\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8181\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Administrator\",\r\n \"authorizationPassword\": \"*****\",\r\n \"authorizationProtocol\": \"MD5\",\r\n \"privacyPassword\": \"*****\",\r\n \"privacyProtocol\": \"DES\"\r\n}" } }, - "405" : { - "description" : "Method is not allowed" - }, - "400" : { - "description" : "This status code indicates that the request body is invalid." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "The method deletes a rule from API Gateway.", - "operationId" : "deleteRule", - "parameters" : [ { - "name" : "ruleId", - "in" : "path", - "description" : "The path parameter specifies the id of a rule that is to be deleted from API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "204" : { - "description" : "This status code indicates that the specified rule has been successfully deleted from API Gateway." - }, - "404" : { - "description" : "This status code indicates that an rule with the given id could not be found in API Gateway." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested rule in API Gateway." + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Audit Log destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: centraSiteDestinationSNMPConfigg\"\r\n}" + } }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -2509,83 +2624,78 @@ } ] } }, - "/rule/{ruleId}/activate" : { - "put" : { - "description" : "This REST request is used to activate a rule and this request doesn't require any request body.", - "operationId" : "activateRule", + "/configurations/jdbcDestinationConfig" : { + "get" : { + "description" : "The method retrieves the details of the Database destination in API Gateway. API Gateway can publish runtime events(example: policy violation, log invocation, error events etc), design time events (example: audit log events) and metrics to the configured Database destination.", + "operationId" : "getDatabaseAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "ruleId", - "in" : "path", - "description" : "The path parameter should be the id of rule that needs to be activated.", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the rule specified is activated successfully", - "examples" : { - "application/json" : "{\r\n \"rule\": {\r\n \"id\": \"a58ba6e4-47fd-4d24-9d11-8a72d31bd805\",\r\n \"ruleType\": \"teamAssignmentRule\",\r\n \"name\": \"pet2rule\",\r\n \"attributeContexts\": [\r\n \"api\",\r\n \"application\",\r\n \"package\",\r\n \"plan\"\r\n ],\r\n \"ruleLogicalOperator\": \"AND\",\r\n \"ruleExpressions\": [\r\n {\r\n \"attributeName\": \"name\",\r\n \"operator\": \"startsWith\",\r\n \"attributeValue\": \"pet2\"\r\n }\r\n ],\r\n \"owner\": \"Administrator\",\r\n \"active\": true,\r\n \"teamsAssigned\": [\r\n \"55fd3eb7-668b-4aba-b3ad-6136448e2bed\"\r\n ]\r\n }\r\n}" - }, + "description" : "This status code indicates that the JDBC destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to API Gateway destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to API Gateway destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to API Gateway destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to API Gateway destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60. sendAuditlogAliasManagementEvent indicates whether API Gateway has to send Alias Management related audit logs to API Gateway destination. sendAuditlogPackageManagementEvent indicates whether API Gateway has to send Package Management related audit logs to API Gateway destination. sendAuditlogRuntimeDataManagementEvent indicates whether API Gateway has to send RuntimeData Management related audit logs to API Gateway destination. sendAuditlogPolicyManagementEvent indicates whether API Gateway has to send Policy Management related audit logs to API Gateway destination. sendAuditlogPlanManagementEvent indicates whether API Gateway has to send Plan Management related audit logs to API Gateway destination. sendAuditlogApprovalManagementEvent indicates whether API Gateway has to send Approval Management related audit logs to API Gateway destination. sendAuditlogUserManagementEvent indicates whether API Gateway has to send User Management related audit logs to API Gateway destination. sendAuditlogApplicationManagementEvent indicates whether API Gateway has to send Application Management related audit logs to API Gateway destination. sendAuditlogAdministrationEvent indicates whether API Gateway has to send Administration related audit logs to API Gateway destination. sendAuditlogGroupManagementEvent indicates whether API Gateway has to send Group Management related audit logs to API Gateway destination. sendAuditlogAccessProfileManagementEvent indicates whether API Gateway has to send Access Profile Management related audit logs to API Gateway destination. sendAuditlogAPIManagementEvent indicates whether API Gateway has to send API Management related audit logs to API Gateway destination. sendAuditlogPromotionManagementEvent indicates whether API Gateway has to send Promotion Management related audit logs to API Gateway destination.", "schema" : { - "$ref" : "#/definitions/Rule" + "$ref" : "#/definitions/Destination" + }, + "examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } }, - "404" : { - "description" : "This status code indicates that the rule id specified is not found in API Gateway" - }, - "405" : { - "description" : "Method is not allowed" - }, "400" : { - "description" : "Request body is not valid" + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: jdbcDestinationConfigg.\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Database destination configuration." } }, "security" : [ { "Basic" : [ ] } ] - } - }, - "/rule/{ruleId}/deactivate" : { + }, "put" : { - "description" : "This REST request is used to deactivate a rule and it doesn't require any request body.", - "operationId" : "deactivateRule", + "description" : "The method is used to update the details of the Database destination in API Gateway.", + "operationId" : "saveDatabaseAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "ruleId", - "in" : "path", - "description" : "The path parameter should be the id of rule that needs to be deactivated.", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + "schema" : { + "$ref" : "#/definitions/Destination" + }, + "x-examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" + } } ], "responses" : { "200" : { - "description" : "This status code indicates that the rule id specified is deactivated successfully", - "examples" : { - "application/json" : "{\r\n \"rule\": {\r\n \"id\": \"a58ba6e4-47fd-4d24-9d11-8a72d31bd805\",\r\n \"ruleType\": \"teamAssignmentRule\",\r\n \"name\": \"pet2rule\",\r\n \"attributeContexts\": [\r\n \"api\",\r\n \"application\",\r\n \"package\",\r\n \"plan\"\r\n ],\r\n \"ruleLogicalOperator\": \"AND\",\r\n \"ruleExpressions\": [\r\n {\r\n \"attributeName\": \"name\",\r\n \"operator\": \"startsWith\",\r\n \"attributeValue\": \"pet2\"\r\n }\r\n ],\r\n \"owner\": \"Administrator\",\r\n \"active\": false,\r\n \"teamsAssigned\": [\r\n \"55fd3eb7-668b-4aba-b3ad-6136448e2bed\"\r\n ]\r\n }\r\n}" - }, + "description" : "This status code indicates that the Database destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/Rule" + "$ref" : "#/definitions/Destination" + }, + "examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } }, - "404" : { - "description" : "This status code indicates that the rule id specified is not found in API Gateway" + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, "405" : { - "description" : "Method is not allowed" + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Database destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: jdbcDestinationConfig\"\r\n}" + } }, "400" : { - "description" : "Request body is not valid" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -2593,50 +2703,40 @@ } ] } }, - "/rule" : { + "/configurations/desDestinationConfig" : { "get" : { - "description" : "The method retrieves list of all rules in API Gateway.", - "operationId" : "getAllRule", + "description" : "The method retrieves the details of the Digital Events destination in API Gateway. Digital Event Services (DES) enables API Gateway to communicate by exchanging digital events. API Gateway can publish runtime events(example: policy violation,log invocation, error events etc), design time events (example: audit log events) and metrics to the configured DES destination.", + "operationId" : "getDigitalEventsAsDestination", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "ruleType", - "in" : "query", - "description" : "ruleType : if supplied, returns the rules of this particular ruleType only", - "required" : false, - "type" : "string", - "x-example" : "teamAssignmentRule" - }, { - "name" : "active", - "in" : "query", - "description" : "active : if supplied, returns the active rules only", - "required" : false, - "type" : "string", - "x-example" : "true" - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the list of rules is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"rule\": [\r\n {\r\n \"id\": \"69dbb4aa-2c8e-431d-8a72-3af171c2ca44\",\r\n \"ruleType\": \"teamAssignmentRule\",\r\n \"name\": \"pet1rule\",\r\n \"attributeContexts\": [\r\n \"api\",\r\n \"application\",\r\n \"package\",\r\n \"plan\"\r\n ],\r\n \"ruleLogicalOperator\": \"AND\",\r\n \"ruleExpressions\": [\r\n {\r\n \"attributeName\": \"name\",\r\n \"operator\": \"startsWith\",\r\n \"attributeValue\": \"pet1\"\r\n }\r\n ],\r\n \"owner\": \"Administrator\",\r\n \"active\": false,\r\n \"teamsAssigned\": [\r\n \"55fd3eb7-668b-4aba-b3ad-6136448e2bed\"\r\n ]\r\n }\r\n ]\r\n}" - }, + "description" : "This status code indicates that the DES destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to API Gateway destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to API Gateway destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to API Gateway destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to API Gateway destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60. sendAuditlogAliasManagementEvent indicates whether API Gateway has to send Alias Management related audit logs to API Gateway destination. sendAuditlogPackageManagementEvent indicates whether API Gateway has to send Package Management related audit logs to API Gateway destination. sendAuditlogRuntimeDataManagementEvent indicates whether API Gateway has to send RuntimeData Management related audit logs to API Gateway destination. sendAuditlogPolicyManagementEvent indicates whether API Gateway has to send Policy Management related audit logs to API Gateway destination. sendAuditlogPlanManagementEvent indicates whether API Gateway has to send Plan Management related audit logs to API Gateway destination. sendAuditlogApprovalManagementEvent indicates whether API Gateway has to send Approval Management related audit logs to API Gateway destination. sendAuditlogUserManagementEvent indicates whether API Gateway has to send User Management related audit logs to API Gateway destination. sendAuditlogApplicationManagementEvent indicates whether API Gateway has to send Application Management related audit logs to API Gateway destination. sendAuditlogAdministrationEvent indicates whether API Gateway has to send Administration related audit logs to API Gateway destination. sendAuditlogGroupManagementEvent indicates whether API Gateway has to send Group Management related audit logs to API Gateway destination. sendAuditlogAccessProfileManagementEvent indicates whether API Gateway has to send Access Profile Management related audit logs to API Gateway destination. sendAuditlogAPIManagementEvent indicates whether API Gateway has to send API Management related audit logs to API Gateway destination. sendAuditlogPromotionManagementEvent indicates whether API Gateway has to send Promotion Management related audit logs to API Gateway destination.", "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Rule" - } + "$ref" : "#/definitions/Destination" + }, + "examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: desDestinationConfigg.\"\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Digital Events destination configuration." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "The method creates a conditional rule in API Gateway. The API request body must contain the payload for the rule.", - "operationId" : "createRule", + "put" : { + "description" : "The method is used to update the details of the Digital Events destination in API Gateway.", + "operationId" : "saveDigitalEventsAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -2645,27 +2745,36 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/Rule" + "$ref" : "#/definitions/Destination" }, "x-examples" : { - "application/json" : "{\r\n \"attributeContexts\": [\r\n \"api\",\r\n \"application\",\r\n \"package\",\r\n \"plan\"\r\n ],\r\n \"name\": \"pet1rule\",\r\n \"ruleExpressions\": [\r\n {\r\n \"attributeName\": \"name\",\r\n \"attributeValue\": \"pet1\",\r\n \"operator\": \"startsWith\"\r\n }\r\n ],\r\n \"ruleLogicalOperator\": \"AND\",\r\n \"ruleType\": \"teamAssignmentRule\",\r\n \"teamsAssigned\": [\r\n \"55fd3eb7-668b-4aba-b3ad-6136448e2bed\"\r\n ]\r\n}" + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } } ], "responses" : { - "201" : { - "description" : "This status code indicates that the rule has been successfully created in API Gateway, and the newly created rule is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"rule\": {\r\n \"id\": \"69dbb4aa-2c8e-431d-8a72-3af171c2ca44\",\r\n \"ruleType\": \"teamAssignmentRule\",\r\n \"name\": \"pet1rule\",\r\n \"attributeContexts\": [\r\n \"api\",\r\n \"application\",\r\n \"package\",\r\n \"plan\"\r\n ],\r\n \"ruleLogicalOperator\": \"AND\",\r\n \"ruleExpressions\": [\r\n {\r\n \"attributeName\": \"name\",\r\n \"operator\": \"startsWith\",\r\n \"attributeValue\": \"pet1\"\r\n }\r\n ],\r\n \"owner\": \"Administrator\",\r\n \"active\": false,\r\n \"teamsAssigned\": [\r\n \"55fd3eb7-668b-4aba-b3ad-6136448e2bed\"\r\n ]\r\n }\r\n}" - }, + "200" : { + "description" : "This status code indicates that the Digital Events destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/Rule" + "$ref" : "#/definitions/Destination" + }, + "examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } }, - "400" : { - "description" : "This status code indicates that the request body is not correct." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." + }, + "405" : { + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Digital Events destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: desDestinationConfig\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -2673,36 +2782,31 @@ } ] } }, - "/is/cluster" : { + "/configurations/elasticsearchDestinationConfig" : { "get" : { - "description" : "Retrieves the configured cluster settings from API Gateway.", - "operationId" : "getClusterSetting", + "description" : "The method retrieves the details of the Elasticsearch destination in API Gateway. API Gateway can publish runtime events(example: policy violation, log invocation, error events etc), design time events (example: audit log events) and metrics to the configured Elasticsearch destination.", + "operationId" : "getElasticsearchAsDestination", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the cluster setting has been successfully retrieved from API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"clusterAware\":true,\r\n\t\"pendingRestart\":false,\r\n\t\"currentlyClustered\":false,\r\n\t\"clusterSessTimeout\":\"60\",\r\n\t\"clusterName\":\"devCluster\",\r\n\t\"actionOnStartupError\":\"standalone\",\r\n\t\"tsaURLs\":\"bluebird:9510\"\r\n}" - }, + "description" : "This status code indicates that the Elastic search destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to API Gateway destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to API Gateway destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to API Gateway destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to API Gateway destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60. sendAuditlogAliasManagementEvent indicates whether API Gateway has to send Alias Management related audit logs to API Gateway destination. sendAuditlogPackageManagementEvent indicates whether API Gateway has to send Package Management related audit logs to API Gateway destination. sendAuditlogRuntimeDataManagementEvent indicates whether API Gateway has to send RuntimeData Management related audit logs to API Gateway destination. sendAuditlogPolicyManagementEvent indicates whether API Gateway has to send Policy Management related audit logs to API Gateway destination. sendAuditlogPlanManagementEvent indicates whether API Gateway has to send Plan Management related audit logs to API Gateway destination. sendAuditlogApprovalManagementEvent indicates whether API Gateway has to send Approval Management related audit logs to API Gateway destination. sendAuditlogUserManagementEvent indicates whether API Gateway has to send User Management related audit logs to API Gateway destination. sendAuditlogApplicationManagementEvent indicates whether API Gateway has to send Application Management related audit logs to API Gateway destination. sendAuditlogAdministrationEvent indicates whether API Gateway has to send Administration related audit logs to API Gateway destination. sendAuditlogGroupManagementEvent indicates whether API Gateway has to send Group Management related audit logs to API Gateway destination. sendAuditlogAccessProfileManagementEvent indicates whether API Gateway has to send Access Profile Management related audit logs to API Gateway destination. sendAuditlogAPIManagementEvent indicates whether API Gateway has to send API Management related audit logs to API Gateway destination. sendAuditlogPromotionManagementEvent indicates whether API Gateway has to send Promotion Management related audit logs to API Gateway destination.", "schema" : { - "$ref" : "#/definitions/ClusterInfo" + "$ref" : "#/definitions/ElasticsearchDestination" + }, + "examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } }, "400" : { - "description" : "This status code indicates invalid request or bad input." + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: elasticsearchdestinationConfigg.\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while fetching the configured cluster settings from API Gateway." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Elasticsearch destination configuration." } }, "security" : [ { @@ -2710,46 +2814,46 @@ } ] }, "put" : { - "description" : "Updates the cluster settings in API Gateway.", - "operationId" : "updateCluster", + "description" : "The method is used to update the details of the Elasticsearch destination in API Gateway.", + "operationId" : "saveElasticsearchAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "The request payload for cluster settings in API Gateway.", + "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/ClusterInfo" + "$ref" : "#/definitions/ElasticsearchDestination" }, "x-examples" : { - "application/json" : "{\r\n\t\"clusterAware\":true,\r\n\t\"pendingRestart\":false,\r\n\t\"currentlyClustered\":false,\r\n\t\"clusterSessTimeout\":\"60\",\r\n\t\"clusterName\":\"devCluster\",\r\n\t\"actionOnStartupError\":\"standalone\",\r\n\t\"tsaURLs\":\"bluebird:9510\"\r\n}" + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the configured cluster settings have been successfully persisted in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"clusterAware\":true,\r\n\t\"pendingRestart\":false,\r\n\t\"currentlyClustered\":false,\r\n\t\"clusterSessTimeout\":\"60\",\r\n\t\"clusterName\":\"devCluster\",\r\n\t\"actionOnStartupError\":\"standalone\",\r\n\t\"tsaURLs\":\"bluebird:9510\"\r\n}" - }, + "description" : "This status code indicates that the Elasticsearch destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/ClusterInfo" + "$ref" : "#/definitions/ElasticsearchDestination" + }, + "examples" : { + "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" } }, - "400" : { - "description" : "This status code indicates that the the user sends an empty or invalid JSON payload." - }, "401" : { - "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to update extended and watt settings." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Elasticsearch destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: elasticsearchDestinationConfigg\"\r\n}" + } }, - "500" : { - "description" : "This status code indicates an error occurred while persisting the cluster settings in API Gateway." + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -2757,148 +2861,78 @@ } ] } }, - "/is/keystore" : { + "/configurations/snmpDestinationConfig" : { "get" : { - "description" : "The method gets all keystores available in API Gateway.", - "operationId" : "getKeystores", + "description" : "The method retrieves the details of the SNMP destination in API Gateway. API Gateway can publish events and performance metrics data to the configured 3rd party SNMP server.", + "operationId" : "getSNMPAsDestination", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that all keystores have been successfully fetched from API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"keystores\": [{\r\n\t\t\"keyStoreName\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyStoreDescription\": \"Default keystore alias for Integration Server.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.DEFAULT_IS_KEYSTORE\",\r\n\t\t\"pkAliasesList\": \"ssos\",\r\n\t\t\"pkPasswordsList\": \"wm.security.keystore.DEFAULT_IS_KEYSTORE.ssos\",\r\n\t\t\"nullPKpasswds\": \"false\",\r\n\t\t\"bitarray\": \"1\",\r\n\t\t\"isWarning\": false,\r\n\t\t\"isLoaded\": true,\r\n\t\t\"message\": null,\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAABAAAAAQAEc3NvcwAAAU3jFrE/AAAFAzCCBP8wDgYKKwYBBAEqAhEBAQUABIIE6/2CimpqOXAELQb47VWbZx5vQionU7882vDKQywXT2726dYXQK/YBtK3ufezdzTg82EEWyqw75YuqMcaa5zS8FiGEovvf2DsdCcHWkAso24Ya1l56j+FgF5TsaOrFcKu3HjuyzhqgDiD/U7NfIcFud4kaBxNI23/ouvB7O7+JOww8xzE2pyxtvGyyvzqMDHFE8+h0X+dSgVVCioL794mP7gj2ujg2EKS9lI1KhFjrZfOn6kLnDAsd1QUfAdJxrooLXPP97auAApX2C5aD+lIdS+yPs0eC7h0R3QBYBiPuCEBPmna0C2iZtukqmCNH/W0VPbdIswz0KcCATFH8LuC3Mg3IbTqdXFj4bzUPACqutmyObyGwFKEzNdicTV2f6UJDBfUnl7ip1f4vb/a18PM+FuKsHigW6+PHWAo4hc85ntFjXoQBKgSpeneuiRIQbvmcWlp68FVuebJjMsmYKsvhIfCTUWYmf3iS6sQUILD3IKvbZJqFIZ8iwdiHljW7wN8Cbu1Wrv8vj1pV38I8C1bmsUv7mCwEmOtAcCfBoduxG+iy/LsgQW4vCj3gCm98Fv/AKD7pe+IhVkVEY8m37W6wNgdDgDKHg9txgrckBY1gOEm4Z1bhlBFFLkfJBUN1hdQu425HK9EgOO0EsjDTi1jqUPuCIZ+1XqlN7W/5pmD9NH7Oo2pji9rFoPMBibs6h5dWGkjxGft3aGBkCuhPOSHbgJbSM/yNowVMlj9PNutJvNiqkVBT9aw1f8ANN7r1+X4JusVZAshesN6R6K3v/UlgOxIB9C41M4P57LCq\",\r\n\t\t\"uploadFileName\": \"keystore.jks\"\r\n\t},\r\n\t{\r\n\t\t\"keyStoreName\": \"SampleCustomKeystore\",\r\n\t\t\"keyStoreDescription\": \"Sample description for the keystore.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.SampleCustomKeystore\",\r\n\t\t\"pkAliasesList\": \"alias1.example.com,alias2.example.com,alias3.example.com\",\r\n\t\t\"pkPasswordsList\": \"wm.security.keystore.SampleCustomKeystore.alias1.example.com, ,wm.security.keystore.SampleCustomKeystore.alias3.example.com\",\r\n\t\t\"nullPKpasswds\": \"false,true,false\",\r\n\t\t\"bitarray\": \"1,1,1\",\r\n\t\t\"isWarning\": true,\r\n\t\t\"isLoaded\": true,\r\n\t\t\"message\": \"Keystore alias 'SampleCustomKeystore' saved successfully.\",\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAAJAAAAAgAKZGFlaW5tcmgzMQAAAV2xXQI0AAVYLjUwOQAAA6kwggOlMIICjaADAgECAgRtzQjDMA0GCSqGSIb3DQEBBAUAMIGCMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRQwEgYDVQQKEwtTb2Z0d2FyZSBBRzEXMBUGA1UECxMOU29mdHdhcmUgQUcgQ0ExHjAcBgNVBAMTFWRhZWlubXJoMzEuZXVyLmFkLnNhZzAeFw0xNzA3MjzdGFkdDEUMBIGA1UEChMLU29mdHdhcmUgQUcxFzAVBgNVBAsTDlNvZnR3YXJlIEFHIENBMRwwGgYDVQQDExNtY2RzYW4wMi5ldXIuYWQuc2FnMB4XDTE3MDcwNDExNDkwOFoXDTI3MDcwMjExNDkwOFowgYAxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdHZXJtYW55MRIwEAYDVQQHEwlEYXJtc3RhZHQxFDASBgNVBAoTC1NvZnR3YXJlIEFHMRcwFQYDVQQLEw5Tb2Z0d2FyZSBBRyBDVR0OBBYEFBTbx0ge90nA8/f5nj0Q3vvDHKfQMA0GCSqGSIb3DQEBBAUAA4IBAQCSmYycBUW30RT6v5dUL7OuWF1uOnTqycEJTXTs0NXsW/bpuwI2sUX/rZrivvOlWejy4hIwtjWfVIAhhE1TOeSV6CNr9MnvMgs0u9jUJ8un8dKPujmBfxPI07kzgshkMzHk0L/hacprYHkYKASOG0pjvPNXMaMULIuOJ/bo4sAUSqg6gnIhR/0K/9HK5Q6wsYKEmCefT4AbCaqo6ns74f0r7n459hh4Ur0hmWy3aEdUZ6NXJU6RngoXo2JFdjV711nmK3+vjzQfmCc+SCIe3M9gynWDt1kTamUweQH+OVBTPlEhBzUh+b0qQznvSvxRQYJd/veFAg4xbU4iTXV5O5Zi0aX/9Us0at03ku9iQ7iWupy88+w=\",\r\n\t\t\"uploadFileName\": \"keystore_file.jks\"\r\n\t}]\r\n}" - }, + "description" : "This status code indicates that the SNMP destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to SNMP destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to SNMP destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to SNMP destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to SNMP destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60.", "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/KeyStore" - } + "$ref" : "#/definitions/SNMPDestination" + }, + "examples" : { + "application/json" : "{\r\n \"sendTRAPs\": \"false\",\r\n \"snmpTargetType\": \"user\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8081\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Admin\",\r\n \"useAuth\": \"false\",\r\n \"authPassword\": \"\",\r\n \"authProtocol\": \"MD5\",\r\n \"usePrivacy\": \"false\",\r\n \"privacyPassword\": \"\",\r\n \"privacyProtocol\": \"DES\",\r\n \"communityName\": \"\",\r\n \"sendErrorEvent\": \"false\",\r\n \"sendLifecycleEvent\": \"false\",\r\n \"sendPolicyViolationEvent\": \"false\"\r\n}" } }, "400" : { - "description" : "This status code indicates invalid request or bad input." + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: snmpDestinationConfigg.\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while retrieving the available keystores from API Gateway." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the SNMP destination configuration." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "Creates a keystore in API Gateway.", - "operationId" : "createKeystore", - "consumes" : [ "multipart/form-data" ], + "put" : { + "description" : "The method is used to update the details of the SNMP destination in API Gateway.", + "operationId" : "saveSNMPAsDestination", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "keyStoreName", - "in" : "formData", - "description" : "The name of the keystore. It cannot contain spaces or special characters. The name of the key store must be unique across all the keystores created in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "SampleCustomKeystore" - }, { - "name" : "keyStoreDescription", - "in" : "formData", - "description" : "The description for the keystore.", - "required" : false, - "type" : "string", - "x-example" : "Sample description for the keystore." - }, { - "name" : "keyStoreType", - "in" : "formData", - "description" : "The certificate file format of the keystore.", - "required" : true, - "type" : "string", - "default" : "JKS", - "x-example" : "JKS", - "enum" : [ "JKS", "PKCS12" ] - }, { - "name" : "keyStoreProvider", - "in" : "formData", - "description" : "The provider that is used for the keystore type. The default is SUN for JKS type and SunJSSE for PKCS12 type.", - "required" : true, - "type" : "string", - "default" : "SUN", - "x-example" : "SUN", - "enum" : [ "SUN", "SunJSSE" ] - }, { - "name" : "keyStorePassword", - "in" : "formData", - "description" : "The keystore password that is defined at the time of keystore creation using a keystore utility.", - "required" : true, - "type" : "string", - "x-example" : "keystore_password" - }, { - "name" : "uploadFileName", - "in" : "formData", - "description" : "The name of the keystore file that will be used to save the keystore internally in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "keystore_file.jks" - }, { - "name" : "fileContent", - "in" : "formData", - "description" : "The contents of the truststore file.", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "file" - }, { - "name" : "pkAliasesList", - "in" : "formData", - "description" : "Comma separated list of alias names in the uploaded keystore file.", - "required" : false, - "type" : "string", - "x-example" : "alias1.example.com,alias2.example.com,alias3.example.com" - }, { - "name" : "pkPasswordsList", - "in" : "formData", - "description" : "Comma separated list of passwords in the same order as the aliases specified in pkAliasesList. If a particular key alias does not have a password, it is denoted by space.", - "required" : false, - "type" : "string", - "x-example" : "alias1_password, ,alias3_password" - }, { - "name" : "nullPKpasswds", - "in" : "formData", - "description" : "Comma separated list of boolean values (true/false) indicating whether the particular alias has a password or not in the same order as the aliases specified in pkAliasesList. For each key alias, true indicates that the key alias does not have a password and false indicates that it does have a password.", - "required" : false, - "type" : "string", - "x-example" : "false,true,false" + "schema" : { + "$ref" : "#/definitions/SNMPDestination" + }, + "x-examples" : { + "application/json" : "{\r\n \"sendTRAPs\": \"false\",\r\n \"snmpTargetType\": \"user\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8081\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Admin\",\r\n \"useAuth\": \"false\",\r\n \"authPassword\": \"\",\r\n \"authProtocol\": \"MD5\",\r\n \"usePrivacy\": \"false\",\r\n \"privacyPassword\": \"\",\r\n \"privacyProtocol\": \"DES\",\r\n \"communityName\": \"\",\r\n \"sendErrorEvent\": \"false\",\r\n \"sendLifecycleEvent\": \"false\",\r\n \"sendPolicyViolationEvent\": \"false\"\r\n}" + } } ], "responses" : { "200" : { - "description" : "This status code indicates that the keystore has been successfully persisted in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"keyStoreName\": \"SampleCustomKeystore\",\r\n\t\"keyStoreDescription\": \"Sample description for the keystore.\",\r\n\t\"keyStoreType\": \"JKS\",\r\n\t\"keyStoreProvider\": \"SUN\",\r\n\t\"keyStorePassword\": \"wm.security.keystore.SampleCustomKeystore\",\r\n\t\"pkAliasesList\": \"alias1.example.com,alias2.example.com,alias3.example.com\",\r\n\t\"pkPasswordsList\": \" , , \",\r\n\t\"nullPKpasswds\": \"false,false,false\",\r\n\t\"bitarray\": \"0,0,0\",\r\n\t\"isWarning\": true,\r\n\t\"isLoaded\": true,\r\n\t\"message\": \"Keystore alias 'SampleCustomKeystore' saved successfully. Warning: before using the keystore, you must create a password for at least one of its key aliases. Please edit the keystore alias configuration and add one or more valid key alias passwords.\",\r\n\t\"fileContent\": \"/u3+7QAAAAIAAAAJAAAAAgAKZGFlaW5tcmgzMQAAAV2xXQI0AAVYLjUwOQAAA6kwggOlMIICjaADAgECAgRtzQjDMA0GCSqGSIb3DQEBBAUAMIGCMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRQwEgYDVQQKEwtTb2Z0d2FyZSBBRzEXMBUGA1UECxMOU29mdHdhcmUgQUcgQ0ExHjAcBgNVBAMTFWRhZWlubXJoMzEuZXVyLmFkLnNhZzAeFw0xNzA3RFMRAwDgYDVQQIEwdHZXJtYW55MRIwEAYDVQQHEwlEYXJtc3RhZHQxFDASBgNVBAoTC1NvZnR3YXJlIEFHMRcwFQYDVQQLEw5Tb2Z0d2FyZSBBRyBDQTEcMBoGA1UEAxMTbWNkc2FuMDIuZXVyLmFkLnNhZzCCAS6RngoXo2JFdjV711nmK3+vjzQfmCc+SCIe3M9gynWDt1kTamUweQH+OVBTPlEhBzUh+b0qQznvSvxRQYJd/veFAg4xbU4iTXV5O5Zi0aX/9Us0at03ku9iQ7iWupy88+w=\",\r\n\t\"uploadFileName\": \"keystore_file.jks\"\r\n}" - }, + "description" : "This status code indicates that the SNMP destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/KeyStore" + "$ref" : "#/definitions/SNMPDestination" + }, + "examples" : { + "application/json" : "{\r\n \"sendTRAPs\": \"false\",\r\n \"snmpTargetType\": \"user\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8081\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Admin\",\r\n \"useAuth\": \"false\",\r\n \"authPassword\": \"\",\r\n \"authProtocol\": \"MD5\",\r\n \"usePrivacy\": \"false\",\r\n \"privacyPassword\": \"\",\r\n \"privacyProtocol\": \"DES\",\r\n \"communityName\": \"\",\r\n \"sendErrorEvent\": \"false\",\r\n \"sendLifecycleEvent\": \"false\",\r\n \"sendPolicyViolationEvent\": \"false\"\r\n}" } }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for SNMP destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: snmpDestinationConfig\"\r\n}" + } }, - "500" : { - "description" : "This status code indicates an error occurred while persisting the keystore in API Gateway." + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -2906,219 +2940,78 @@ } ] } }, - "/is/keystore/{keyStoreName}" : { + "/configurations/emailDestinationConfig" : { "get" : { - "description" : "The method gets keystore matching the name in API Gateway.", - "operationId" : "getKeystore", + "description" : "The method retrieves the details of the Email destination in API Gateway. API Gateway can send alerts to the email ID specified either in the Log Invocation, Monitor Service Performance, Monitor Service Level Agreement, (or) Throttling Traffic Optimization policies through the configured Email destination.", + "operationId" : "getEmailAsDestination", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "keyStoreName", - "in" : "path", - "description" : "Keystore name to identify the corresponding Keystore", - "required" : true, - "type" : "string", - "x-example" : "DEFAULT_IS_KEYSTORE" - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the requested keystore has been successfully fetched from API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"keystores\": [{\r\n\t\t\"keyStoreName\": \"SampleCustomKeystore\",\r\n\t\t\"keyStoreDescription\": \"Sample description for the keystore.\",\r\n\t\t\"keyStoreType\": \"JKS\",\r\n\t\t\"keyStoreProvider\": \"SUN\",\r\n\t\t\"keyStorePassword\": \"wm.security.keystore.SampleCustomKeystore\",\r\n\t\t\"pkAliasesList\": \"alias1.example.com,alias2.example.com,alias3.example.com\",\r\n\t\t\"pkPasswordsList\": \"wm.security.keystore.SampleCustomKeystore.alias1.example.com, ,wm.security.keystore.SampleCustomKeystore.alias3.example.com\",\r\n\t\t\"nullPKpasswds\": \"false,true,false\",\r\n\t\t\"bitarray\": \"1,1,1\",\r\n\t\t\"isWarning\": true,\r\n\t\t\"isLoaded\": true,\r\n\t\t\"message\": \"Keystore alias 'SampleCustomKeystore' saved successfully.\",\r\n\t\t\"fileContent\": \"/u3+7QAAAAIAAAAJAAAAAgAKZGFlaW5tcmgzMQAAAV2xXQI0AAVYLjUwOQAAA6kwggOlMIICjaADAgECAgRtzQjDMA0GCSqGSIb3DQEBBAUAMIGCMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRQwEgYDVQQKEwtTb2Z0d2FyZSBBRzEXMBUGA1UECxMOU29mdHdhcmUgQUcgQ0ExHjAcBgNVBAMTFWRhZWlubXJoMzEuZXVyLmFkLnNhZzAeFw0xNzA3MjzdGFkdDEUMBIGA1UEChMLU29mdHdhcmUgQUcxFzAVBgNVBAsTDlNvZnR3YXJlIEFHIENBMRwwGgYDVQQDExNtY2RzYW4wMi5ldXIuYWQuc2FnMB4XDTE3MDcwNDExNDkwOFoXDTI3MDcwMjExNDkwOFowgYAxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdHZXJtYW55MRIwEAYDVQQHEwlEYXJtc3RhZHQxFDASBgNVBAoTC1NvZnR3YXJlIEFHMRcwFQYDVQQLEw5Tb2Z0d2FyZSBBRyBDVR0OBBYEFBTbx0ge90nA8/f5nj0Q3vvDHKfQMA0GCSqGSIb3DQEBBAUAA4IBAQCSmYycBUW30RT6v5dUL7OuWF1uOnTqycEJTXTs0NXsW/bpuwI2sUX/rZrivvOlWejy4hIwtjWfVIAhhE1TOeSV6CNr9MnvMgs0u9jUJ8un8dKPujmBfxPI07kzgshkMzHk0L/hacprYHkYKASOG0pjvPNXMaMULIuOJ/bo4sAUSqg6gnIhR/0K/9HK5Q6wsYKEmCefT4AbCaqo6ns74f0r7n459hh4Ur0hmWy3aEdUZ6NXJU6RngoXo2JFdjV711nmK3+vjzQfmCc+SCIe3M9gynWDt1kTamUweQH+OVBTPlEhBzUh+b0qQznvSvxRQYJd/veFAg4xbU4iTXV5O5Zi0aX/9Us0at03ku9iQ7iWupy88+w=\",\r\n\t\t\"uploadFileName\": \"keystore_file.jks\"\r\n\t}]\r\n}" - }, + "description" : "This status code indicates that the Email destination configurations are retrieved successfully.", "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/KeyStore" - } + "$ref" : "#/definitions/EmailDestination" + }, + "examples" : { + "application/json" : "{\r\n \"smtpServer\": \"mailhost\",\r\n \"port\": \"26\",\r\n \"userName\": \"\",\r\n \"password\": \"\",\r\n \"tls\": \"\",\r\n \"truststoreAlias\": \"\",\r\n \"internalEmail\": \"\",\r\n \"serviceEmail\": \"\",\r\n \"fromEmail\": \"a@example.com\",\r\n \"defaultEmailCharset\": \"\",\r\n \"testRecipient\": \"b@example.com\",\r\n \"logInvocationSubject\": \"Log Invocation mail\",\r\n \"logInvocationContent\": \"The transaction event\",\r\n \"monitorSPSubject\": \"Monitor Service Performance mail\",\r\n \"monitorSPContent\": \"The monitoring event\",\r\n \"monitorSLASubject\": \"Monitor SLA mail\",\r\n \"monitorSLAContent\": \"The monitoring event\",\r\n \"throttlingSubject\": \"Throttling mail\",\r\n \"throttlingContent\": \"The Throttling event\"\r\n}" } }, "400" : { - "description" : "This status code indicates invalid request or bad input." + "description" : "This status code indicates that the provided configuration id is invalid.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: emailDestinationConfigg.\"\r\n}" + } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while retrieving the specified keystore from API Gateway." + "description" : "This status code indicates that the user is not a valid API Gateway user retrieving the Email destination configuration." } }, "security" : [ { "Basic" : [ ] } ] }, - "post" : { - "description" : "Updates an already existing keystore in API Gateway.", - "operationId" : "UpdateKeystoreAliases", - "consumes" : [ "multipart/form-data" ], + "put" : { + "description" : "The method is used to update the details of the Email destination in API Gateway.", + "operationId" : "saveEmailAsDestination", + "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "name" : "keyStoreName", - "in" : "path", - "description" : "The name of the keystore. It cannot contain spaces or special characters. The name of the key store must be unique across all the keystores created in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "SampleCustomKeystore" - }, { - "name" : "keyStoreDescription", - "in" : "formData", - "description" : "The description for the keystore.", - "required" : false, - "type" : "string", - "x-example" : "Sample description for the keystore." - }, { - "name" : "keyStoreType", - "in" : "formData", - "description" : "The certificate file format of the keystore.", - "required" : true, - "type" : "string", - "default" : "JKS", - "x-example" : "JKS", - "enum" : [ "JKS", "PKCS12" ] - }, { - "name" : "keyStoreProvider", - "in" : "formData", - "description" : "The provider that is used for the keystore type. The default is SUN for JKS type and SunJSSE for PKCS12 type.", - "required" : true, - "type" : "string", - "default" : "SUN", - "x-example" : "SUN", - "enum" : [ "SUN", "SunJSSE" ] - }, { - "name" : "keyStorePassword", - "in" : "formData", - "description" : "The keystore password that is defined at the time of keystore creation using a keystore utility.", - "required" : true, - "type" : "string", - "x-example" : "keystore_password" - }, { - "name" : "uploadFileName", - "in" : "formData", - "description" : "The name of the keystore file that will be used to save the keystore internally in API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "keystore_file.jks" - }, { - "name" : "fileContent", - "in" : "formData", - "description" : "The contents of the keystore file.", + "in" : "body", + "name" : "body", + "description" : "", "required" : true, - "type" : "file" - }, { - "name" : "pkAliasesList", - "in" : "formData", - "description" : "Comma separated list of alias names in the uploaded keystore file.", - "required" : false, - "type" : "string", - "x-example" : "alias1.example.com,alias2.example.com,alias3.example.com" - }, { - "name" : "pkPasswordsList", - "in" : "formData", - "description" : "Comma separated list of passwords in the same order as the aliases specified in pkAliasesList. If a particular key alias does not have a password, it is denoted by space.", - "required" : false, - "type" : "string", - "x-example" : "alias1_password, ,alias3_password" - }, { - "name" : "nullPKpasswds", - "in" : "formData", - "description" : "Comma separated list of boolean values (true/false) indicating whether the particular alias has a password or not in the same order as the aliases specified in pkAliasesList. For each key alias, true indicates that the key alias does not have a password and false indicates that it does have a password.", - "required" : false, - "type" : "string", - "x-example" : "false,true,false" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the keystore has been successfully persisted in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"keyStoreName\": \"SampleCustomKeystore\",\r\n\t\"keyStoreDescription\": \"Sample description for the keystore.\",\r\n\t\"keyStoreType\": \"JKS\",\r\n\t\"keyStoreProvider\": \"SUN\",\r\n\t\"keyStorePassword\": \"wm.security.keystore.SampleCustomKeystore\",\r\n\t\"pkAliasesList\": \"alias1.example.com,alias2.example.com,alias3.example.com\",\r\n\t\"pkPasswordsList\": \"wm.security.keystore.SampleCustomKeystore.alias1.example.com, ,wm.security.keystore.SampleCustomKeystore.alias3.example.com\",\r\n\t\"nullPKpasswds\": \"false,true,false\",\r\n\t\"bitarray\": \"1,1,1\",\r\n\t\"isWarning\": true,\r\n\t\"isLoaded\": true,\r\n\t\"message\": \"Keystore alias 'SampleCustomKeystore' saved successfully.\",\r\n\t\"fileContent\": \"/u3+7QAAAAIAAAAJAAAAAgAKZGFlaW5tcmgzMQAAAV2xXQI0AAVYLjUwOQAAA6kwggOlMIICjaADAgECAgRtzQjDMA0GCSqGSIb3DQEBBAUAMIGCMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRQwEgYDVQQKEwtTb2Z0d2FyZSBBRzEXMBUGA1UECxMOU29mdHdhcmUgQUcgQ0ExHjAcBgNVBAMTFWRhZWlubXJoMzEuZXVyLmFkLnNhZzAeFw0xNzA3MjzdGFkdDEUMBIGA1UEChMLU29mdHdhcmUgQUcxFzAVBgNVBAsTDlNvZnR3YXJlIEFHIENBMRwwGgYDVQQDExNtY2RzYW4wMi5ldXIuYWQuc2FnMB4XDTE3MDcwNDExNDkwOFoXDTI3MDcwMjExNDkwOFowgYAxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdHZXJtYW55MRIwEAYDVQQHEwlEYXJtc3RhZHQxFDASBgNVBAoTC1NvZnR3YXJlIEFHMRcwFQYDVQQLEw5Tb2Z0d2FyZSBBRyBDVR0OBBYEFBTbx0ge90nA8/f5nj0Q3vvDHKfQMA0GCSqGSIb3DQEBBAUAA4IBAQCSmYycBUW30RT6v5dUL7OuWF1uOnTqycEJTXTs0NXsW/bpuwI2sUX/rZrivvOlWejy4hIwtjWfVIAhhE1TOeSV6CNr9MnvMgs0u9jUJ8un8dKPujmBfxPI07kzgshkMzHk0L/hacprYHkYKASOG0pjvPNXMaMULIuOJ/bo4sAUSqg6gnIhR/0K/9HK5Q6wsYKEmCefT4AbCaqo6ns74f0r7n459hh4Ur0hmWy3aEdUZ6NXJU6RngoXo2JFdjV711nmK3+vjzQfmCc+SCIe3M9gynWDt1kTamUweQH+OVBTPlEhBzUh+b0qQznvSvxRQYJd/veFAg4xbU4iTXV5O5Zi0aX/9Us0at03ku9iQ7iWupy88+w=\",\r\n\t\"uploadFileName\": \"keystore_file.jks\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/KeyStore" - } - }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + "schema" : { + "$ref" : "#/definitions/EmailDestination" }, - "500" : { - "description" : "This status code indicates an error occurred while persisting the keystore in API Gateway." + "x-examples" : { + "application/json" : "{\r\n \"smtpServer\": \"mailhost\",\r\n \"port\": \"26\",\r\n \"userName\": \"\",\r\n \"password\": \"\",\r\n \"tls\": \"\",\r\n \"truststoreAlias\": \"\",\r\n \"internalEmail\": \"\",\r\n \"serviceEmail\": \"\",\r\n \"fromEmail\": \"a@example.com\",\r\n \"defaultEmailCharset\": \"\",\r\n \"testRecipient\": \"b@example.com\",\r\n \"logInvocationSubject\": \"Log Invocation mail\",\r\n \"logInvocationContent\": \"The transaction event\",\r\n \"monitorSPSubject\": \"Monitor Service Performance mail\",\r\n \"monitorSPContent\": \"The monitoring event\",\r\n \"monitorSLASubject\": \"Monitor SLA mail\",\r\n \"monitorSLAContent\": \"The monitoring event\",\r\n \"throttlingSubject\": \"Throttling mail\",\r\n \"throttlingContent\": \"The Throttling event\"\r\n}" } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "Deletes keystore matching the specified name in API Gateway.", - "operationId" : "deleteKeystore", - "parameters" : [ { - "name" : "keyStoreName", - "in" : "path", - "description" : "Keystore name to identify the corresponding Keystore", - "required" : true, - "type" : "string", - "x-example" : "DEFAULT_IS_KEYSTORE" } ], "responses" : { "200" : { - "description" : "This status code indicates that the specified keystore has been deleted successfully from API Gateway.", + "description" : "This status code indicates that the Email destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/KeyStore" - } + "$ref" : "#/definitions/EmailDestination" + }, + "examples" : { + "application/json" : "{\r\n \"smtpServer\": \"mailhost\",\r\n \"port\": \"26\",\r\n \"userName\": \"\",\r\n \"password\": \"\",\r\n \"tls\": \"\",\r\n \"truststoreAlias\": \"\",\r\n \"internalEmail\": \"\",\r\n \"serviceEmail\": \"\",\r\n \"fromEmail\": \"a@example.com\",\r\n \"defaultEmailCharset\": \"\",\r\n \"testRecipient\": \"b@example.com\",\r\n \"logInvocationSubject\": \"Log Invocation mail\",\r\n \"logInvocationContent\": \"The transaction event\",\r\n \"monitorSPSubject\": \"Monitor Service Performance mail\",\r\n \"monitorSPContent\": \"The monitoring event\",\r\n \"monitorSLASubject\": \"Monitor SLA mail\",\r\n \"monitorSLAContent\": \"The monitoring event\",\r\n \"throttlingSubject\": \"Throttling mail\",\r\n \"throttlingContent\": \"The Throttling event\"\r\n}" } }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while deleting the specified keystore from API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/logAggregation/downloadLogs" : { - "get" : { - "description" : "This resource is used to download logs from different components used by APIGateway, server configurations and thread dumps.", - "operationId" : "downloadLogs", - "consumes" : [ "application/json" ], - "produces" : [ "multipart/form-data" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This response indicates that the logs are downloaded successfully. The response body is the zipped archive." + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Email destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: emailDestinationConfig\"\r\n}" + } }, "400" : { - "description" : "This response indicates that the server has encountered an error while downloading the logs." - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to download the logs." + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } } }, "security" : [ { @@ -3126,31 +3019,28 @@ } ] } }, - "/configurations/loadBalancer" : { + "/configurations/apiPortalDestinationConfig" : { "get" : { - "description" : "The method retrieves the details of the Load Balancer configuration in API Gateway.", - "operationId" : "getLoadBalancers", + "description" : "The method retrieves the details of the API Portal destination configurations. API Gateway can publish events and performance metrics data. By default, error events, lifecycle events, policy violation event, and performance data are published to API Portal.", + "operationId" : "getAPIPortalAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the Load Balancer configurations are retrieved successfully. ", - "examples" : { - "application/json" : "{\r\n \"webAppUrl\": \"\",\r\n \"httpUrls\": [\r\n \"http://localhost:8080\"\r\n ],\r\n \"httpsUrls\": [\r\n \"https://localhost:443\"\r\n ],\r\n \"websocketUrls\": []\r\n}" - }, + "description" : "This status code indicates that the API Portal destination configurations are retrieved successfully.", "schema" : { - "$ref" : "#/definitions/LoadBalancer" + "$ref" : "#/definitions/Destination" + }, + "examples" : { + "application/json" : "{\r\n\t\"sendPolicyViolationEvent\": \"true\",\r\n\t\"metricsPublishInterval\": \"10\",\r\n\t\"sendErrorEvent\": \"true\",\r\n\t\"sendPerformanceMetrics\": \"true\",\r\n\t\"sendLifecycleEvent\": \"true\"\r\n}" } }, "400" : { - "description" : "This status code indicates that the loadBalancer not mentioned in API access uri path.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"Missing mandatory field configId in request.\"\r\n}" - } + "description" : "This status code indicates that the provided configuration id is invalid." }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Load Balancer configuration." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the API Portal destination configuration." } }, "security" : [ { @@ -3158,8 +3048,8 @@ } ] }, "put" : { - "description" : "The method is used to update the details of the load Balancer configuration in API Gateway.", - "operationId" : "saveLoadBalancers", + "description" : "The method is used to update the details of the API Portal destination in API Gateway.", + "operationId" : "saveAPIPortalAsDestination", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -3168,24 +3058,24 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/LoadBalancer" + "$ref" : "#/definitions/Destination" }, "x-examples" : { - "application/json" : "{\r\n \"webAppUrl\": \"\",\r\n \"httpUrls\": [\r\n \"http://localhost:8080\"\r\n ],\r\n \"httpsUrls\": [\r\n \"https://localhost:443\"\r\n ],\r\n \"websocketUrls\": []\r\n}" + "application/json" : "{\r\n\t\"sendPolicyViolationEvent\": \"true\",\r\n\t\"metricsPublishInterval\": \"10\",\r\n\t\"sendErrorEvent\": \"true\",\r\n\t\"sendPerformanceMetrics\": \"true\",\r\n\t\"sendLifecycleEvent\": \"true\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the Load Balancer configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"webAppUrl\": \"\",\r\n \"httpUrls\": [\r\n \"http://localhost:8080\"\r\n ],\r\n \"httpsUrls\": [\r\n \"https://localhost:443\"\r\n ],\r\n \"websocketUrls\": []\r\n}" - }, + "description" : "This status code indicates that the API Portal destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/LoadBalancer" + "$ref" : "#/definitions/Destination" + }, + "examples" : { + "application/json" : "{\r\n\t\"configId\": \"apiPortalDestinationConfig\",\r\n\t\"sendPolicyViolationEvent\": \"true\",\r\n\t\"metricsPublishInterval\": \"10\",\r\n\t\"sendErrorEvent\": \"true\",\r\n\t\"sendPerformanceMetrics\": \"true\",\r\n\t\"sendLifecycleEvent\": \"true\"\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage General Administration\" functional privilege to access this API." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." }, "400" : { "description" : "This status code indicates that the request body is invalid.", @@ -3199,25 +3089,24 @@ } ] } }, - "/configurations/whiteListingIPs" : { + "/configurations/cache" : { "get" : { - "description" : "The method retrieves the details of the whitelisting IPs configuration in API Gateway.", - "operationId" : "getWhiteListedIPs", + "operationId" : "getCacheConfig", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the whitelistingIPs configurations are retrieved successfully.", - "examples" : { - "application/json" : "{\r\n \"privateIPs\": [\r\n \"127.0.0.1\",\r\n \"10.0.0.0-10.255.255.255\",\r\n \"172.16.0.0-172.31.255.255 \",\r\n \"192.168.0.0-192.168.255.255\"\r\n ]\r\n}" - }, + "description" : "This status code indicates that the cache configurations are successfully retrieved", "schema" : { - "$ref" : "#/definitions/WhiteListedIPs" + "$ref" : "#/definitions/GatewayCacheConfig" } }, + "400" : { + "description" : "This status code indicates that the user generated an invalid request" + }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the whitelistingIPs configuration." + "description" : "This status code indicates that the user passed invalid credentials" } }, "security" : [ { @@ -3225,37 +3114,22 @@ } ] }, "put" : { - "description" : "The method is used to update the details of the whitelisting IPs configuration in API Gateway.", - "operationId" : "saveWhitelistedIPs", + "operationId" : "updateCacheConfig", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/WhiteListedIPs" - }, - "x-examples" : { - "application/json" : "{\r\n \"privateIPs\": [\r\n \"127.0.0.1\",\r\n \"10.0.0.0-10.255.255.255\",\r\n \"172.16.0.0-172.31.255.255 \",\r\n \"192.168.0.0-192.168.255.255\"\r\n ]\r\n}" - } - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the whitelisting IPs configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"privateIPs\": [\r\n \"127.0.0.1\",\r\n \"10.0.0.0-10.255.255.255\",\r\n \"172.16.0.0-172.31.255.255 \",\r\n \"192.168.0.0-192.168.255.255\"\r\n ]\r\n}" - }, + "description" : "This status code indicates that the cache configurations are updated successfully.", "schema" : { - "$ref" : "#/definitions/WhiteListedIPs" + "$ref" : "#/definitions/GatewayCacheConfig" } }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage General Administration\" functional privilege to access this API." - }, "400" : { - "description" : "This status code indicates that the request body is invalid." + "description" : "This status code indicates that the cache configuratoins payload is incorrect." + }, + "401" : { + "description" : "This status code indicates that the user did not provide the correct credentials to update the cache configuration" } }, "security" : [ { @@ -3263,31 +3137,25 @@ } ] } }, - "/configurations/apiCallBackSettings" : { + "/configurations/customContentTypes" : { "get" : { - "description" : "This method retrieves the API callback processor settings from API Gateway.", - "operationId" : "getAPICallbackProcessorSettings", + "description" : "This REST method is used to get the configured custom content types in API Gateway. Custom content types can be defined for base types XML,JSON and Text.These Custom types can be then used for payload processing in policies like Content based routing,Identify and access and Conditional error processing", + "operationId" : "getCustomContentTypes", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the API callback processor settings is successfully retrieved from API Gateway.", - "examples" : { - "application/json" : "{\r\n \"configuration\": {\r\n \"processCallbackRequests\": true,\r\n \"allowCallBackRequestsHTTPsAccessOnly\": true,\r\n \"allowCallbackRequestAccessToAllowedIPs\": false,\r\n \"allowedIPs\": []\r\n }\r\n}" - }, + "description" : "This response returns all the configured custom content types in API Gateway. The response is a set of key/value pair where key indicates the custom content type and value indicates the base type. The value can be application/xml or application/json or text/xml", "schema" : { - "$ref" : "#/definitions/CallbackProcessorSettings" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", + "$ref" : "#/definitions/CustomContentType" + }, "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: apiCallBackSettings.\"\r\n}" + "application/json" : "{\r\n \"application/myorg+json\": \"application/json\",\r\n \"application/myorg+xml\" : \"application/xml\"\r\n}" } }, "401" : { - "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to retrieve API callback processor settings." + "description" : "This response indicates that invalid credentials have been provided for the request." } }, "security" : [ { @@ -3295,8 +3163,8 @@ } ] }, "put" : { - "description" : "This method updates or creates API callback processor settings in API Gateway. The user should have Manage general administration configurations privilege to update the API callback processor settings.", - "operationId" : "saveAPICallbackProcessorSettings", + "description" : "This REST method is used to update the custom content types for API Gateway.The response is a set of key/value pair where key indicates the custom content type and value indicates the base type. The value can be application/xml or application/json or text/xml", + "operationId" : "saveCustomContentTypes", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -3305,27 +3173,27 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/CallbackProcessorSettings" + "$ref" : "#/definitions/CustomContentType" }, "x-examples" : { - "application/json" : "{\r\n \"configuration\": {\r\n \"processCallbackRequests\": true,\r\n \"allowCallBackRequestsHTTPsAccessOnly\": true,\r\n \"allowCallbackRequestAccessToAllowedIPs\": false,\r\n \"allowedIPs\": []\r\n }\r\n}" + "application/json" : "{\r\n \"application/myorg+json\": \"application/json\", \r\n \"application/myorg+xml\" : \"application/xml\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the API callback processor settings has been successfully updated in API Gateway, and the updated list of API callback processor settings is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"configuration\": {\r\n \"processCallbackRequests\": true,\r\n \"allowCallBackRequestsHTTPsAccessOnly\": true,\r\n \"allowCallbackRequestAccessToAllowedIPs\": false,\r\n \"allowedIPs\": []\r\n }\r\n}" - }, + "description" : "This response returns all the configured custom content types in API Gateway. The response is a set of key/value pair where key indicates the custom content type and value indicates the base type. The value can be application/xml or application/json or text/xml", "schema" : { - "$ref" : "#/definitions/CallbackProcessorSettings" + "$ref" : "#/definitions/CustomContentType" + }, + "examples" : { + "application/json" : "{\r\n \"application/myorg+json\": \"application/json\", \r\n \"application/myorg+xml\" : \"application/xml\"\r\n}" } }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to update API callback processor settings." - }, "400" : { - "description" : "This status code indicates that the the user sends an empty or invalid JSON payload." + "description" : "This status code indicates that the user did not provide proper values for the base content type. The only allowed values are application/xml,application/json,text/xml" + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." } }, "security" : [ { @@ -3333,28 +3201,25 @@ } ] } }, - "/configurations/settings" : { + "/configurations/logConfig" : { "get" : { - "description" : "This method retrieves the list of extended settings and watt properties from API Gateway.", - "operationId" : "getSettings", + "description" : "APIGateway has log files from different components.This method is used to retrieve the log settings of various components used by APIGateway.", + "operationId" : "getLogConfig", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the list of extended settings and watt properties are successfully retrieved from API Gateway.", - "examples" : { - "application/json" : "{\r\n \"preferredSettings\": {\r\n \"wattKeys\": {},\r\n \"extendedKeys\": {\r\n \"allowExceedMaxWindowSize\": \"true\"\r\n }\r\n },\r\n \"allSettings\": {\r\n \"wattKeys\": {\r\n \"watt.server.http.allowOptions\": \"true\",\r\n \"watt.server.coder.responseAsXML\": \"false\",\r\n \"watt.server.SoapRPC.checkHeaders\": \"true\",\r\n \"watt.server.ws.responseTNS.from.request\": \"false\",\r\n \"watt.server.brokerTransport.dur\": \"60\"\r\n },\r\n \"extendedKeys\": {\r\n \"allowExceedMaxWindowSize\": \"true\",\r\n \"saveAuditlogsWithPayload\": \"true\",\r\n \"apig_schemaValidationPoolSize\": \"10\",\r\n \"apig_MENConfiguration_tickInterval\": \"60\",\r\n \"pg_JWT_isHTTPS\": \"true\"\r\n\t}\r\n }\r\n}" - }, + "description" : "This status code indicates that the external log configuration is retrieved successfully.", "schema" : { - "$ref" : "#/definitions/ExtendedSettingsOutput" + "$ref" : "#/definitions/LogConfiguration" + }, + "examples" : { + "application/json" : "{\"apigatewayLogger\": \"trace\",\"elasticSearchLogger\": \"info\",\"kibanaLogger\": \"verbose\",\"enableSessionLogger\": \"false\",\"enableSecurityLogger\": \"true\",\"sagOsgiLogger\": \"debug\",\"enableLogAggregation\": \"true\",\"logDestination\": \"INTERNAL\"}" } }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid." - }, "401" : { - "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to retrieve extended and watt settings." + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the log configuration." } }, "security" : [ { @@ -3362,37 +3227,23 @@ } ] }, "put" : { - "description" : "This method updates or creates a list of extended settings and watt properties in API Gateway. The user should have an API Gateway administrator access to update thse settings. The user needs to send only the modified settings i.e, 'preferredSettings', in the payload.", - "operationId" : "saveSettings", + "description" : "The method is used to update the details of the log configuration in API Gateway.", + "operationId" : "saveLogConfig", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/ExtendedSettingsInput" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"preferredSettings\": {\r\n\t\t\"wattKeys\": {\r\n\t\t\"watt.net.timeout\": \"300\",\r\n\t\t\"watt.server.oauth.authCode.expirySeconds\": \"600\"\r\n\t},\r\n\t\"extendedKeys\": {\r\n\t\t\"pg_oauth2_isHTTPS\": \"false\"\r\n\t}\r\n\t}}" - } - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the list of extended settings and watt properties has been successfully updated in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"preferredSettings\": {\r\n \"wattKeys\": {},\r\n \"extendedKeys\": {\r\n \"allowExceedMaxWindowSize\": \"true\"\r\n }\r\n },\r\n \"allSettings\": {\r\n \"wattKeys\": {\r\n \"watt.server.http.allowOptions\": \"true\",\r\n \"watt.server.coder.responseAsXML\": \"false\",\r\n \"watt.server.SoapRPC.checkHeaders\": \"true\",\r\n \"watt.server.ws.responseTNS.from.request\": \"false\",\r\n \"watt.server.brokerTransport.dur\": \"60\"\r\n },\r\n \"extendedKeys\": {\r\n \"allowExceedMaxWindowSize\": \"true\",\r\n \"saveAuditlogsWithPayload\": \"true\",\r\n \"apig_schemaValidationPoolSize\": \"10\",\r\n \"apig_MENConfiguration_tickInterval\": \"60\",\r\n \"pg_JWT_isHTTPS\": \"true\"\r\n\t}\r\n }\r\n}" - }, + "description" : "This status code indicates that the log configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/ExtendedSettingsOutput" + "$ref" : "#/definitions/LogConfiguration" + }, + "examples" : { + "application/json" : "{\"apigatewayLogger\": \"trace\",\"elasticSearchLogger\": \"info\",\"kibanaLogger\": \"verbose\",\"enableSessionLogger\": \"false\",\"enableSecurityLogger\": \"true\",\"sagOsgiLogger\": \"debug\",\"enableLogAggregation\": \"true\",\"logDestination\": \"INTERNAL\"}" } }, "401" : { - "description" : "This status code indicates that the user did not provide any user credential or the user is not authorized to update extended and watt settings." - }, - "400" : { - "description" : "This status code indicates that the the user sends an empty or invalid JSON payload." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Administration\" functional privilege to access this API." } }, "security" : [ { @@ -3400,28 +3251,25 @@ } ] } }, - "/configurations/errorProcessing" : { + "/configurations/ldapConfig" : { "get" : { - "description" : "This REST method is used to get the configured error template and the value of the property - sendNativeProviderFault,which enables the server to forward the native error as it is.", - "operationId" : "getErrorProcessingDetails", + "description" : "Retrieves the LDAP configuration settings configured in the API Gateway", + "operationId" : "getLdapConfig", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This response returns the current fault message templates and the native fault configuration", - "examples" : { - "application/json" : "{\r\n \"sendNativeProviderFault\": \"false\",\r\n \"defaultErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION.\",\r\n \"fallbackErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION\"\r\n}" - }, + "description" : "", "schema" : { - "$ref" : "#/definitions/ErrorProcessing" + "$ref" : "#/definitions/InputLdapConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"ldapConfig\": {\r\n \"cacheSize\": \"10\",\r\n \"cacheTTL\": \"60\",\r\n \"provider\": \"LDAP\",\r\n \"ldapDirectoryList\": [\r\n {\r\n \"url\": \"ldap://abc.xyz.org:3128\",\r\n \"principal\": \"CN=alias, OU=User,DC=xyz,DC=org\",\r\n \"password\": \"abcde\",\r\n \"timeout\": \"5\",\r\n \"poolMin\": \"0\",\r\n \"poolMax\": \"10\",\r\n \"useaf\": false,\r\n \"dnPrefix\": null,\r\n \"dnSuffix\": null,\r\n \"uidProp\": \"uidAccountName\",\r\n \"userRootDn\": \"OU=User,DC=xyz,DC=org\",\r\n \"group\": \"Administrators\",\r\n \"memberAttribute\": \"member\",\r\n \"groupIdProperty\": \"gidAccountName\",\r\n \"groupRootDN\": \"OU=Groups,DC=xyz,DC=org\",\r\n \"index\": 0\r\n }\r\n ]\r\n }\r\n}" } }, - "400" : { - "description" : "This status code indicates the request payload is not correct and corresponding error details can be seen in the response body" - }, "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3429,8 +3277,8 @@ } ] }, "put" : { - "description" : "This REST method is used to update the default error template with any custom templates and the value of the property - sendNativeProviderFault.", - "operationId" : "saveErrorProcessingDetails", + "description" : "Saves the LDAP configuration settings in the API Gateway", + "operationId" : "saveLdapConfig", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -3439,27 +3287,24 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/ErrorProcessing" + "$ref" : "#/definitions/InputLdapConfiguration" }, "x-examples" : { - "application/json" : "{\r\n \"sendNativeProviderFault\": \"false\",\r\n \"defaultErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION.\",\r\n \"fallbackErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION\"\r\n}" + "application/json" : "{\r\n \"ldapConfig\": {\r\n \"cacheSize\": \"10\",\r\n \"cacheTTL\": \"60\",\r\n \"provider\": \"LDAP\",\r\n \"ldapDirectoryList\": [\r\n {\r\n \"url\": \"ldap://abc.xyz.org:3128\",\r\n \"principal\": \"CN=alias, OU=User,DC=xyz,DC=org\",\r\n \"password\": \"abcde\",\r\n \"timeout\": \"5\",\r\n \"poolMin\": \"0\",\r\n \"poolMax\": \"10\",\r\n \"useaf\": false,\r\n \"dnPrefix\": null,\r\n \"dnSuffix\": null,\r\n \"uidProp\": \"uidAccountName\",\r\n \"userRootDn\": \"OU=User,DC=xyz,DC=org\",\r\n \"group\": \"Administrators\",\r\n \"memberAttribute\": \"member\",\r\n \"groupIdProperty\": \"gidAccountName\",\r\n \"groupRootDN\": \"OU=Groups,DC=xyz,DC=org\",\r\n \"index\": 0\r\n }\r\n ]\r\n }\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that API Gateway has successfully updated the API Fault template and the updated template can be found in the response body", - "examples" : { - "application/json" : "{\r\n \"sendNativeProviderFault\": \"false\",\r\n \"defaultErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION.\",\r\n \"fallbackErrorMessage\": \"API Gateway encountered an error. Error Message: $ERROR_MESSAGE. Request Details: Service - $SERVICE, Operation - $OPERATION, Invocation Time:$TIME, Date:$DATE, Client IP - $CLIENT_IP, User - $USER and Application:$CONSUMER_APPLICATION\"\r\n}" - }, + "description" : "", "schema" : { - "$ref" : "#/definitions/ErrorProcessing" + "$ref" : "#/definitions/InputLdapConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"ldapConfig\": {\r\n \"cacheSize\": \"10\",\r\n \"cacheTTL\": \"60\",\r\n \"provider\": \"LDAP\",\r\n \"ldapDirectoryList\": [\r\n {\r\n \"url\": \"ldap://abc.xyz.org:3128\",\r\n \"principal\": \"CN=alias, OU=User,DC=xyz,DC=org\",\r\n \"password\": \"abcde\",\r\n \"timeout\": \"5\",\r\n \"poolMin\": \"0\",\r\n \"poolMax\": \"10\",\r\n \"useaf\": false,\r\n \"dnPrefix\": null,\r\n \"dnSuffix\": null,\r\n \"uidProp\": \"uidAccountName\",\r\n \"userRootDn\": \"OU=User,DC=xyz,DC=org\",\r\n \"group\": \"Administrators\",\r\n \"memberAttribute\": \"member\",\r\n \"groupIdProperty\": \"gidAccountName\",\r\n \"groupRootDN\": \"OU=Groups,DC=xyz,DC=org\",\r\n \"index\": 0\r\n }\r\n ]\r\n }\r\n}" } }, "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "400" : { - "description" : "This status code indicates the request payload is not correct and corresponding error details can be seen in the response body" + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3467,31 +3312,25 @@ } ] } }, - "/configurations/keystore" : { + "/configurations/passwordRestrictions" : { "get" : { - "description" : "The method retrieves the details of the default keystore, truststore and alias settings in API Gateway. You might want to configure API Gateway to refer to a default keystore, truststore, or both, before deploying any SOAP message flows that require signature, encryption, X.509 authentication, and so on, as configured in the Inbound Authentication - Message policy. The default keystore and truststore are that you want API Gateway to use for the incoming secured messages", - "operationId" : "getKeyStoreTrustore", + "description" : "Retrieves the password restrictions settings configured in API Gateway", + "operationId" : "getPasswordRestrictions", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the default keystore, truststore and alias configurations are retrieved successfully. ", - "examples" : { - "application/json" : "{\r\n\t\"keystoreName\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\"signingAlias\": \"ssos\",\r\n\t\"truststoreName\": \"DEFAULT_IS_TRUSTSTORE\"\r\n}" - }, + "description" : "", "schema" : { - "$ref" : "#/definitions/KeystoreTruststore" - } - }, - "400" : { - "description" : "This status code indicates that the keystore not mentioned in API access uri path.", + "$ref" : "#/definitions/PasswordRestrictions" + }, "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"Missing mandatory field configId in request.\"\r\n}" + "application/json" : "{\r\n \"mode\": \"lax\",\r\n \"minLowerChars\": \"10\",\r\n \"minDigits\": \"10\",\r\n \"minLength\": \"10\",\r\n \"enablePasswordChange\": \"true\",\r\n \"historyLength\": \"3\",\r\n \"maxIdenticalCharsInARow\": \"10\",\r\n \"minSpecialChars\": \"10\",\r\n \"minUpperChars\": \"10\",\r\n \"maxLength\": \"20\"\r\n}" } }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving this configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3499,8 +3338,8 @@ } ] }, "put" : { - "description" : "The method is used to update the details of the default keystore, truststore and alias configuration in API Gateway.", - "operationId" : "saveKeystoreTruststore", + "description" : "Saves the password restrictions settings in API Gateway", + "operationId" : "savePasswordRestrictions", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -3509,30 +3348,24 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/KeystoreTruststore" + "$ref" : "#/definitions/PasswordRestrictions" }, "x-examples" : { - "application/json" : "{\r\n\t\"keystoreName\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\"signingAlias\": \"ssos\",\r\n\t\"truststoreName\": \"DEFAULT_IS_TRUSTSTORE\"\r\n}" + "application/json" : "{\r\n \"mode\": \"lax\",\r\n \"minLowerChars\": \"10\",\r\n \"minDigits\": \"10\",\r\n \"minLength\": \"10\",\r\n \"enablePasswordChange\": \"true\",\r\n \"historyLength\": \"3\",\r\n \"maxIdenticalCharsInARow\": \"10\",\r\n \"minSpecialChars\": \"10\",\r\n \"minUpperChars\": \"10\",\r\n \"maxLength\": \"20\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the default keystore, truststore and alias configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"configId\": \"keystore\",\r\n \"keystoreName\": \"DEFAULT_IS_KEYSTORE\",\r\n \"signingAlias\": \"ssos\",\r\n \"truststoreName\": \"DEFAULT_IS_TRUSTSTORE\"\r\n}" - }, + "description" : "", "schema" : { - "$ref" : "#/definitions/KeystoreTruststore" + "$ref" : "#/definitions/PasswordRestrictions" + }, + "examples" : { + "application/json" : "{\r\n \"mode\": \"lax\",\r\n \"minLowerChars\": \"10\",\r\n \"minDigits\": \"10\",\r\n \"minLength\": \"10\",\r\n \"enablePasswordChange\": \"true\",\r\n \"historyLength\": \"3\",\r\n \"maxIdenticalCharsInARow\": \"10\",\r\n \"minSpecialChars\": \"10\",\r\n \"minUpperChars\": \"10\",\r\n \"maxLength\": \"20\"\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage security configurations\" functional privilege to access this API." - }, - "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3540,31 +3373,25 @@ } ] } }, - "/configurations/gatewayDestinationConfig" : { + "/configurations/passwordExpiry" : { "get" : { - "description" : "The method retrieves the details of the API Gateway destination. API Gateway can publish runtime events(example: policy violation, log invocation, error events etc), design time events (example: audit log events) and metrics data. By default, error events, lifecycle events, policy violation event, audit logs and performance data are published to API Gateway.", - "operationId" : "getGatewayAsDestination", + "description" : "Retrieves the password expiry settings configured in API Gateway", + "operationId" : "getPasswordExpirySettings", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the API Gateway destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to API Gateway destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to API Gateway destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to API Gateway destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to API Gateway destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60. sendAuditlogAliasManagementEvent indicates whether API Gateway has to send Alias Management related audit logs to API Gateway destination. sendAuditlogPackageManagementEvent indicates whether API Gateway has to send Package Management related audit logs to API Gateway destination. sendAuditlogRuntimeDataManagementEvent indicates whether API Gateway has to send RuntimeData Management related audit logs to API Gateway destination. sendAuditlogPolicyManagementEvent indicates whether API Gateway has to send Policy Management related audit logs to API Gateway destination. sendAuditlogPlanManagementEvent indicates whether API Gateway has to send Plan Management related audit logs to API Gateway destination. sendAuditlogApprovalManagementEvent indicates whether API Gateway has to send Approval Management related audit logs to API Gateway destination. sendAuditlogUserManagementEvent indicates whether API Gateway has to send User Management related audit logs to API Gateway destination. sendAuditlogApplicationManagementEvent indicates whether API Gateway has to send Application Management related audit logs to API Gateway destination. sendAuditlogAdministrationEvent indicates whether API Gateway has to send Administration related audit logs to API Gateway destination. sendAuditlogGroupManagementEvent indicates whether API Gateway has to send Group Management related audit logs to API Gateway destination. sendAuditlogAccessProfileManagementEvent indicates whether API Gateway has to send Team Management related audit logs to API Gateway destination. sendAuditlogAPIManagementEvent indicates whether API Gateway has to send API Management related audit logs to API Gateway destination. sendAuditlogPromotionManagementEvent indicates whether API Gateway has to send Promotion Management related audit logs to API Gateway destination.", - "examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - }, + "description" : "", "schema" : { - "$ref" : "#/definitions/Destination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", + "$ref" : "#/definitions/PasswordExpirySettings" + }, "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: gatewayDestinationConfigg.\"\r\n}" + "application/json" : "{\r\n \"expirationInterval\": \"90\",\r\n \"emailIds\": \"fa@abc.xyz\\nfa1@abc.xyz\",\r\n \"applicableUsers\": \"user1;user2\",\r\n \"expiryEmailBefore\": \"3\",\r\n \"isEnabled\": \"true\",\r\n \"remainingUsers\": \"user3;user4\"\r\n}" } }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the API Gateway destination configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3572,8 +3399,8 @@ } ] }, "put" : { - "description" : "The method is used to update the details of the API Gateway destination in API Gateway.", - "operationId" : "saveGatewayAsDestination", + "description" : "Saves the password expiry settings in API Gateway", + "operationId" : "savePasswordExpirySettings", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -3582,36 +3409,24 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/Destination" + "$ref" : "#/definitions/PasswordExpirySettings" }, "x-examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" + "application/json" : "{\r\n \"expirationInterval\": \"90\",\r\n \"emailIds\": \"fa@abc.xyz\\nfa1@abc.xyz\",\r\n \"applicableUsers\": \"user1;user2\",\r\n \"expiryEmailBefore\": \"3\",\r\n \"isEnabled\": \"true\",\r\n \"remainingUsers\": \"user3;user4\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the API Gateway destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - }, + "description" : "", "schema" : { - "$ref" : "#/definitions/Destination" - } - }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "$ref" : "#/definitions/PasswordExpirySettings" + }, "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for API Gateway destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: gatewayDestinationConfig\"\r\n}" + "application/json" : "{\r\n \"expirationInterval\": \"90\",\r\n \"emailIds\": \"fa@abc.xyz\\nfa1@abc.xyz\",\r\n \"applicableUsers\": \"user1;user2\",\r\n \"expiryEmailBefore\": \"3\",\r\n \"isEnabled\": \"true\",\r\n \"remainingUsers\": \"user3;user4\"\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." - }, - "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3619,31 +3434,25 @@ } ] } }, - "/configurations/auditlogDestinationConfig" : { + "/configurations/accountLockSettings" : { "get" : { - "description" : "The method retrieves the details of the Transaction Logger destination in API Gateway. Transaction Logger captures the API runtime invocations performed in API Gateway. The transaction logger data is written to a file or a database based on the configurations. Transactions events are written to the transaction logger only when the Transaction Logger is selected as a destination in Log Invocation Policy.", - "operationId" : "getAuditLogAsDestination", + "description" : "Retrieves the account lock settings configured in API Gateway", + "operationId" : "getAccountLockSettings", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the Transaction Logger destination configurations are retrieved successfully.", - "examples" : { - "application/json" : "{\r\n \"name\": \"API Gateway Transaction Logger\",\r\n \"enabled\": \"false\",\r\n \"mode\": \"synchronous\",\r\n \"guaranteed\": \"false\",\r\n \"destination\": \"file\",\r\n \"maximumQueueSize\": \"100000\",\r\n \"maximumRetries\": \"3\",\r\n \"waitBetweenRetries\": \"5\"\r\n}" - }, + "description" : "", "schema" : { - "$ref" : "#/definitions/AuditLogDestination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: auditlogDestinationConfigg.\"\r\n}" + "$ref" : "#/definitions/AccountLockSettings" + }, + "examples" : { + "application/json" : "{\r\n \"blockDuration\": \"15\",\r\n \"isEnabled\": \"true\",\r\n \"timeIntervalUnit\": \"Minutes\",\r\n \"timeInterval\": \"100\",\r\n \"maximumLoginAttempts\": \"2\",\r\n \"blockDurationUnit\": \"Minutes\",\r\n \"appliesToUsers\": \"allUsersExceptPredefinedUsers\"\r\n}" } }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Transaction Logger destination configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3651,8 +3460,8 @@ } ] }, "put" : { - "description" : "The method is used to update the details of the Transaction Logger destination in API Gateway.", - "operationId" : "saveAuditLogAsDestination", + "description" : "Saves the account lock settings in API Gateway", + "operationId" : "saveAccountLockSettings", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -3661,36 +3470,24 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/AuditLogDestination" + "$ref" : "#/definitions/AccountLockSettings" }, "x-examples" : { - "application/json" : "{\r\n \"name\": \"API Gateway Transaction Logger\",\r\n \"enabled\": \"false\",\r\n \"mode\": \"synchronous\",\r\n \"guaranteed\": \"false\",\r\n \"destination\": \"file\",\r\n \"maximumQueueSize\": \"100000\",\r\n \"maximumRetries\": \"3\",\r\n \"waitBetweenRetries\": \"5\"\r\n}" + "application/json" : "{\r\n \"blockDuration\": \"15\",\r\n \"isEnabled\": \"true\",\r\n \"timeIntervalUnit\": \"Minutes\",\r\n \"timeInterval\": \"100\",\r\n \"maximumLoginAttempts\": \"2\",\r\n \"blockDurationUnit\": \"Minutes\",\r\n \"appliesToUsers\": \"allUsersExceptPredefinedUsers\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the Transaction Logger destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"name\": \"API Gateway Transaction Logger\",\r\n \"enabled\": \"false\",\r\n \"mode\": \"synchronous\",\r\n \"guaranteed\": \"false\",\r\n \"destination\": \"file\",\r\n \"maximumQueueSize\": \"100000\",\r\n \"maximumRetries\": \"3\",\r\n \"waitBetweenRetries\": \"5\"\r\n}" - }, + "description" : "", "schema" : { - "$ref" : "#/definitions/AuditLogDestination" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." - }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "$ref" : "#/definitions/AccountLockSettings" + }, "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Audit Log destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: auditlogDestinationConfig\"\r\n}" + "application/json" : "{\r\n \"blockDuration\": \"15\",\r\n \"isEnabled\": \"true\",\r\n \"timeIntervalUnit\": \"Minutes\",\r\n \"timeInterval\": \"100\",\r\n \"maximumLoginAttempts\": \"2\",\r\n \"blockDurationUnit\": \"Minutes\",\r\n \"appliesToUsers\": \"allUsersExceptPredefinedUsers\"\r\n}" } }, - "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3698,78 +3495,65 @@ } ] } }, - "/configurations/centraSiteDestinationCommunicationConfig" : { + "/portalGateways" : { "get" : { - "description" : "The method retrieves the communication details of the CentraSite destination in API Gateway. API Gateway can publish events and metrics to the configured CentraSite destination.", - "operationId" : "getCentraSiteCommunicationAsDestination", - "consumes" : [ "application/json" ], + "description" : "This API allows you to retrieve API Portal configurations available in API Gateway.", + "operationId" : "getAllAPIPortalConfiguration", "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the Communication details for the CentraSite destination configurations are retrieved successfully.", - "examples" : { - "application/json" : "{\r\n \"protocol\": \"tcp\",\r\n \"hostName\": \"localhost\",\r\n \"targetName\": \"cstarget\",\r\n \"UDDIPort\": \"53307\",\r\n \"userName\": \"Admin\",\r\n \"password\": \"***\",\r\n \"gatewayAssetId\": \"334-3443-sd34\"\r\n}" - }, + "description" : "This status code indicates that all the API Portal configurations are retrieved successfully.", "schema" : { - "$ref" : "#/definitions/CSCommunicationDestination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", + "$ref" : "#/definitions/PortalGateway" + }, "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: centraSiteDestinationCommunicationConfigg.\"\r\n}" + "application/json" : "{\r\n\t\"portalGatewayResponse\": [{\r\n\t\t\t\"id\": \"c7059719-e434-4b45-9b09-b5176fa8b787\",\r\n\t\t\t\"gatewayName\": \"myportal\",\r\n\t\t\t\"gatewayUsername\": \"adminUser\",\r\n\t\t\t\"gatewayPassword\": \"*****\",\r\n\t\t\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\t\t\"refId\": \"2609fc40-87d2-11e7-1298-d481d790920c\",\r\n\t\t\t\"externalPortal\": {\r\n\t\t\t\t\"type\": \"apiportal\",\r\n\t\t\t\t\"endpointTenant\": \"default\",\r\n\t\t\t\t\"endpointURL\": \"http://api_portal_host/\",\r\n\t\t\t\t\"endpointUsername\": \"adminUser\",\r\n\t\t\t\t\"endpointPassword\": \"*****\"\r\n\t\t\t},\r\n\t\t\t\"version\": \"1.0\",\r\n\t\t\t\"published\": true\r\n\t\t}\r\n\r\n\t]\r\n}" } }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Communication details for the CentraSite destination." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { "Basic" : [ ] } ] }, - "put" : { - "description" : "The method is used to update the Communication details of the CentraSite destination in API Gateway.", - "operationId" : "saveCentraSiteCommunicationAsDestination", + "post" : { + "description" : "This method allows you to create the API Portal configuration in API Gateway.", + "operationId" : "createAPIPortalConfiguration", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "", + "description" : "API Portal configuration payload", "required" : true, "schema" : { - "$ref" : "#/definitions/CSCommunicationDestination" + "$ref" : "#/definitions/PortalGateway" }, "x-examples" : { - "application/json" : "{\r\n \"protocol\": \"tcp\",\r\n \"hostName\": \"localhost\",\r\n \"targetName\": \"cstarget\",\r\n \"UDDIPort\": \"53307\",\r\n \"userName\": \"Admin\",\r\n \"password\": \"***\",\r\n \"gatewayAssetId\": \"334-3443-sd34\"\r\n}" + "application/json" : "{\r\n\t\"externalPortal\": {\r\n\t\t\"type\": \"apiportal\",\r\n\t\t\"endpointURL\": \"http://apiportal_host:18101\",\r\n\t\t\"endpointTenant\": \"default\",\r\n\t\t\"endpointUsername\": \"providerUser\",\r\n\t\t\"endpointPassword\": \"providerPassword\"\r\n\t},\r\n\t\"gatewayName\": \"MyPortalConfiguration\",\r\n\t\"version\": \"1.0\",\r\n\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\"gatewayUsername\": \"adminUser\",\r\n\t\"gatewayPassword\": \"adminPassword\"\r\n}" } } ], "responses" : { - "200" : { - "description" : "This status code indicates that the CentraSite Communication destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"protocol\": \"tcp\",\r\n \"hostName\": \"localhost\",\r\n \"targetName\": \"cstarget\",\r\n \"UDDIPort\": \"53307\",\r\n \"userName\": \"Admin\",\r\n \"password\": \"***\",\r\n \"gatewayAssetId\": \"334-3443-sd34\"\r\n}" - }, + "201" : { + "description" : "This status code indicates that the API Portal configuration is created successfully.", "schema" : { - "$ref" : "#/definitions/CSCommunicationDestination" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." - }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "$ref" : "#/definitions/PortalGateway" + }, "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Audit Log destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: centraSiteDestinationCommunicationConfigg\"\r\n}" + "application/json" : "{\r\n\t\"portalGatewayResponse\": [{\r\n\t\t\"id\": \"c7059719-e434-4b45-9b09-b5176fa8b787\",\r\n\t\t\"gatewayName\": \"myportal\",\r\n\t\t\"gatewayUsername\": \"adminUser\",\r\n\t\t\"gatewayPassword\": \"*****\",\r\n\t\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\t\"refId\": \"2609fc40-87d2-11e7-1298-d481d790920c\",\r\n\t\t\"externalPortal\": {\r\n\t\t\t\"type\": \"apiportal\",\r\n\t\t\t\"endpointTenant\": \"default\",\r\n\t\t\t\"endpointURL\": \"http://apiportal_host/\",\r\n\t\t\t\"endpointUsername\": \"adminUser\",\r\n\t\t\t\"endpointPassword\": \"*****\"\r\n\t\t},\r\n\t\t\"version\": \"1.0\",\r\n\t\t\"published\": true\r\n\t}]\r\n}" } }, "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } + "description" : "This status code indicates that the user has missed some mandatory field that is required to create the API Portal configuration." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "500" : { + "description" : "This status code indicates that an error occurred while processing the information in API Gateway or while communicating with API Portal." } }, "security" : [ { @@ -3777,31 +3561,34 @@ } ] } }, - "/configurations/centraSiteDestinationSNMPConfig" : { + "/portalGateways/{portalGatewayId}" : { "get" : { - "description" : "The method retrieves the SNMP details of the CentraSite destination in API Gateway. API Gateway can publish events and metrics to the configured CentraSite destination.", - "operationId" : "getCentraSiteSNMPAsDestination", - "consumes" : [ "application/json" ], + "description" : "This API allows you to retrieve an API Portal configuration in API Gateway.", + "operationId" : "getAPIPortalConfiguration", "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "name" : "portalGatewayId", + "in" : "path", + "description" : "Id of the API Portal configuration for retrieval", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], "responses" : { "200" : { - "description" : "This status code indicates that the CentraSite SNMP destination configurations are retrieved successfully.", - "examples" : { - "application/json" : "{\r\n \"sendTRAPsToCentrasite\": \"false\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8181\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Administrator\",\r\n \"authorizationPassword\": \"*****\",\r\n \"authorizationProtocol\": \"MD5\",\r\n \"privacyPassword\": \"*****\",\r\n \"privacyProtocol\": \"DES\"\r\n}" - }, + "description" : "This status code indicates that the API Portal configuration is retrieved successfully.", "schema" : { - "$ref" : "#/definitions/CSSNMPDestination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", + "$ref" : "#/definitions/PortalGateway" + }, "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: centraSiteDestinationSNMPConfigg.\"\r\n}" + "application/json" : "{\r\n\t\"portalGatewayResponse\": {\r\n\t\t\"id\": \"c7059719-e434-4b45-9b09-b5176fa8b787\",\r\n\t\t\"gatewayName\": \"mygateway\",\r\n\t\t\"gatewayUsername\": \"adminUser\",\r\n\t\t\"gatewayPassword\": \"*****\",\r\n\t\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\t\"refId\": \"2609fc40-87d2-11e7-1298-d481d790920c\",\r\n\t\t\"externalPortal\": {\r\n\t\t\t\"type\": \"apiportal\",\r\n\t\t\t\"endpointTenant\": \"default\",\r\n\t\t\t\"endpointURL\": \"http://apiportal_host/\",\r\n\t\t\t\"endpointUsername\": \"adminUser\",\r\n\t\t\t\"endpointPassword\": \"*****\"\r\n\t\t},\r\n\t\t\"version\": \"1.0\",\r\n\t\t\"published\": true\r\n\t}\r\n}" } }, + "404" : { + "description" : "This status code indicates that the API Portal configuration is not available." + }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the CentraSite SNMP destination configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -3809,46 +3596,73 @@ } ] }, "put" : { - "description" : "The method is used to update the details of the CentraSite SNMP destination in API Gateway.", - "operationId" : "saveCentraSiteSNMPAsDestination", + "description" : "This API allows you to update API Portal configuration information in API Gateway.", + "operationId" : "updateAPIPortalConfiguration", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { + "name" : "portalGatewayId", + "in" : "path", + "description" : "Id of the API Portal configuration for update", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { "in" : "body", "name" : "body", - "description" : "", + "description" : "API Portal configuration payload", "required" : true, "schema" : { - "$ref" : "#/definitions/CSSNMPDestination" + "$ref" : "#/definitions/PortalGateway" }, "x-examples" : { - "application/json" : "{\r\n \"sendTRAPsToCentrasite\": \"false\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8181\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Administrator\",\r\n \"authorizationPassword\": \"*****\",\r\n \"authorizationProtocol\": \"MD5\",\r\n \"privacyPassword\": \"*****\",\r\n \"privacyProtocol\": \"DES\"\r\n}" + "application/json" : "{\r\n\t\"externalPortal\": {\r\n\t\t\"type\": \"apiportal\",\r\n\t\t\"endpointURL\": \"http://apiportal_host:18101\",\r\n\t\t\"endpointTenant\": \"default\",\r\n\t\t\"endpointUsername\": \"providerUser\",\r\n\t\t\"endpointPassword\": \"providerPassword\"\r\n\t},\r\n\t\"gatewayName\": \"MyPortalConfiguration\",\r\n\t\"version\": \"1.0\",\r\n\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\"gatewayUsername\": \"adminUser\",\r\n\t\"gatewayPassword\": \"adminPassword\"\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the CentraSite SNMP destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"sendTRAPsToCentrasite\": \"false\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8181\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Administrator\",\r\n \"authorizationPassword\": \"*****\",\r\n \"authorizationProtocol\": \"MD5\",\r\n \"privacyPassword\": \"*****\",\r\n \"privacyProtocol\": \"DES\"\r\n}" - }, + "description" : "This status code indicates that the API Portal configuration is updated successfully.", "schema" : { - "$ref" : "#/definitions/CSSNMPDestination" + "$ref" : "#/definitions/PortalGateway" + }, + "examples" : { + "application/json" : "{\r\n\t\"portalGatewayResponse\": [{\r\n\t\t\"id\": \"c7059719-e434-4b45-9b09-b5176fa8b787\",\r\n\t\t\"gatewayName\": \"myportal\",\r\n\t\t\"gatewayUsername\": \"adminUser\",\r\n\t\t\"gatewayPassword\": \"*****\",\r\n\t\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\t\"refId\": \"2609fc40-87d2-11e7-1298-d481d790920c\",\r\n\t\t\"externalPortal\": {\r\n\t\t\t\"type\": \"apiportal\",\r\n\t\t\t\"endpointTenant\": \"default\",\r\n\t\t\t\"endpointURL\": \"http://apiportal_host/\",\r\n\t\t\t\"endpointUsername\": \"adminUser\",\r\n\t\t\t\"endpointPassword\": \"*****\"\r\n\t\t},\r\n\t\t\"version\": \"1.0\",\r\n\t\t\"published\": true\r\n\t}]\r\n}" } }, + "400" : { + "description" : "This status code indicates that the user has missed some mandatory field that is required to update the API Portal configuration." + }, + "404" : { + "description" : "This status code indicates that the API Portal configuration is not available." + }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Audit Log destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: centraSiteDestinationSNMPConfigg\"\r\n}" - } + "500" : { + "description" : "This status code indicates that an error occurred while processing the information in API Gateway or while communicating with API Portal." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This API allows you to delete an API Portal configuration in API Gateway.", + "operationId" : "deleteAPIPortalConfiguration", + "parameters" : [ { + "name" : "portalGatewayId", + "in" : "path", + "description" : "Id of the API Portal configuration for delete.", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, - "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } + "204" : { + "description" : "This status code indicates that the API Portal configuration is deleted successfully." } }, "security" : [ { @@ -3856,157 +3670,101 @@ } ] } }, - "/configurations/jdbcDestinationConfig" : { + "/portalGateways/communities" : { "get" : { - "description" : "The method retrieves the details of the Database destination in API Gateway. API Gateway can publish runtime events(example: policy violation, log invocation, error events etc), design time events (example: audit log events) and metrics to the configured Database destination.", - "operationId" : "getDatabaseAsDestination", - "consumes" : [ "application/json" ], + "description" : "This API allows you to retrieve the details about communities in API Portal. An API can be published from API Gateway to any of the communities available in API Portal", + "operationId" : "getAPIPortalMetadata", "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "name" : "portalGatewayId", + "in" : "query", + "description" : "Id of the API Portal configuration for retrieval of the community information", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "name" : "apiId", + "in" : "query", + "description" : "Id of the API published from API Gateway to API Portal", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], "responses" : { "200" : { - "description" : "This status code indicates that the JDBC destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to API Gateway destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to API Gateway destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to API Gateway destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to API Gateway destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60. sendAuditlogAliasManagementEvent indicates whether API Gateway has to send Alias Management related audit logs to API Gateway destination. sendAuditlogPackageManagementEvent indicates whether API Gateway has to send Package Management related audit logs to API Gateway destination. sendAuditlogRuntimeDataManagementEvent indicates whether API Gateway has to send RuntimeData Management related audit logs to API Gateway destination. sendAuditlogPolicyManagementEvent indicates whether API Gateway has to send Policy Management related audit logs to API Gateway destination. sendAuditlogPlanManagementEvent indicates whether API Gateway has to send Plan Management related audit logs to API Gateway destination. sendAuditlogApprovalManagementEvent indicates whether API Gateway has to send Approval Management related audit logs to API Gateway destination. sendAuditlogUserManagementEvent indicates whether API Gateway has to send User Management related audit logs to API Gateway destination. sendAuditlogApplicationManagementEvent indicates whether API Gateway has to send Application Management related audit logs to API Gateway destination. sendAuditlogAdministrationEvent indicates whether API Gateway has to send Administration related audit logs to API Gateway destination. sendAuditlogGroupManagementEvent indicates whether API Gateway has to send Group Management related audit logs to API Gateway destination. sendAuditlogAccessProfileManagementEvent indicates whether API Gateway has to send Team Management related audit logs to API Gateway destination. sendAuditlogAPIManagementEvent indicates whether API Gateway has to send API Management related audit logs to API Gateway destination. sendAuditlogPromotionManagementEvent indicates whether API Gateway has to send Promotion Management related audit logs to API Gateway destination.", - "examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - }, + "description" : "This status code indicates that the the community information from the API Portal is retrieved successfully.", "schema" : { - "$ref" : "#/definitions/Destination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", + "$ref" : "#/definitions/PortalGatewayCommunitiesData" + }, "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: jdbcDestinationConfigg.\"\r\n}" + "application/json" : "{\r\n\t\"portalGatewayResponse\": {\r\n\t\t\"provider\": \"mcprga02\",\r\n\t\t\"communities\": {\r\n\t\t\t\"portalCommunities\": [{\r\n\t\t\t\t\"id\": \"3bdf8005-5685-3ef5-b132-de4681963fb6\",\r\n\t\t\t\t\"name\": \"Public Community\",\r\n\t\t\t\t\"description\": \"Public Community\",\r\n\t\t\t\t\"status\": \"NEW\"\r\n\t\t\t}]\r\n\t\t}\r\n\t}\r\n}" } }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Database destination configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { "Basic" : [ ] } ] - }, - "put" : { - "description" : "The method is used to update the details of the Database destination in API Gateway.", - "operationId" : "saveDatabaseAsDestination", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Destination" - }, - "x-examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the Database destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Destination" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." - }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Database destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: jdbcDestinationConfig\"\r\n}" - } - }, - "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/configurations/desDestinationConfig" : { - "get" : { - "description" : "The method retrieves the details of the Digital Events destination in API Gateway. Digital Event Services (DES) enables API Gateway to communicate by exchanging digital events. API Gateway can publish runtime events(example: policy violation,log invocation, error events etc), design time events (example: audit log events) and metrics to the configured DES destination.", - "operationId" : "getDigitalEventsAsDestination", - "consumes" : [ "application/json" ], + } + }, + "/approvalConfigurations" : { + "get" : { + "description" : "The method retrieves a list of available approval configurations in API Gateway.", + "operationId" : "getApprovalConfigurations", "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the DES destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to API Gateway destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to API Gateway destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to API Gateway destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to API Gateway destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60. sendAuditlogAliasManagementEvent indicates whether API Gateway has to send Alias Management related audit logs to API Gateway destination. sendAuditlogPackageManagementEvent indicates whether API Gateway has to send Package Management related audit logs to API Gateway destination. sendAuditlogRuntimeDataManagementEvent indicates whether API Gateway has to send RuntimeData Management related audit logs to API Gateway destination. sendAuditlogPolicyManagementEvent indicates whether API Gateway has to send Policy Management related audit logs to API Gateway destination. sendAuditlogPlanManagementEvent indicates whether API Gateway has to send Plan Management related audit logs to API Gateway destination. sendAuditlogApprovalManagementEvent indicates whether API Gateway has to send Approval Management related audit logs to API Gateway destination. sendAuditlogUserManagementEvent indicates whether API Gateway has to send User Management related audit logs to API Gateway destination. sendAuditlogApplicationManagementEvent indicates whether API Gateway has to send Application Management related audit logs to API Gateway destination. sendAuditlogAdministrationEvent indicates whether API Gateway has to send Administration related audit logs to API Gateway destination. sendAuditlogGroupManagementEvent indicates whether API Gateway has to send Group Management related audit logs to API Gateway destination. sendAuditlogAccessProfileManagementEvent indicates whether API Gateway has to send Team Management related audit logs to API Gateway destination. sendAuditlogAPIManagementEvent indicates whether API Gateway has to send API Management related audit logs to API Gateway destination. sendAuditlogPromotionManagementEvent indicates whether API Gateway has to send Promotion Management related audit logs to API Gateway destination.", - "examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - }, + "description" : "This status code indicates that a list of the available approval configurations is retrieved successfully.", "schema" : { - "$ref" : "#/definitions/Destination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", + "$ref" : "#/definitions/ApprovalConfiguration" + }, "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: desDestinationConfigg.\"\r\n}" + "application/json" : "{\r\n \"approvalConfigurations\": [\r\n {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n ]\r\n}" } }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Digital Events destination configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { "Basic" : [ ] } ] }, - "put" : { - "description" : "The method is used to update the details of the Digital Events destination in API Gateway.", - "operationId" : "saveDigitalEventsAsDestination", + "post" : { + "description" : "The method creates an approval configuration in API Gateway.", + "operationId" : "createApprovalConfiguration", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "", + "description" : "This parameter describes the request payload of an approval configuration that is to be created in API Gateway.", "required" : true, "schema" : { - "$ref" : "#/definitions/Destination" + "$ref" : "#/definitions/ApprovalConfiguration" }, "x-examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" + "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the Digital Events destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - }, + "description" : "This status code indicates that the approval configuration has been successfully created in API Gateway.", "schema" : { - "$ref" : "#/definitions/Destination" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." - }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", + "$ref" : "#/definitions/ApprovalConfiguration" + }, "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Digital Events destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: desDestinationConfig\"\r\n}" + "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" } }, "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } + "description" : "This status code indicates that the given approval configuration request body is not correct." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -4014,31 +3772,33 @@ } ] } }, - "/configurations/elasticsearchDestinationConfig" : { + "/approvalConfigurations/{id}" : { "get" : { - "description" : "The method retrieves the details of the Elasticsearch destination in API Gateway. API Gateway can publish runtime events(example: policy violation, log invocation, error events etc), design time events (example: audit log events) and metrics to the configured Elasticsearch destination.", - "operationId" : "getElasticsearchAsDestination", - "consumes" : [ "application/json" ], + "description" : "The method retrieves the details of a specified approval configuration in API Gateway", + "operationId" : "getApprovalConfiguration", "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "name" : "id", + "in" : "path", + "description" : "This parameter specifies the ID of an approval configuration whose details are to be retrieved in API Gateway.", + "required" : true, + "type" : "string" + } ], "responses" : { "200" : { - "description" : "This status code indicates that the Elastic search destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to API Gateway destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to API Gateway destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to API Gateway destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to API Gateway destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60. sendAuditlogAliasManagementEvent indicates whether API Gateway has to send Alias Management related audit logs to API Gateway destination. sendAuditlogPackageManagementEvent indicates whether API Gateway has to send Package Management related audit logs to API Gateway destination. sendAuditlogRuntimeDataManagementEvent indicates whether API Gateway has to send RuntimeData Management related audit logs to API Gateway destination. sendAuditlogPolicyManagementEvent indicates whether API Gateway has to send Policy Management related audit logs to API Gateway destination. sendAuditlogPlanManagementEvent indicates whether API Gateway has to send Plan Management related audit logs to API Gateway destination. sendAuditlogApprovalManagementEvent indicates whether API Gateway has to send Approval Management related audit logs to API Gateway destination. sendAuditlogUserManagementEvent indicates whether API Gateway has to send User Management related audit logs to API Gateway destination. sendAuditlogApplicationManagementEvent indicates whether API Gateway has to send Application Management related audit logs to API Gateway destination. sendAuditlogAdministrationEvent indicates whether API Gateway has to send Administration related audit logs to API Gateway destination. sendAuditlogGroupManagementEvent indicates whether API Gateway has to send Group Management related audit logs to API Gateway destination. sendAuditlogAccessProfileManagementEvent indicates whether API Gateway has to send Team Management related audit logs to API Gateway destination. sendAuditlogAPIManagementEvent indicates whether API Gateway has to send API Management related audit logs to API Gateway destination. sendAuditlogPromotionManagementEvent indicates whether API Gateway has to send Promotion Management related audit logs to API Gateway destination.", - "examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - }, + "description" : "This status code indicates that the details of the specified approval configuration are retrieved successfully.", "schema" : { - "$ref" : "#/definitions/ElasticsearchDestination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", + "$ref" : "#/definitions/ApprovalConfiguration" + }, "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: elasticsearchdestinationConfigg.\"\r\n}" + "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" } }, + "404" : { + "description" : "This status code indicates that an approval configuration with the given ID could not be found in API Gateway." + }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Elasticsearch destination configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { @@ -4046,46 +3806,69 @@ } ] }, "put" : { - "description" : "The method is used to update the details of the Elasticsearch destination in API Gateway.", - "operationId" : "saveElasticsearchAsDestination", + "description" : "The method updates the approval configuration in API Gateway.", + "operationId" : "updateApprovalConfiguration", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "in" : "body", "name" : "body", - "description" : "", + "description" : "This parameter describes the request payload of an approval configuration that is to be updated in API Gateway.", "required" : true, "schema" : { - "$ref" : "#/definitions/ElasticsearchDestination" + "$ref" : "#/definitions/ApprovalConfiguration" }, "x-examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" + "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" } + }, { + "name" : "id", + "in" : "path", + "description" : "This parameter specifies the ID of an approval configuration that is to be updated in API Gateway.", + "required" : true, + "type" : "string" } ], "responses" : { "200" : { - "description" : "This status code indicates that the Elasticsearch destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"sendAuditlogAliasManagementEvent\": \"true\",\r\n \"sendLifecycleEvent\": \"true\",\r\n \"sendAuditlogPackageManagementEvent\": \"true\",\r\n \"sendAuditlogRuntimeDataManagementEvent\": \"true\",\r\n \"sendAuditlogPolicyManagementEvent\": \"true\",\r\n \"sendAuditlogPlanManagementEvent\": \"true\",\r\n \"sendAuditlogApprovalManagementEvent\": \"true\",\r\n \"sendAuditlogUserManagementEvent\": \"true\",\r\n \"sendPerformanceMetrics\": \"true\",\r\n \"sendAuditlogApplicationManagementEvent\": \"true\",\r\n \"sendAuditlogAdministrationEvent\": \"true\",\r\n \"sendPolicyViolationEvent\": \"true\",\r\n \"sendErrorEvent\": \"true\",\r\n \"sendAuditlogGroupManagementEvent\": \"true\",\r\n \"metricsPublishInterval\": \"60\",\r\n \"sendAuditlogAccessProfileManagementEvent\": \"true\",\r\n \"sendAuditlogAPIManagementEvent\": \"true\",\r\n \"sendAuditlogPromotionManagementEvent\": \"true\"\r\n}" - }, + "description" : "This status code indicates that the approval configuration has been successfully updated in API Gateway.", "schema" : { - "$ref" : "#/definitions/ElasticsearchDestination" + "$ref" : "#/definitions/ApprovalConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"approvalConfig\": {\r\n \"id\": \"createApplication\",\r\n \"eventType\": \"createApplication\",\r\n \"isEnabled\": true,\r\n \"approversGroupId\": \"0936de2c-9fb9-4625-b5b0-b7648e0d4103\",\r\n \"approvalMode\": \"anyone\",\r\n \"approvedEmailConfiguration\": {\r\n \"emailSubject\": \"Approval of @event.type\",\r\n \"emailContent\": \"Congratulations @requestor.name !\\n\\nYour request for @event.type has been approved.\",\r\n \"enabled\": false,\r\n \"requestType\": \"approved\"\r\n },\r\n \"rejectedEmailConfiguration\": {\r\n \"emailSubject\": \"Rejection of @event.type\",\r\n \"emailContent\": \"Hello @requestor.name,\\n\\nYour @event.type request has been rejected.\\nReasons:@rejectionReason.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"rejected\"\r\n },\r\n \"initiateApprovalRequestEmailConfiguration\": {\r\n \"emailSubject\": \"Approval request pending\",\r\n \"emailContent\": \"Hello @approver.name,\\n\\n A request by @requestor.name to @event.type needs your review and approval.\\n\\nBest Regards,\\nAPI Gateway Team\\n\\n*** This notification was sent automatically. Do not reply to this email.***\",\r\n \"enabled\": false,\r\n \"requestType\": \"initiate\"\r\n }\r\n }\r\n}" } }, + "400" : { + "description" : "This status code indicates that the given approval configuration request body is not correct." + }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "The method deletes the specified approval configuration in API Gateway.", + "operationId" : "deleteApprovalConfiguration", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "id", + "in" : "path", + "description" : "This parameter specifies the ID of an approval configuration that is to be deleted in API Gateway.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Elasticsearch destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: elasticsearchDestinationConfigg\"\r\n}" - } + "204" : { + "description" : "This status code indicates that the specified approval configuration has been successfully deleted from API Gateway." }, - "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } + "404" : { + "description" : "This status code indicates that an approval configuration with the given ID could not be found in API Gateway." } }, "security" : [ { @@ -4093,40 +3876,31 @@ } ] } }, - "/configurations/snmpDestinationConfig" : { + "/is/jmsConnections" : { "get" : { - "description" : "The method retrieves the details of the SNMP destination in API Gateway. API Gateway can publish events and performance metrics data to the configured 3rd party SNMP server.", - "operationId" : "getSNMPAsDestination", + "description" : "The method retrieves list of all the JMS connections in API Gateway.", + "operationId" : "getAllJMSConnections", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the SNMP destination configurations are retrieved successfully. SendErrorEvent indicates whether API Gateway has to send error events to SNMP destination. SendLifecycleEvent indicates whether API Gateway has to send lifecycle events to SNMP destination. SendPolicyViolationEvent indicates whether API Gateway has to send policy violation events to SNMP destination. SendPerformanceMetrics indicates whether API Gateway has to send performance metrics to SNMP destination. MetricsPublishInterval indicates the interval at which the performance metrics will be published (value has to be between 1-60), default being 60.", - "examples" : { - "application/json" : "{\r\n \"sendTRAPs\": \"false\",\r\n \"snmpTargetType\": \"user\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8081\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Admin\",\r\n \"useAuth\": \"false\",\r\n \"authPassword\": \"\",\r\n \"authProtocol\": \"MD5\",\r\n \"usePrivacy\": \"false\",\r\n \"privacyPassword\": \"\",\r\n \"privacyProtocol\": \"DES\",\r\n \"communityName\": \"\",\r\n \"sendErrorEvent\": \"false\",\r\n \"sendLifecycleEvent\": \"false\",\r\n \"sendPolicyViolationEvent\": \"false\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/SNMPDestination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", + "description" : "This status code indicates that the list of JMS connections is successfully retrieved.", "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: snmpDestinationConfigg.\"\r\n}" + "application/json" : "{\r\n \"jmsList\": [\r\n {\r\n \"id\": \"JMSConn1\",\r\n \"aliasName\": \"JMSConn1\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n },\r\n {\r\n \"id\": \"JMSConn 002\",\r\n \"aliasName\": \"JMSConn 002\",\r\n \"enabled\": \"false\",\r\n \"description\": \"sailesh2\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"1000\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }\r\n ]\r\n}" } }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the SNMP destination configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." } }, "security" : [ { "Basic" : [ ] } ] }, - "put" : { - "description" : "The method is used to update the details of the SNMP destination in API Gateway.", - "operationId" : "saveSNMPAsDestination", + "post" : { + "description" : "The method creates a JMS connection in API Gateway. The API request body must contain the payload for the JMS connection", + "operationId" : "createJMSConnection", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -4135,77 +3909,39 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/SNMPDestination" + "$ref" : "#/definitions/JMSConnectionAlias" }, "x-examples" : { - "application/json" : "{\r\n \"sendTRAPs\": \"false\",\r\n \"snmpTargetType\": \"user\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8081\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Admin\",\r\n \"useAuth\": \"false\",\r\n \"authPassword\": \"\",\r\n \"authProtocol\": \"MD5\",\r\n \"usePrivacy\": \"false\",\r\n \"privacyPassword\": \"\",\r\n \"privacyProtocol\": \"DES\",\r\n \"communityName\": \"\",\r\n \"sendErrorEvent\": \"false\",\r\n \"sendLifecycleEvent\": \"false\",\r\n \"sendPolicyViolationEvent\": \"false\"\r\n}" + "application/json" : "{\"aliasName\":\"JMSConn1\",\"enabled\":\"false\",\"description\":\"adasd\",\"transactionType\":\"0\",\"clientID\":\"clientID\",\"user\":\"user\",\"password\":\"pwd\",\"associationType\":\"0\",\"jndi_jndiAliasName\":\"JNDI_AMQP\",\"jndi_connectionFactoryLookupName\":\"qpidConnectionFactory\",\"jndi_automaticallyCreateUMAdminObjects\":\"false\",\"jndi_enableFollowTheMaster\":\"true\",\"jndi_connectionFactoryUpdateType\":\"NONE\",\"jndi_connectionFactoryPollingInterval\":\"0\",\"classLoader\":\"INTEGRATION_SERVER\",\"csqSize\":\"-1\",\"csqDrainInOrder\":\"true\",\"optTempQueueCreate\":\"true\",\"allowReplyToConsumer\":\"false\",\"manageDestinations\":\"true\",\"allowNewConnectionPerTrigger\":\"true\",\"producerCachingMode\":\"0\",\"producerSessionPoolSize\":\"0\",\"producerSessionPoolMinSize\":\"0\",\"cacheProducersPoolMinSize\":\"0\",\"cacheProducersPoolSize\":\"0\",\"poolTimeout\":\"6000\",\"cacheProducersQueueList\":\"\",\"producerMaxRetryAttempts\":\"0\",\"producerRetryInterval\":\"1000\",\"um_loggingOutput\":\"0\",\"um_producerMessageTracking\":\"false\",\"um_producerIncludedStrings\":\"1000\",\"um_consumerMessageTracking\":\"false\",\"um_consumerIncludedStrings\":\"1000\"}\r\n\r\n" } } ], "responses" : { - "200" : { - "description" : "This status code indicates that the SNMP destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"sendTRAPs\": \"false\",\r\n \"snmpTargetType\": \"user\",\r\n \"hostName\": \"localhost\",\r\n \"port\": \"8081\",\r\n \"transport\": \"tcp\",\r\n \"userName\": \"Admin\",\r\n \"useAuth\": \"false\",\r\n \"authPassword\": \"\",\r\n \"authProtocol\": \"MD5\",\r\n \"usePrivacy\": \"false\",\r\n \"privacyPassword\": \"\",\r\n \"privacyProtocol\": \"DES\",\r\n \"communityName\": \"\",\r\n \"sendErrorEvent\": \"false\",\r\n \"sendLifecycleEvent\": \"false\",\r\n \"sendPolicyViolationEvent\": \"false\"\r\n}" - }, + "201" : { + "description" : "This status code indicates that the JMS connection has been successfully created in API Gateway, and the newly created JMS connection is available in the response body.", "schema" : { - "$ref" : "#/definitions/SNMPDestination" + "$ref" : "#/definitions/JMSConnectionAlias" + }, + "examples" : { + "application/json" : "{\r\n \"jms\": {\r\n \"id\": \"JMSConn11\",\r\n \"aliasName\": \"JMSConn11\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." - }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for SNMP destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: snmpDestinationConfig\"\r\n}" - } + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, "400" : { - "description" : "This status code indicates that the request body is invalid.", + "description" : "This status code indicates that the JMS connection with the given name already exists in API Gateway or the request body is not correct.", "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + "application/json" : "{}" } } }, "security" : [ { "Basic" : [ ] } ] - } - }, - "/configurations/emailDestinationConfig" : { - "get" : { - "description" : "The method retrieves the details of the Email destination in API Gateway. API Gateway can send alerts to the email ID specified either in the Log Invocation, Monitor Service Performance, Monitor Service Level Agreement, (or) Throttling Traffic Optimization policies through the configured Email destination.", - "operationId" : "getEmailAsDestination", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the Email destination configurations are retrieved successfully.", - "examples" : { - "application/json" : "{\r\n \"smtpServer\": \"mailhost\",\r\n \"port\": \"26\",\r\n \"userName\": \"\",\r\n \"password\": \"\",\r\n \"tls\": \"\",\r\n \"truststoreAlias\": \"\",\r\n \"internalEmail\": \"\",\r\n \"serviceEmail\": \"\",\r\n \"fromEmail\": \"a@example.com\",\r\n \"defaultEmailCharset\": \"\",\r\n \"testRecipient\": \"b@example.com\",\r\n \"logInvocationSubject\": \"Log Invocation mail\",\r\n \"logInvocationContent\": \"The transaction event\",\r\n \"monitorSPSubject\": \"Monitor Service Performance mail\",\r\n \"monitorSPContent\": \"The monitoring event\",\r\n \"monitorSLASubject\": \"Monitor SLA mail\",\r\n \"monitorSLAContent\": \"The monitoring event\",\r\n \"throttlingSubject\": \"Throttling mail\",\r\n \"throttlingContent\": \"The Throttling event\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/EmailDestination" - } - }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Invalid configId value in request. configId: emailDestinationConfigg.\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user retrieving the Email destination configuration." - } - }, - "security" : [ { - "Basic" : [ ] - } ] }, "put" : { - "description" : "The method is used to update the details of the Email destination in API Gateway.", - "operationId" : "saveEmailAsDestination", + "description" : "This REST service is used to update the JMS connection", + "operationId" : "updateJMSConnection", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -4214,35 +3950,29 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/EmailDestination" + "$ref" : "#/definitions/JMSConnectionAlias" }, "x-examples" : { - "application/json" : "{\r\n \"smtpServer\": \"mailhost\",\r\n \"port\": \"26\",\r\n \"userName\": \"\",\r\n \"password\": \"\",\r\n \"tls\": \"\",\r\n \"truststoreAlias\": \"\",\r\n \"internalEmail\": \"\",\r\n \"serviceEmail\": \"\",\r\n \"fromEmail\": \"a@example.com\",\r\n \"defaultEmailCharset\": \"\",\r\n \"testRecipient\": \"b@example.com\",\r\n \"logInvocationSubject\": \"Log Invocation mail\",\r\n \"logInvocationContent\": \"The transaction event\",\r\n \"monitorSPSubject\": \"Monitor Service Performance mail\",\r\n \"monitorSPContent\": \"The monitoring event\",\r\n \"monitorSLASubject\": \"Monitor SLA mail\",\r\n \"monitorSLAContent\": \"The monitoring event\",\r\n \"throttlingSubject\": \"Throttling mail\",\r\n \"throttlingContent\": \"The Throttling event\"\r\n}" + "application/json" : "{\r\n \"id\": \"JMSConn11\",\r\n \"aliasName\": \"JMSConn11\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }" } } ], "responses" : { "200" : { - "description" : "This status code indicates that the Email destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"smtpServer\": \"mailhost\",\r\n \"port\": \"26\",\r\n \"userName\": \"\",\r\n \"password\": \"\",\r\n \"tls\": \"\",\r\n \"truststoreAlias\": \"\",\r\n \"internalEmail\": \"\",\r\n \"serviceEmail\": \"\",\r\n \"fromEmail\": \"a@example.com\",\r\n \"defaultEmailCharset\": \"\",\r\n \"testRecipient\": \"b@example.com\",\r\n \"logInvocationSubject\": \"Log Invocation mail\",\r\n \"logInvocationContent\": \"The transaction event\",\r\n \"monitorSPSubject\": \"Monitor Service Performance mail\",\r\n \"monitorSPContent\": \"The monitoring event\",\r\n \"monitorSLASubject\": \"Monitor SLA mail\",\r\n \"monitorSLAContent\": \"The monitoring event\",\r\n \"throttlingSubject\": \"Throttling mail\",\r\n \"throttlingContent\": \"The Throttling event\"\r\n}" - }, + "description" : "This status code indicates that API Gateway has successfully updated the specified JMS connection and the updated JMS connection details can be found in the response body", "schema" : { - "$ref" : "#/definitions/EmailDestination" + "$ref" : "#/definitions/JMSConnectionAlias" + }, + "examples" : { + "application/json" : "{\r\n \"jms\": {\r\n \"id\": \"JMSConn11\",\r\n \"aliasName\": \"JMSConn11\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }\r\n}" } }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." - }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested destination configuration in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Email destination configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: emailDestinationConfig\"\r\n}" - } + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." }, "400" : { - "description" : "This status code indicates that the request body is invalid.", + "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + "application/json" : "" } } }, @@ -4251,68 +3981,68 @@ } ] } }, - "/configurations/apiPortalDestinationConfig" : { + "/is/jmsConnections/{jmsConnId}" : { "get" : { - "description" : "The method retrieves the details of the API Portal destination configurations. API Gateway can publish events and performance metrics data. By default, error events, lifecycle events, policy violation event, and performance data are published to API Portal.", - "operationId" : "getAPIPortalAsDestination", + "description" : "The method retrieves the specified JMS connection in API Gateway.", + "operationId" : "getJMSConnection", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "name" : "jmsConnId", + "in" : "path", + "description" : "This path parameter is used to specify the JMS connection id which JMS connection needs to be retrived.", + "required" : true, + "type" : "string", + "x-example" : "sampleJMSConn" + } ], "responses" : { "200" : { - "description" : "This status code indicates that the API Portal destination configurations are retrieved successfully.", - "examples" : { - "application/json" : "{\r\n\t\"sendPolicyViolationEvent\": \"true\",\r\n\t\"metricsPublishInterval\": \"10\",\r\n\t\"sendErrorEvent\": \"true\",\r\n\t\"sendPerformanceMetrics\": \"true\",\r\n\t\"sendLifecycleEvent\": \"true\"\r\n}" - }, + "description" : "This status code indicates that the specified JMS connections is successfully retrieved.", "schema" : { - "$ref" : "#/definitions/Destination" + "$ref" : "#/definitions/JMSConnectionAlias" + }, + "examples" : { + "application/json" : "{\r\n \"jms\": {\r\n \"id\": \"JMSConn1\",\r\n \"aliasName\": \"JMSConn1\",\r\n \"enabled\": \"false\",\r\n \"description\": \"adasd\",\r\n \"transactionType\": \"0\",\r\n \"clientID\": \"clientID\",\r\n \"user\": \"user\",\r\n \"password\": \"pwd\",\r\n \"associationType\": \"0\",\r\n \"jndi_jndiAliasName\": \"JNDI_AMQP\",\r\n \"jndi_connectionFactoryLookupName\": \"qpidConnectionFactory\",\r\n \"jndi_automaticallyCreateUMAdminObjects\": \"false\",\r\n \"jndi_enableFollowTheMaster\": \"true\",\r\n \"jndi_connectionFactoryUpdateType\": \"NONE\",\r\n \"jndi_connectionFactoryPollingInterval\": \"0\",\r\n \"classLoader\": \"INTEGRATION_SERVER\",\r\n \"csqSize\": \"-1\",\r\n \"csqDrainInOrder\": \"true\",\r\n \"optTempQueueCreate\": \"true\",\r\n \"allowReplyToConsumer\": \"false\",\r\n \"manageDestinations\": \"true\",\r\n \"allowNewConnectionPerTrigger\": \"true\",\r\n \"producerCachingMode\": \"0\",\r\n \"producerSessionPoolMinSize\": \"0\",\r\n \"producerSessionPoolSize\": \"0\",\r\n \"cacheProducersPoolMinSize\": \"0\",\r\n \"cacheProducersPoolSize\": \"0\",\r\n \"poolTimeout\": \"6000\",\r\n \"cacheProducersQueueList\": \"\",\r\n \"producerMaxRetryAttempts\": \"0\",\r\n \"producerRetryInterval\": \"1000\",\r\n \"um_loggingOutput\": \"0\",\r\n \"um_producerMessageTracking\": \"false\",\r\n \"um_producerIncludedStrings\": \"1000\",\r\n \"um_consumerMessageTracking\": \"false\",\r\n \"um_consumerIncludedStrings\": \"1000\"\r\n }\r\n}" } }, - "400" : { - "description" : "This status code indicates that the provided configuration id is invalid." - }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the API Portal destination configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the JMS id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Exception occured : The JMS settings object with the given ID: JMSConn11 couldn't found\"\r\n}" + } } }, "security" : [ { "Basic" : [ ] } ] }, - "put" : { - "description" : "The method is used to update the details of the API Portal destination in API Gateway.", - "operationId" : "saveAPIPortalAsDestination", + "delete" : { + "description" : "This delete request will delete the JMS connection based on the JMS connection id which is specified in path", + "operationId" : "deleteJMSConnection", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", + "name" : "jmsConnId", + "in" : "path", + "description" : "This path parameter is used to specify the JMS connection id for which JMS connection needs to deleted.", "required" : true, - "schema" : { - "$ref" : "#/definitions/Destination" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"sendPolicyViolationEvent\": \"true\",\r\n\t\"metricsPublishInterval\": \"10\",\r\n\t\"sendErrorEvent\": \"true\",\r\n\t\"sendPerformanceMetrics\": \"true\",\r\n\t\"sendLifecycleEvent\": \"true\"\r\n}" - } + "type" : "string", + "x-example" : "sampleJMSConn" } ], "responses" : { - "200" : { - "description" : "This status code indicates that the API Portal destination configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n\t\"configId\": \"apiPortalDestinationConfig\",\r\n\t\"sendPolicyViolationEvent\": \"true\",\r\n\t\"metricsPublishInterval\": \"10\",\r\n\t\"sendErrorEvent\": \"true\",\r\n\t\"sendPerformanceMetrics\": \"true\",\r\n\t\"sendLifecycleEvent\": \"true\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Destination" - } + "204" : { + "description" : "This status code indicates that the specified JMS connection is successfully deleted" }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Destination Administration\" functional privilege to access this API." + "description" : "This status code indicates either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to delete the assertion." }, - "400" : { - "description" : "This status code indicates that the request body is invalid.", + "404" : { + "description" : "This status code indicates that the corresponding JMS connection id does not exist", "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" } } }, @@ -4321,47 +4051,65 @@ } ] } }, - "/configurations/cache" : { - "get" : { - "operationId" : "getCacheConfig", + "/is/jmsConnections/{jmsConnId}/enable" : { + "put" : { + "description" : "The method enables the specified JMS connections in API Gateway.", + "operationId" : "enableJMSConnection", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "name" : "jmsConnId", + "in" : "path", + "description" : "This path parameter is used to specify the JMS connection id which JMS connection needs to be enabled.", + "required" : true, + "type" : "string", + "x-example" : "sampleJMSConn" + } ], "responses" : { "200" : { - "description" : "This status code indicates that the cache configurations are successfully retrieved", - "schema" : { - "$ref" : "#/definitions/GatewayCacheConfig" + "description" : "This status code indicates that the specified JMS connections is successfully enabled.", + "examples" : { + "application/json" : "{\r\n \"status\": \"JMS Connection Alias \\\"JMSConn11\\\" set to enabled.\",\r\n \"result\": true\r\n}" } }, - "400" : { - "description" : "This status code indicates that the user generated an invalid request" - }, "401" : { - "description" : "This status code indicates that the user passed invalid credentials" + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "500" : { + "description" : "" } }, "security" : [ { "Basic" : [ ] } ] - }, + } + }, + "/is/jmsConnections/{jmsConnId}/disable" : { "put" : { - "operationId" : "updateCacheConfig", + "description" : "The method disables the specified JMS connections in API Gateway.", + "operationId" : "disableJMSConnection", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "name" : "jmsConnId", + "in" : "path", + "description" : "This path parameter is used to specify the JMS connection id which JMS connection needs to be disabled.", + "required" : true, + "type" : "string", + "x-example" : "sampleJMSConn" + } ], "responses" : { "200" : { - "description" : "This status code indicates that the cache configurations are updated successfully.", - "schema" : { - "$ref" : "#/definitions/GatewayCacheConfig" + "description" : "This status code indicates that the specified JMS connections is successfully disabled.", + "examples" : { + "application/json" : "{\r\n \"status\": \"JMS Connection Alias \\\"JMSConn11\\\" set to disabled.\",\r\n \"result\": true\r\n}" } }, - "400" : { - "description" : "This status code indicates that the cache configuratoins payload is incorrect." - }, "401" : { - "description" : "This status code indicates that the user did not provide the correct credentials to update the cache configuration" + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "500" : { + "description" : "" } }, "security" : [ { @@ -4369,63 +4117,58 @@ } ] } }, - "/configurations/customContentTypes" : { + "/apitransactions/jobs/{jobId}" : { "get" : { - "description" : "This REST method is used to get the configured custom content types in API Gateway. Custom content types can be defined for base types XML,JSON and Text.These Custom types can be then used for payload processing in policies like Content based routing,Identify and access and Conditional error processing", - "operationId" : "getCustomContentTypes", + "description" : "Use this method to know the status of a specific job. This method returns the status and file name (in case of archive process) as a response. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation", + "operationId" : "trackJobStatus", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "name" : "jobId", + "in" : "path", + "description" : "This parameter indicates the job Id. job Id is needed to identify and track the status of a job which has been initiated earlier. Ex: jobId=1504011632215", + "required" : true, + "type" : "string", + "x-example" : "1234432412312" + } ], "responses" : { "200" : { - "description" : "This response returns all the configured custom content types in API Gateway. The response is a set of key/value pair where key indicates the custom content type and value indicates the base type. The value can be application/xml or application/json or text/xml", + "description" : "This response indicates that the status has been returned to the requestor.", "examples" : { - "application/json" : "{\r\n \"application/myorg+json\": \"application/json\",\r\n \"application/myorg+xml\" : \"application/xml\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/CustomContentType" + "application/json" : "{\r\n \"status\": \"Completed\",\r\n \"Filename\": \"default-2017-08-31-1504177207377\"\r\n}" } }, "401" : { "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "500" : { + "description" : "This response indicates that the server has encountered an error while returning the status. " } }, "security" : [ { "Basic" : [ ] } ] - }, - "put" : { - "description" : "This REST method is used to update the custom content types for API Gateway.The response is a set of key/value pair where key indicates the custom content type and value indicates the base type. The value can be application/xml or application/json or text/xml", - "operationId" : "saveCustomContentTypes", + } + }, + "/apitransactions/jobs" : { + "get" : { + "description" : "This method returns a list of pending jobs. Every time you initiate archive, restore or purge process you will get the job id as a response. You can then use the specific job id to query the status of the initiated operation. The user should be part of API-Gateway-Administrators group or else should have 'Manage purge and restore runtime events' privilege to perform this operation.", + "operationId" : "listAllPendingJobs", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/CustomContentType" - }, - "x-examples" : { - "application/json" : "{\r\n \"application/myorg+json\": \"application/json\", \r\n \"application/myorg+xml\" : \"application/xml\"\r\n}" - } - } ], + "parameters" : [ ], "responses" : { "200" : { - "description" : "This response returns all the configured custom content types in API Gateway. The response is a set of key/value pair where key indicates the custom content type and value indicates the base type. The value can be application/xml or application/json or text/xml", + "description" : "This response indicates that the list of in progress job ids has been returned to the requestor.", "examples" : { - "application/json" : "{\r\n \"application/myorg+json\": \"application/json\", \r\n \"application/myorg+xml\" : \"application/xml\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/CustomContentType" + "application/json" : "{\r\n \"pendingJobs\": [124234,3312312]\r\n}" } }, - "400" : { - "description" : "This status code indicates that the user did not provide proper values for the base content type. The only allowed values are application/xml,application/json,text/xml" - }, "401" : { "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "500" : { + "description" : "This response indicates that the server has encountered an error while returning the list of in progress job ids. " } }, "security" : [ { @@ -4433,25 +4176,36 @@ } ] } }, - "/configurations/logConfig" : { + "/is/kerberos" : { "get" : { - "description" : "APIGateway has log files from different components.This method is used to retrieve the log settings of various components used by APIGateway.", - "operationId" : "getLogConfig", - "consumes" : [ "application/json" ], + "description" : "Retrieves the configured Kerberos settings from API Gateway.", + "operationId" : "getKerberosSetting", "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "This status code indicates that the external log configuration is retrieved successfully.", - "examples" : { - "application/json" : "{\"apigatewayLogger\": \"trace\",\"elasticSearchLogger\": \"info\",\"kibanaLogger\": \"verbose\",\"enableSessionLogger\": \"false\",\"enableSecurityLogger\": \"true\",\"sagOsgiLogger\": \"debug\",\"enableLogAggregation\": \"true\",\"logDestination\": \"INTERNAL\"}" - }, + "description" : "This status code indicates that the kerberos setting has been successfully retrieved from API Gateway.", "schema" : { - "$ref" : "#/definitions/LogConfiguration" + "$ref" : "#/definitions/KerberosSettings" + }, + "examples" : { + "application/json" : "{\r\n\t\"kerberosRealm\": \"krbRelam\",\r\n\t\"kerberosKDC\": \"krbDistCenter\",\r\n\t\"useSubjectCreds\": false,\r\n\t\"kerberosConfigContents\": \"\"\r\n}" } }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the log configuration." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while fetching the configured Kerberos settings from API Gateway." } }, "security" : [ { @@ -4459,23 +4213,39 @@ } ] }, "put" : { - "description" : "The method is used to update the details of the log configuration in API Gateway.", - "operationId" : "saveLogConfig", + "operationId" : "updateKerberos", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "The request payload for Kerberos settings in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/KerberosSettings" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"kerberosRealm\": \"krbRelam\",\r\n\t\"kerberosKDC\": \"krbDistCenter\",\r\n\t\"useSubjectCreds\": false,\r\n\t\"kerberosConfigContents\": \"\"\r\n}" + } + } ], "responses" : { "200" : { - "description" : "This status code indicates that the log configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\"apigatewayLogger\": \"trace\",\"elasticSearchLogger\": \"info\",\"kibanaLogger\": \"verbose\",\"enableSessionLogger\": \"false\",\"enableSecurityLogger\": \"true\",\"sagOsgiLogger\": \"debug\",\"enableLogAggregation\": \"true\",\"logDestination\": \"INTERNAL\"}" - }, - "schema" : { - "$ref" : "#/definitions/LogConfiguration" - } + "description" : "This status code indicates that the configured Kerberos settings have been successfully persisted in API Gateway." + }, + "400" : { + "description" : "This status code indicates invalid request or bad input." }, "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Administration\" functional privilege to access this API." + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while persisting the Kerberos settings in API Gateway." } }, "security" : [ { @@ -4483,25 +4253,25 @@ } ] } }, - "/configurations/ldapConfig" : { + "/is/jmsTriggers" : { "get" : { - "description" : "Retrieves the LDAP configuration settings configured in the API Gateway", - "operationId" : "getLdapConfig", + "description" : "The method retrieves list of all JMS triggers in API Gateway.", + "operationId" : "getAllJMSTriggers", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "", + "description" : "This status code indicates that the list of JMS triggers is successfully retrieved.", "examples" : { - "application/json" : "{\r\n \"ldapConfig\": {\r\n \"cacheSize\": \"10\",\r\n \"cacheTTL\": \"60\",\r\n \"provider\": \"LDAP\",\r\n \"ldapDirectoryList\": [\r\n {\r\n \"url\": \"ldap://abc.xyz.org:3128\",\r\n \"principal\": \"CN=alias, OU=User,DC=xyz,DC=org\",\r\n \"password\": \"abcde\",\r\n \"timeout\": \"5\",\r\n \"poolMin\": \"0\",\r\n \"poolMax\": \"10\",\r\n \"useaf\": false,\r\n \"dnPrefix\": null,\r\n \"dnSuffix\": null,\r\n \"uidProp\": \"uidAccountName\",\r\n \"userRootDn\": \"OU=User,DC=xyz,DC=org\",\r\n \"group\": \"Administrators\",\r\n \"memberAttribute\": \"member\",\r\n \"groupIdProperty\": \"gidAccountName\",\r\n \"groupRootDN\": \"OU=Groups,DC=xyz,DC=org\",\r\n \"index\": 0\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/InputLdapConfiguration" + "application/json" : "{\r\n \"jmsTriggerList\": [\r\n {\r\n \"id\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"triggerName\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"aliasName\": \"DEFAULT_IS_JMS_CONNECTION\",\r\n \"destinationName\": \"wseQueue_AMQP_PROVIDER_ALIAS\",\r\n \"enabled\": \"false\",\r\n \"isConcurrent\": \"false\",\r\n \"maxExecutionThreads\": \"1\",\r\n \"connectionCount\": \"1\",\r\n \"currentThreads\": \"-1\",\r\n \"state\": \"Disabled\",\r\n \"destinationType\": \"Queue\",\r\n \"jmsMessageSelector\": \"N/A\",\r\n \"durableSubscribeName\": \"N/A\",\r\n \"ignoreLocalPublished\": \"N/A\",\r\n \"status\": \"Not Running (trigger disabled)\"\r\n }\r\n ]\r\n}" } }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "" } }, "security" : [ { @@ -4509,8 +4279,8 @@ } ] }, "put" : { - "description" : "Saves the LDAP configuration settings in the API Gateway", - "operationId" : "saveLdapConfig", + "description" : "This REST service is used to update the JMS trigger", + "operationId" : "updateJMSTrigger", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -4519,24 +4289,30 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/InputLdapConfiguration" + "$ref" : "#/definitions/JMSTrigger" }, "x-examples" : { - "application/json" : "{\r\n \"ldapConfig\": {\r\n \"cacheSize\": \"10\",\r\n \"cacheTTL\": \"60\",\r\n \"provider\": \"LDAP\",\r\n \"ldapDirectoryList\": [\r\n {\r\n \"url\": \"ldap://abc.xyz.org:3128\",\r\n \"principal\": \"CN=alias, OU=User,DC=xyz,DC=org\",\r\n \"password\": \"abcde\",\r\n \"timeout\": \"5\",\r\n \"poolMin\": \"0\",\r\n \"poolMax\": \"10\",\r\n \"useaf\": false,\r\n \"dnPrefix\": null,\r\n \"dnSuffix\": null,\r\n \"uidProp\": \"uidAccountName\",\r\n \"userRootDn\": \"OU=User,DC=xyz,DC=org\",\r\n \"group\": \"Administrators\",\r\n \"memberAttribute\": \"member\",\r\n \"groupIdProperty\": \"gidAccountName\",\r\n \"groupRootDN\": \"OU=Groups,DC=xyz,DC=org\",\r\n \"index\": 0\r\n }\r\n ]\r\n }\r\n}" + "application/json" : "\"jmsTrigger\": {\r\n \"id\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"triggerName\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"aliasName\": \"DEFAULT_IS_JMS_CONNECTION\",\r\n \"destinationName\": \"wseQueue_AMQP_PROVIDER_ALIAS\",\r\n \"enabled\": \"false\",\r\n \"isConcurrent\": \"false\",\r\n \"maxExecutionThreads\": \"1\",\r\n \"connectionCount\": \"1\",\r\n \"currentThreads\": \"-1\",\r\n \"state\": \"Disabled\",\r\n \"destinationType\": \"Queue\",\r\n \"jmsMessageSelector\": \"N/A\",\r\n \"durableSubscribeName\": \"N/A\",\r\n \"ignoreLocalPublished\": \"N/A\",\r\n \"status\": \"Not Running (trigger disabled)\"\r\n }" } } ], "responses" : { "200" : { - "description" : "", - "examples" : { - "application/json" : "{\r\n \"ldapConfig\": {\r\n \"cacheSize\": \"10\",\r\n \"cacheTTL\": \"60\",\r\n \"provider\": \"LDAP\",\r\n \"ldapDirectoryList\": [\r\n {\r\n \"url\": \"ldap://abc.xyz.org:3128\",\r\n \"principal\": \"CN=alias, OU=User,DC=xyz,DC=org\",\r\n \"password\": \"abcde\",\r\n \"timeout\": \"5\",\r\n \"poolMin\": \"0\",\r\n \"poolMax\": \"10\",\r\n \"useaf\": false,\r\n \"dnPrefix\": null,\r\n \"dnSuffix\": null,\r\n \"uidProp\": \"uidAccountName\",\r\n \"userRootDn\": \"OU=User,DC=xyz,DC=org\",\r\n \"group\": \"Administrators\",\r\n \"memberAttribute\": \"member\",\r\n \"groupIdProperty\": \"gidAccountName\",\r\n \"groupRootDN\": \"OU=Groups,DC=xyz,DC=org\",\r\n \"index\": 0\r\n }\r\n ]\r\n }\r\n}" - }, + "description" : "This status code indicates that API Gateway has successfully updated the specified JMS trigger and the updated JMS trigger details can be found in the response body", "schema" : { - "$ref" : "#/definitions/InputLdapConfiguration" + "$ref" : "#/definitions/JMSTrigger" + }, + "examples" : { + "application/json" : "{\r\n \"jmsTrigger\": {\r\n \"id\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"triggerName\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"aliasName\": \"DEFAULT_IS_JMS_CONNECTION\",\r\n \"destinationName\": \"wseQueue_AMQP_PROVIDER_ALIAS\",\r\n \"enabled\": \"false\",\r\n \"isConcurrent\": \"false\",\r\n \"maxExecutionThreads\": \"1\",\r\n \"connectionCount\": \"1\",\r\n \"currentThreads\": \"-1\",\r\n \"state\": \"Disabled\",\r\n \"destinationType\": \"Queue\",\r\n \"jmsMessageSelector\": \"N/A\",\r\n \"durableSubscribeName\": \"N/A\",\r\n \"ignoreLocalPublished\": \"N/A\",\r\n \"status\": \"Not Running (trigger disabled)\"\r\n }\r\n}" } }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "400" : { + "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", + "examples" : { + "application/json" : "" + } } }, "security" : [ { @@ -4544,60 +4320,65 @@ } ] } }, - "/configurations/passwordRestrictions" : { - "get" : { - "description" : "Retrieves the password restrictions settings configured in API Gateway", - "operationId" : "getPasswordRestrictions", + "/is/jmsTriggers/{jmsTriggerId}/enable" : { + "put" : { + "description" : "The method enables the specified JMS trigger in API Gateway.", + "operationId" : "enableJMSTrigger", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], - "parameters" : [ ], + "parameters" : [ { + "name" : "jmsTriggerId", + "in" : "path", + "description" : "This path parameter is used to specify the JMS trigger id which JMS trigger needs to be enabled.", + "required" : true, + "type" : "string", + "x-example" : "sampleJMSConn" + } ], "responses" : { "200" : { - "description" : "", + "description" : "This status code indicates that the specified JMS trigger is successfully enabled.", "examples" : { - "application/json" : "{\r\n \"mode\": \"lax\",\r\n \"minLowerChars\": \"10\",\r\n \"minDigits\": \"10\",\r\n \"minLength\": \"10\",\r\n \"enablePasswordChange\": \"true\",\r\n \"historyLength\": \"3\",\r\n \"maxIdenticalCharsInARow\": \"10\",\r\n \"minSpecialChars\": \"10\",\r\n \"minUpperChars\": \"10\",\r\n \"maxLength\": \"20\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PasswordRestrictions" + "application/json" : "{\r\n \"status\": \"JMS Trigger(s) enabled.\",\r\n \"result\": true\r\n}" } }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "500" : { + "description" : "" } }, "security" : [ { "Basic" : [ ] } ] - }, + } + }, + "/is/jmsTriggers/{jmsTriggerId}/disable" : { "put" : { - "description" : "Saves the password restrictions settings in API Gateway", - "operationId" : "savePasswordRestrictions", + "description" : "The method disables the specified JMS trigger in API Gateway.", + "operationId" : "disableJMSTrigger", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", + "name" : "jmsTriggerId", + "in" : "path", + "description" : "This path parameter is used to specify the JMS trigger id which JMS trigger needs to be disabled.", "required" : true, - "schema" : { - "$ref" : "#/definitions/PasswordRestrictions" - }, - "x-examples" : { - "application/json" : "{\r\n \"mode\": \"lax\",\r\n \"minLowerChars\": \"10\",\r\n \"minDigits\": \"10\",\r\n \"minLength\": \"10\",\r\n \"enablePasswordChange\": \"true\",\r\n \"historyLength\": \"3\",\r\n \"maxIdenticalCharsInARow\": \"10\",\r\n \"minSpecialChars\": \"10\",\r\n \"minUpperChars\": \"10\",\r\n \"maxLength\": \"20\"\r\n}" - } + "type" : "string", + "x-example" : "sampleJMSConn" } ], "responses" : { "200" : { - "description" : "", + "description" : "This status code indicates that the specified JMS trigger is successfully disabled.", "examples" : { - "application/json" : "{\r\n \"mode\": \"lax\",\r\n \"minLowerChars\": \"10\",\r\n \"minDigits\": \"10\",\r\n \"minLength\": \"10\",\r\n \"enablePasswordChange\": \"true\",\r\n \"historyLength\": \"3\",\r\n \"maxIdenticalCharsInARow\": \"10\",\r\n \"minSpecialChars\": \"10\",\r\n \"minUpperChars\": \"10\",\r\n \"maxLength\": \"20\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PasswordRestrictions" + "application/json" : "{\r\n \"status\": \"JMS Trigger(s) disabled.\",\r\n \"result\": true\r\n}" } }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "500" : { + "description" : "" } }, "security" : [ { @@ -4605,60 +4386,38 @@ } ] } }, - "/configurations/passwordExpiry" : { + "/is/jmsTriggers/{jmsTriggerId}" : { "get" : { - "description" : "Retrieves the password expiry settings configured in API Gateway", - "operationId" : "getPasswordExpirySettings", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "", - "examples" : { - "application/json" : "{\r\n \"expirationInterval\": \"90\",\r\n \"emailIds\": \"fa@abc.xyz\\nfa1@abc.xyz\",\r\n \"applicableUsers\": \"user1;user2\",\r\n \"expiryEmailBefore\": \"3\",\r\n \"isEnabled\": \"true\",\r\n \"remainingUsers\": \"user3;user4\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PasswordExpirySettings" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "Saves the password expiry settings in API Gateway", - "operationId" : "savePasswordExpirySettings", + "description" : "The method retrieves the specified JMS trigger in API Gateway.", + "operationId" : "getJMSTrigger", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", + "name" : "jmsTriggerId", + "in" : "path", + "description" : "This path parameter is used to specify the JMS trigger id which JMS trigger needs to be retrieved.", "required" : true, - "schema" : { - "$ref" : "#/definitions/PasswordExpirySettings" - }, - "x-examples" : { - "application/json" : "{\r\n \"expirationInterval\": \"90\",\r\n \"emailIds\": \"fa@abc.xyz\\nfa1@abc.xyz\",\r\n \"applicableUsers\": \"user1;user2\",\r\n \"expiryEmailBefore\": \"3\",\r\n \"isEnabled\": \"true\",\r\n \"remainingUsers\": \"user3;user4\"\r\n}" - } + "type" : "string", + "x-example" : "sampleJmsTrigger" } ], "responses" : { "200" : { - "description" : "", - "examples" : { - "application/json" : "{\r\n \"expirationInterval\": \"90\",\r\n \"emailIds\": \"fa@abc.xyz\\nfa1@abc.xyz\",\r\n \"applicableUsers\": \"user1;user2\",\r\n \"expiryEmailBefore\": \"3\",\r\n \"isEnabled\": \"true\",\r\n \"remainingUsers\": \"user3;user4\"\r\n}" - }, + "description" : "This status code indicates that the specified JMS trigger is successfully retrieved.", "schema" : { - "$ref" : "#/definitions/PasswordExpirySettings" + "$ref" : "#/definitions/JMSTrigger" + }, + "examples" : { + "application/json" : "{\r\n \"jmsTrigger\": {\r\n \"id\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"triggerName\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"aliasName\": \"DEFAULT_IS_JMS_CONNECTION\",\r\n \"destinationName\": \"wseQueue_AMQP_PROVIDER_ALIAS\",\r\n \"enabled\": \"false\",\r\n \"isConcurrent\": \"false\",\r\n \"maxExecutionThreads\": \"1\",\r\n \"connectionCount\": \"1\",\r\n \"currentThreads\": \"-1\",\r\n \"state\": \"Disabled\",\r\n \"destinationType\": \"Queue\",\r\n \"jmsMessageSelector\": \"N/A\",\r\n \"durableSubscribeName\": \"N/A\",\r\n \"ignoreLocalPublished\": \"N/A\",\r\n \"status\": \"Not Running (trigger disabled)\"\r\n }\r\n}" } }, "401" : { "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the JMS trigger id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Exception occured : The JMS trigger object with the given ID: JMSTrigger11 couldn't found\"\r\n}" + } } }, "security" : [ { @@ -4666,21 +4425,18 @@ } ] } }, - "/configurations/accountLockSettings" : { + "/is/jndi" : { "get" : { - "description" : "Retrieves the account lock settings configured in API Gateway", - "operationId" : "getAccountLockSettings", + "description" : "The method retrieves list of all JNDI configurations in API Gateway.", + "operationId" : "listAllJNDI", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ ], "responses" : { "200" : { - "description" : "", + "description" : "This status code indicates that the list of JNDI configurations is successfully retrieved.", "examples" : { - "application/json" : "{\r\n \"blockDuration\": \"15\",\r\n \"isEnabled\": \"true\",\r\n \"timeIntervalUnit\": \"Minutes\",\r\n \"timeInterval\": \"100\",\r\n \"maximumLoginAttempts\": \"2\",\r\n \"blockDurationUnit\": \"Minutes\",\r\n \"appliesToUsers\": \"allUsersExceptPredefinedUsers\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AccountLockSettings" + "application/json" : "{\r\n \"jndiList\": [\r\n {\r\n \"id\": \"JNDI_AMQP\",\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n },\r\n {\r\n \"id\": \"JNDI_AMQP2\",\r\n \"jndiAliasName\": \"JNDI_AMQP2\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }\r\n ]\r\n}" } }, "401" : { @@ -4691,9 +4447,9 @@ "Basic" : [ ] } ] }, - "put" : { - "description" : "Saves the account lock settings in API Gateway", - "operationId" : "saveAccountLockSettings", + "post" : { + "description" : "The method creates a JNDI configuration in API Gateway. The API request body must contain the payload for the JNDI configuration", + "operationId" : "createJNDI", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -4702,20 +4458,189 @@ "description" : "", "required" : true, "schema" : { - "$ref" : "#/definitions/AccountLockSettings" + "$ref" : "#/definitions/JNDIProviderAlias" }, "x-examples" : { - "application/json" : "{\r\n \"blockDuration\": \"15\",\r\n \"isEnabled\": \"true\",\r\n \"timeIntervalUnit\": \"Minutes\",\r\n \"timeInterval\": \"100\",\r\n \"maximumLoginAttempts\": \"2\",\r\n \"blockDurationUnit\": \"Minutes\",\r\n \"appliesToUsers\": \"allUsersExceptPredefinedUsers\"\r\n}" + "application/json" : "{\"jndiAliasName\":\"JNDIALIAS22\",\"description\":\"new des\",\"initialContextFactory\":\"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"}" } } ], "responses" : { - "200" : { - "description" : "", - "examples" : { - "application/json" : "{\r\n \"blockDuration\": \"15\",\r\n \"isEnabled\": \"true\",\r\n \"timeIntervalUnit\": \"Minutes\",\r\n \"timeInterval\": \"100\",\r\n \"maximumLoginAttempts\": \"2\",\r\n \"blockDurationUnit\": \"Minutes\",\r\n \"appliesToUsers\": \"allUsersExceptPredefinedUsers\"\r\n}" - }, + "201" : { + "description" : "This status code indicates that the JNDI configuration has been successfully created in API Gateway, and the newly created JNDI configuration is available in the response body.", "schema" : { - "$ref" : "#/definitions/AccountLockSettings" + "$ref" : "#/definitions/JNDIProviderAlias" + }, + "examples" : { + "application/json" : "{\r\n \"jndi\": {\r\n \"id\": \"JNDI_AMQPSample\",\r\n \"jndiAliasName\": \"JNDI_AMQPSample\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "400" : { + "description" : "This status code indicates that the JNDI configuration with the given name already exists in API Gateway or the request body is not correct.", + "examples" : { + "application/json" : "{}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "This REST service is used to update the JNDI configuration", + "operationId" : "updateJNDI", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "", + "required" : true, + "schema" : { + "$ref" : "#/definitions/JNDIProviderAlias" + }, + "x-examples" : { + "application/json" : "{\r\n \"id\": \"JNDI_AMQP\",\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that API Gateway has successfully updated the specified JNDI configuration and the updated JNDI configuration details can be found in the response body", + "schema" : { + "$ref" : "#/definitions/JNDIProviderAlias" + }, + "examples" : { + "application/json" : "{\r\n \"jndi\": {\r\n \"id\": \"JNDI_AMQP\",\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "400" : { + "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"Unable to create or update JNDI settings. providerURL should not be null\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/is/jndi/{jndiId}" : { + "get" : { + "description" : "The method retrieves the specified JNDI configuration in API Gateway.", + "operationId" : "listJNDI", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "jndiId", + "in" : "path", + "description" : "This path parameter is used to specify the JNDI configuration id which JNDI configuration needs to be retrived.", + "required" : true, + "type" : "string", + "x-example" : "sampleJNDI" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the specified JNDI configuration is successfully retrieved.", + "schema" : { + "$ref" : "#/definitions/JNDIProviderAlias" + }, + "examples" : { + "application/json" : "{\r\n \"jndi\": {\r\n \"id\": \"JNDI_AMQP\",\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"description\": \"JNDI_AMQP\",\r\n \"initialContextFactory\": \"org.apache.qpid.jms.jndi.JmsInitialContextFactory\",\r\n \"providerURL\": \"C:\\\\APIGateway1\\\\IntegrationServer\\\\lib\\\\jars\\\\AMQP.properties\"\r\n }\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This delete request will delete the JNDI configuration based on the JNDI id which is specified in path", + "operationId" : "deleteJNDI", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "jndiId", + "in" : "path", + "description" : "This path parameter is used to specify the JNDI id for which JNDI configuration needs to deleted.", + "required" : true, + "type" : "string", + "x-example" : "sampleJNDI" + } ], + "responses" : { + "204" : { + "description" : "This status code indicates that the specified JNDI configuration is successfully deleted" + }, + "401" : { + "description" : "This status code indicates either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to delete the assertion." + }, + "404" : { + "description" : "This status code indicates that the corresponding JNDI id does not exist", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/is/jndi/{jndiId}/test" : { + "get" : { + "description" : "The method is to test the given JNDI configuration in API Gateway.", + "operationId" : "testJNDI", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "jndiId", + "in" : "path", + "required" : true, + "type" : "string", + "x-example" : "sampleJNDI" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that test result of the given JNDI configuration is successfully returned.", + "examples" : { + "application/json" : "{\r\n \"jndiTest\": {\r\n \"jndiAliasName\": \"JNDI_AMQP\",\r\n \"messages\": \"Test lookup successful\",\r\n \"test\": \"success\",\r\n \"jndiLookupData\": [\r\n \"dynamicQueues: org.apache.qpid.jms.jndi.JmsInitialContextFactory$1\",\r\n \"dynamicTopics: org.apache.qpid.jms.jndi.JmsInitialContextFactory$2\",\r\n \"qpidConnectionFactory: org.apache.qpid.jms.JmsConnectionFactory\"\r\n ]\r\n }\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/is/jndi/template" : { + "get" : { + "description" : "The method retrieves list of all JNDI templates in API Gateway.", + "operationId" : "fetchJNDITemplates", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "jndiId", + "in" : "path", + "required" : true, + "type" : "string", + "x-example" : "sampleJNDI" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the list of JNDI templates is successfully retrieved.", + "examples" : { + "application/json" : "{\r\n \"jndiTemplates\": [\r\n {\r\n \"name\": \"Broker\",\r\n \"context\": \"com.webmethods.jms.naming.WmJmsNamingCtxFactory\",\r\n \"url\": \"wmjmsnaming://@:6849\",\r\n \"otherProps\": \"com.webmethods.jms.naming.clientgroup=admin\"\r\n },\r\n {\r\n \"name\": \"UM\",\r\n \"context\": \"com.pcbsys.nirvana.nSpace.NirvanaContextFactory\",\r\n \"url\": \"nsp://:9000/\",\r\n \"otherProps\": \"\"\r\n },\r\n {\r\n \"name\": \"file system\",\r\n \"context\": \"com.sun.jndi.fscontext.RefFSContextFactory\",\r\n \"url\": \"file:/\",\r\n \"otherProps\": \"\"\r\n },\r\n {\r\n \"name\": \"LDAP\",\r\n \"context\": \"com.sun.jndi.ldap.LdapCtxFactory\",\r\n \"url\": \"ldap://:389\",\r\n \"otherProps\": \"\"\r\n },\r\n {\r\n \"name\": \"JBoss\",\r\n \"context\": \"org.jnp.interfaces.NamingContextFactory\",\r\n \"url\": \"jnp://:1099\",\r\n \"otherProps\": \"java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces\"\r\n },\r\n {\r\n \"name\": \"WebLogic\",\r\n \"context\": \"weblogic.jndi.WLInitialContextFactory\",\r\n \"url\": \"t3://:7001\",\r\n \"otherProps\": \"\"\r\n }\r\n ]\r\n}" } }, "401" : { @@ -4838,769 +4763,193 @@ "Basic" : [ ] } ] } - }, - "/licenseNotifications" : { - "get" : { - "description" : "The GET method returns the latest notification issued for a transaction based license.", - "operationId" : "getCurrentMonthLatestNotification", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This response indicates that the recent transaction based license alert notification has been returned successfully. The response body is the latest transaction based license alert notification.", - "examples" : { - "application/json" : "{\r\n \"notification\": {\r\n \"user\": \"admin\",\r\n \"notificationType\": \"UI-notification\",\r\n \"currentUsagePercent\": \"265\",\r\n \"currentUsage\": \"53/20\",\r\n \"creationDate\": \"1502098979628\",\r\n \"notification\": \"Current month allocated quota has been reached\",\r\n \"notifyAt\": 100,\r\n \"monthAndYear\": \"8/2017\"\r\n },\r\n \"result\": \"success\"\r\n}" - } - }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "500" : { - "description" : "This response indicates that the server has encountered an error while fetching the latest transaction based license alert notification" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/is/jmsTriggers" : { - "get" : { - "description" : "The method retrieves list of all JMS triggers in API Gateway.", - "operationId" : "getAllJMSTriggers", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the list of JMS triggers is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"jmsTriggerList\": [\r\n {\r\n \"id\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"triggerName\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"aliasName\": \"DEFAULT_IS_JMS_CONNECTION\",\r\n \"destinationName\": \"wseQueue_AMQP_PROVIDER_ALIAS\",\r\n \"enabled\": \"false\",\r\n \"isConcurrent\": \"false\",\r\n \"maxExecutionThreads\": \"1\",\r\n \"connectionCount\": \"1\",\r\n \"currentThreads\": \"-1\",\r\n \"state\": \"Disabled\",\r\n \"destinationType\": \"Queue\",\r\n \"jmsMessageSelector\": \"N/A\",\r\n \"durableSubscribeName\": \"N/A\",\r\n \"ignoreLocalPublished\": \"N/A\",\r\n \"status\": \"Not Running (trigger disabled)\"\r\n }\r\n ]\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This REST service is used to update the JMS trigger", - "operationId" : "updateJMSTrigger", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/JMSTrigger" - }, - "x-examples" : { - "application/json" : "\"jmsTrigger\": {\r\n \"id\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"triggerName\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"aliasName\": \"DEFAULT_IS_JMS_CONNECTION\",\r\n \"destinationName\": \"wseQueue_AMQP_PROVIDER_ALIAS\",\r\n \"enabled\": \"false\",\r\n \"isConcurrent\": \"false\",\r\n \"maxExecutionThreads\": \"1\",\r\n \"connectionCount\": \"1\",\r\n \"currentThreads\": \"-1\",\r\n \"state\": \"Disabled\",\r\n \"destinationType\": \"Queue\",\r\n \"jmsMessageSelector\": \"N/A\",\r\n \"durableSubscribeName\": \"N/A\",\r\n \"ignoreLocalPublished\": \"N/A\",\r\n \"status\": \"Not Running (trigger disabled)\"\r\n }" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that API Gateway has successfully updated the specified JMS trigger and the updated JMS trigger details can be found in the response body", - "examples" : { - "application/json" : "{\r\n \"jmsTrigger\": {\r\n \"id\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"triggerName\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"aliasName\": \"DEFAULT_IS_JMS_CONNECTION\",\r\n \"destinationName\": \"wseQueue_AMQP_PROVIDER_ALIAS\",\r\n \"enabled\": \"false\",\r\n \"isConcurrent\": \"false\",\r\n \"maxExecutionThreads\": \"1\",\r\n \"connectionCount\": \"1\",\r\n \"currentThreads\": \"-1\",\r\n \"state\": \"Disabled\",\r\n \"destinationType\": \"Queue\",\r\n \"jmsMessageSelector\": \"N/A\",\r\n \"durableSubscribeName\": \"N/A\",\r\n \"ignoreLocalPublished\": \"N/A\",\r\n \"status\": \"Not Running (trigger disabled)\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/JMSTrigger" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "400" : { - "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", - "examples" : { - "application/json" : "" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/is/jmsTriggers/{jmsTriggerId}/enable" : { - "put" : { - "description" : "The method enables the specified JMS trigger in API Gateway.", - "operationId" : "enableJMSTrigger", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "jmsTriggerId", - "in" : "path", - "description" : "This path parameter is used to specify the JMS trigger id which JMS trigger needs to be enabled.", - "required" : true, - "type" : "string", - "x-example" : "sampleJMSConn" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified JMS trigger is successfully enabled.", - "examples" : { - "application/json" : "{\r\n \"status\": \"JMS Trigger(s) enabled.\",\r\n \"result\": true\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "500" : { - "description" : "" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/is/jmsTriggers/{jmsTriggerId}/disable" : { - "put" : { - "description" : "The method disables the specified JMS trigger in API Gateway.", - "operationId" : "disableJMSTrigger", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "jmsTriggerId", - "in" : "path", - "description" : "This path parameter is used to specify the JMS trigger id which JMS trigger needs to be disabled.", - "required" : true, - "type" : "string", - "x-example" : "sampleJMSConn" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified JMS trigger is successfully disabled.", - "examples" : { - "application/json" : "{\r\n \"status\": \"JMS Trigger(s) disabled.\",\r\n \"result\": true\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "500" : { - "description" : "" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/is/jmsTriggers/{jmsTriggerId}" : { - "get" : { - "description" : "The method retrieves the specified JMS trigger in API Gateway.", - "operationId" : "getJMSTrigger", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "jmsTriggerId", - "in" : "path", - "description" : "This path parameter is used to specify the JMS trigger id which JMS trigger needs to be retrieved.", - "required" : true, - "type" : "string", - "x-example" : "sampleJmsTrigger" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified JMS trigger is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"jmsTrigger\": {\r\n \"id\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"triggerName\": \"wm.namespace.ws:wseTrigger_AMQP_PROVIDER_ALIAS\",\r\n \"aliasName\": \"DEFAULT_IS_JMS_CONNECTION\",\r\n \"destinationName\": \"wseQueue_AMQP_PROVIDER_ALIAS\",\r\n \"enabled\": \"false\",\r\n \"isConcurrent\": \"false\",\r\n \"maxExecutionThreads\": \"1\",\r\n \"connectionCount\": \"1\",\r\n \"currentThreads\": \"-1\",\r\n \"state\": \"Disabled\",\r\n \"destinationType\": \"Queue\",\r\n \"jmsMessageSelector\": \"N/A\",\r\n \"durableSubscribeName\": \"N/A\",\r\n \"ignoreLocalPublished\": \"N/A\",\r\n \"status\": \"Not Running (trigger disabled)\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/JMSTrigger" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the JMS trigger id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Exception occured : The JMS trigger object with the given ID: JMSTrigger11 couldn't found\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/portalGateways/{portalGatewayId}" : { - "get" : { - "description" : "This API allows you to retrieve an API Portal configuration in API Gateway.", - "operationId" : "getAPIPortalConfiguration", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "portalGatewayId", - "in" : "path", - "description" : "Id of the API Portal configuration for retrieval", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the API Portal configuration is retrieved successfully.", - "examples" : { - "application/json" : "{\r\n\t\"portalGatewayResponse\": {\r\n\t\t\"id\": \"c7059719-e434-4b45-9b09-b5176fa8b787\",\r\n\t\t\"gatewayName\": \"mygateway\",\r\n\t\t\"gatewayUsername\": \"adminUser\",\r\n\t\t\"gatewayPassword\": \"*****\",\r\n\t\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\t\"refId\": \"2609fc40-87d2-11e7-1298-d481d790920c\",\r\n\t\t\"externalPortal\": {\r\n\t\t\t\"type\": \"apiportal\",\r\n\t\t\t\"endpointTenant\": \"default\",\r\n\t\t\t\"endpointURL\": \"http://apiportal_host/\",\r\n\t\t\t\"endpointUsername\": \"adminUser\",\r\n\t\t\t\"endpointPassword\": \"*****\"\r\n\t\t},\r\n\t\t\"version\": \"1.0\",\r\n\t\t\"published\": true\r\n\t}\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PortalGateway" - } - }, - "404" : { - "description" : "This status code indicates that the API Portal configuration is not available." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This API allows you to update API Portal configuration information in API Gateway.", - "operationId" : "updateAPIPortalConfiguration", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "portalGatewayId", - "in" : "path", - "description" : "Id of the API Portal configuration for update", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "in" : "body", - "name" : "body", - "description" : "API Portal configuration payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/PortalGateway" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"externalPortal\": {\r\n\t\t\"type\": \"apiportal\",\r\n\t\t\"endpointURL\": \"http://apiportal_host:18101\",\r\n\t\t\"endpointTenant\": \"default\",\r\n\t\t\"endpointUsername\": \"providerUser\",\r\n\t\t\"endpointPassword\": \"providerPassword\"\r\n\t},\r\n\t\"gatewayName\": \"MyPortalConfiguration\",\r\n\t\"version\": \"1.0\",\r\n\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\"gatewayUsername\": \"adminUser\",\r\n\t\"gatewayPassword\": \"adminPassword\"\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the API Portal configuration is updated successfully.", - "examples" : { - "application/json" : "{\r\n\t\"portalGatewayResponse\": [{\r\n\t\t\"id\": \"c7059719-e434-4b45-9b09-b5176fa8b787\",\r\n\t\t\"gatewayName\": \"myportal\",\r\n\t\t\"gatewayUsername\": \"adminUser\",\r\n\t\t\"gatewayPassword\": \"*****\",\r\n\t\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\t\"refId\": \"2609fc40-87d2-11e7-1298-d481d790920c\",\r\n\t\t\"externalPortal\": {\r\n\t\t\t\"type\": \"apiportal\",\r\n\t\t\t\"endpointTenant\": \"default\",\r\n\t\t\t\"endpointURL\": \"http://apiportal_host/\",\r\n\t\t\t\"endpointUsername\": \"adminUser\",\r\n\t\t\t\"endpointPassword\": \"*****\"\r\n\t\t},\r\n\t\t\"version\": \"1.0\",\r\n\t\t\"published\": true\r\n\t}]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PortalGateway" - } - }, - "400" : { - "description" : "This status code indicates that the user has missed some mandatory field that is required to update the API Portal configuration." - }, - "404" : { - "description" : "This status code indicates that the API Portal configuration is not available." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "500" : { - "description" : "This status code indicates that an error occurred while processing the information in API Gateway or while communicating with API Portal." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "This API allows you to delete an API Portal configuration in API Gateway.", - "operationId" : "deleteAPIPortalConfiguration", - "parameters" : [ { - "name" : "portalGatewayId", - "in" : "path", - "description" : "Id of the API Portal configuration for delete.", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "This status code indicates that the API Portal configuration is deleted successfully." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/portalGateways" : { - "get" : { - "description" : "This API allows you to retrieve API Portal configurations available in API Gateway.", - "operationId" : "getAllAPIPortalConfiguration", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that all the API Portal configurations are retrieved successfully.", - "examples" : { - "application/json" : "{\r\n\t\"portalGatewayResponse\": [{\r\n\t\t\t\"id\": \"c7059719-e434-4b45-9b09-b5176fa8b787\",\r\n\t\t\t\"gatewayName\": \"myportal\",\r\n\t\t\t\"gatewayUsername\": \"adminUser\",\r\n\t\t\t\"gatewayPassword\": \"*****\",\r\n\t\t\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\t\t\"refId\": \"2609fc40-87d2-11e7-1298-d481d790920c\",\r\n\t\t\t\"externalPortal\": {\r\n\t\t\t\t\"type\": \"apiportal\",\r\n\t\t\t\t\"endpointTenant\": \"default\",\r\n\t\t\t\t\"endpointURL\": \"http://api_portal_host/\",\r\n\t\t\t\t\"endpointUsername\": \"adminUser\",\r\n\t\t\t\t\"endpointPassword\": \"*****\"\r\n\t\t\t},\r\n\t\t\t\"version\": \"1.0\",\r\n\t\t\t\"published\": true\r\n\t\t}\r\n\r\n\t]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PortalGateway" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "This method allows you to create the API Portal configuration in API Gateway.", - "operationId" : "createAPIPortalConfiguration", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "API Portal configuration payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/PortalGateway" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"externalPortal\": {\r\n\t\t\"type\": \"apiportal\",\r\n\t\t\"endpointURL\": \"http://apiportal_host:18101\",\r\n\t\t\"endpointTenant\": \"default\",\r\n\t\t\"endpointUsername\": \"providerUser\",\r\n\t\t\"endpointPassword\": \"providerPassword\"\r\n\t},\r\n\t\"gatewayName\": \"MyPortalConfiguration\",\r\n\t\"version\": \"1.0\",\r\n\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\"gatewayUsername\": \"adminUser\",\r\n\t\"gatewayPassword\": \"adminPassword\"\r\n}" - } - } ], - "responses" : { - "201" : { - "description" : "This status code indicates that the API Portal configuration is created successfully.", - "examples" : { - "application/json" : "{\r\n\t\"portalGatewayResponse\": [{\r\n\t\t\"id\": \"c7059719-e434-4b45-9b09-b5176fa8b787\",\r\n\t\t\"gatewayName\": \"myportal\",\r\n\t\t\"gatewayUsername\": \"adminUser\",\r\n\t\t\"gatewayPassword\": \"*****\",\r\n\t\t\"gatewayURL\": \"http://apigateway_host:5555\",\r\n\t\t\"refId\": \"2609fc40-87d2-11e7-1298-d481d790920c\",\r\n\t\t\"externalPortal\": {\r\n\t\t\t\"type\": \"apiportal\",\r\n\t\t\t\"endpointTenant\": \"default\",\r\n\t\t\t\"endpointURL\": \"http://apiportal_host/\",\r\n\t\t\t\"endpointUsername\": \"adminUser\",\r\n\t\t\t\"endpointPassword\": \"*****\"\r\n\t\t},\r\n\t\t\"version\": \"1.0\",\r\n\t\t\"published\": true\r\n\t}]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PortalGateway" - } - }, - "400" : { - "description" : "This status code indicates that the user has missed some mandatory field that is required to create the API Portal configuration." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "500" : { - "description" : "This status code indicates that an error occurred while processing the information in API Gateway or while communicating with API Portal." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/portalGateways/communities" : { - "get" : { - "description" : "This API allows you to retrieve the details about communities in API Portal. An API can be published from API Gateway to any of the communities available in API Portal", - "operationId" : "getAPIPortalMetadata", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "portalGatewayId", - "in" : "query", - "description" : "Id of the API Portal configuration for retrieval of the community information", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "apiId", - "in" : "query", - "description" : "Id of the API published from API Gateway to API Portal", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the the community information from the API Portal is retrieved successfully.", - "examples" : { - "application/json" : "{\r\n\t\"portalGatewayResponse\": {\r\n\t\t\"provider\": \"mcprga02\",\r\n\t\t\"communities\": {\r\n\t\t\t\"portalCommunities\": [{\r\n\t\t\t\t\"id\": \"3bdf8005-5685-3ef5-b132-de4681963fb6\",\r\n\t\t\t\t\"name\": \"Public Community\",\r\n\t\t\t\t\"description\": \"Public Community\",\r\n\t\t\t\t\"status\": \"NEW\"\r\n\t\t\t}]\r\n\t\t}\r\n\t}\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PortalGatewayCommunitiesData" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/portalGateways/packages" : { - "get" : { - "description" : "This API allows you to retrieve the details of the published packages that the API is part of", - "operationId" : "getPublishedPackages", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "portalGatewayId", - "in" : "query", - "description" : "Id of the API Portal configuration for retrieval of published packages information", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "apiId", - "in" : "query", - "description" : "Id of the API published from API Gateway to API Portal", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "", - "schema" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "type" : "object" - } - } - }, - "401" : { - "description" : "" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } } }, "securityDefinitions" : { "Basic" : { "description" : "API Gateway Administrator and API Gateway provider", "type" : "basic" - } - }, - "definitions" : { - "JMSConsumerAlias" : { - "allOf" : [ { - "$ref" : "#/definitions/WebserviceEndpointAlias" - }, { - "type" : "object", - "properties" : { - "executeACL" : { - "type" : "string", - "description" : "This property specifies the team name" - }, - "jmsAliasType" : { - "type" : "string", - "description" : "This property specifies the jmsAliasType. Either it could be JMS or JNDI " - }, - "jndiProvAlias" : { - "type" : "string", - "description" : "This property specifies the name of JNDI" - }, - "connFactoryName" : { - "type" : "string", - "description" : "This property specifies the connection factory name" - }, - "jmsConnAlias" : { - "type" : "string", - "description" : "This property specifies the name of JMS connection" - }, - "user" : { - "type" : "string", - "description" : "This property specifies the name of the user to create the JMS connection" - }, - "password" : { - "type" : "string", - "description" : "This property specifies the password to create the JMS connection" - } - } - } ] - }, - "JMSProviderAlias" : { - "allOf" : [ { - "$ref" : "#/definitions/WebserviceEndpointAlias" - }, { - "type" : "object", - "properties" : { - "jmsTriggerName" : { - "type" : "string", - "description" : "This property specifies the JMS Trigger name" - }, - "deliveryMode" : { - "type" : "string", - "description" : "This property specifies the deliveryMode" - }, - "timeToLive" : { - "type" : "integer", - "format" : "int64", - "description" : "This property specifies the timeToLive value" - }, - "priority" : { - "type" : "integer", - "format" : "int32", - "description" : "This property specifies priority value" - }, - "replyToDestName" : { - "type" : "string", - "description" : "This property specifies the replyToDestName name" - }, - "replyToDestType" : { - "type" : "string", - "description" : "This property specifies the replyToDestType type" - }, - "includeConnFactoryName" : { - "type" : "string", - "description" : "This property enables/disables the includeConnFactoryName parameter" - }, - "includeJNDIParams" : { - "type" : "string", - "description" : "This property enables/disables the includeJNDIParams parameter" - } - } - } ] - }, - "WebserviceEndpointAlias" : { - "type" : "object", - "discriminator" : "aliasType", - "properties" : { - "WebserviceEndpointAliasId" : { - "type" : "string", - "description" : "A unique ID for the WebserviceEndpointAlias", - "readOnly" : true - }, - "alias" : { - "type" : "string", - "description" : "The name of the WebserviceEndpointAlias" - }, - "description" : { - "type" : "string", - "description" : "The description of the WebserviceEndpointAlias" - }, - "aliasType" : { - "type" : "string", - "description" : "The property specifies the aliasType, Either it should be Provider or Consumer" - }, - "transportType" : { - "type" : "string", - "description" : "this defines the transport type. The supported transport type is JMS" - }, - "keyStoreAlias" : { - "type" : "string", - "description" : "this property specifies the keystorealias name" - }, - "keyAlias" : { - "type" : "string", - "description" : "this property specifies the keyalias name" - }, - "trustStoreAlias" : { - "type" : "string", - "description" : "this property specifies the trustStoreAlias name" - }, - "timestampPrecisionInMillis" : { - "type" : "string", - "description" : "this property specifies the timestampPrecisionInMillis" - }, - "timestampTimeToLive" : { - "type" : "string", - "description" : "this property specifies the timestampTimeToLive value" - }, - "timestampMaximumSkew" : { - "type" : "string", - "description" : "this property specifies the timestampMaximumSkew value" - } - } - }, - "KerberosSettings" : { - "type" : "object", - "properties" : { - "kerberosRealm" : { - "type" : "string", - "description" : "The domain name of the Kerberos server. If kerberosRealm is set, it overrides the realm specified in the provided configuration file." - }, - "kerberosKDC" : { - "type" : "string", - "description" : "The host name of the machine on which the Key Distribution Center (KDC) resides. If kerberosKDC is set, it overrrides the default KDC specified in the provided configuration file." - }, - "kerberosConfigFileName" : { - "type" : "string", - "description" : "The name of the Kerberos configuration file to be stored and maintained in API Gateway." - }, - "kerberosConfigContents" : { - "type" : "string", - "description" : "The contents of the Kerberos configuration file conforming to the specification. If you do not want the default KDC and realm values from this configuration file to be overridden, then do not set values for the kerberosRealm and kerberosKDC properties. It contains the Kerberos configuration information, including the Kerberos realm, locations of KDCs, defaults for the current realm and for Kerberos applications, and the host names, Kerberos realms mappings and encryption algorithms. The full specification details of the Kerberos configuration file can be found in https://linux.die.net/man/5/krb5.conf." - }, - "useSubjectCreds" : { - "type" : "string", - "description" : "Indicates whether the Kerberos v5 Generic Security Services (GSS) mechanism should be used to obtain credentials from an existing subject." - } - } - }, - "JMSConnectionAlias" : { + } + }, + "definitions" : { + "URLAliasSettings" : { "type" : "object", + "required" : [ "alias", "package" ], "properties" : { - "jmsConnectionAliasId" : { + "id" : { "type" : "string", - "description" : "A unique ID for the jmsConnectionAlias", + "description" : "URL Aliases ID", "readOnly" : true }, - "aliasName" : { - "type" : "string", - "description" : "The name of the JMSConnectionAlias configuration" - }, - "enabled" : { - "type" : "string", - "description" : "This property specifies the size of um_consumerIncludedStrings" - }, - "description" : { - "type" : "string", - "description" : "The description of the JMSConnectionAlias configuration" - }, - "transactionType" : { + "alias" : { "type" : "string", - "description" : "This property specifies the type of the transaction.Value 0 refers to NO-trans, 1 refers to Local-tran, 2 refers to XA-trans" + "description" : "The unique alias name given for the URL aliases. When invoked with this alias, the path will be substituted." }, - "clientID" : { + "urlPath" : { "type" : "string", - "description" : "This property specifies the client id of the JMS connection" + "description" : "The default path which must be substituted for the URL alias. If port specific mappings are provided, then this default path is considered if none of the ports are matched with the port of the incoming request. Either urlPath or portList must be specified." }, - "user" : { - "type" : "string", - "description" : "This property specifies the user name to create the JMS connection" + "portList" : { + "type" : "array", + "example" : "[5555#gateway/ws/soapapi/v1/getOperation,5556#gateway/ws/soapapi/v2/testOp]", + "description" : "An array of port specific mappings for paths. Each mapping in this array must be specified as port_number#url_path. Either urlPath or portList must be specified.", + "items" : { + "type" : "string" + } }, - "password" : { + "association" : { "type" : "string", - "description" : "This property specifies the password to create the JMS connection" + "example" : "1", + "description" : "Indicates how the URL Alias is created. This value is always 1." }, - "associationType" : { + "package" : { "type" : "string", - "description" : "This property specifies whether the JMS connections has been created using JNDI or Native broker API. Value 0 refers to JNDI" - }, - "jndi_jndiAliasName" : { + "example" : "WmAPIGateway", + "description" : "The package to which the URL Alias is associated. Any URL Alias created through the API should always be associated with the WmAPIGateway package." + } + }, + "description" : "This model contains URL Aliases details" + }, + "URLAliasesGetResponse" : { + "type" : "object", + "properties" : { + "urlAliases" : { + "type" : "array", + "description" : "Contains the list of available URL aliases or a single URL alias object.", + "items" : { + "$ref" : "#/definitions/URLAliasSettings" + } + } + } + }, + "KeyStore" : { + "type" : "object", + "properties" : { + "keyStoreName" : { "type" : "string", - "description" : "Name of the JNDI that the JMS connection refers to" + "description" : "The name of the keystore. It cannot contain spaces or special characters. The name of the key store must be unique across all the keystores created in API Gateway." }, - "jndi_connectionFactoryLookupName" : { + "keyStoreDescription" : { "type" : "string", - "description" : "This property specifies the connection factory lookup name for the JMS connection" + "description" : "The description for the keystore." }, - "jndi_automaticallyCreateUMAdminObjects" : { + "keyStoreType" : { "type" : "string", - "description" : "This property specifies whether to create UM admin objects automatically" + "description" : "The certificate file format of the keystore.", + "enum" : [ "JKS", "PKCS12" ] }, - "jndi_enableFollowTheMaster" : { + "keyStoreProvider" : { "type" : "string", - "description" : "This property is to enable the jndi_enableFollowTheMaster property" + "description" : "The provider that is used for the keystore type. The default is SUN for JKS type and SunJSSE for PKCS12 type.", + "enum" : [ "SUN", "SunJSSE" ] }, - "jndi_connectionFactoryUpdateType" : { + "keyStorePassword" : { "type" : "string", - "description" : "This property specifies the connection factory update type" + "description" : "The keystore password that is defined at the time of keystore creation using a keystore utility." }, - "jndi_connectionFactoryPollingInterval" : { + "uploadFileName" : { "type" : "string", - "description" : "This property specifies the connection factory polling interval" + "description" : "The name of the keystore file that will be used to save the keystore internally in API Gateway." }, - "classLoader" : { + "fileContent" : { "type" : "string", - "description" : "This property specifies the classloader value" + "description" : "The contents of the keystore file." }, - "csqSize" : { + "pkAliasesList" : { "type" : "string", - "description" : "This property specifies the csq size. Default value -1." + "description" : "Comma separated list of alias names in the uploaded keystore file." }, - "csqDrainInOrder" : { + "pkPasswordsList" : { "type" : "string", - "description" : "This property is to enable/disable csqDrainInOrder" + "description" : "Comma separated list of passwords in the same order as the aliases specified in pkAliasesList. If a particular key alias does not have a password, it is denoted by space." }, - "optTempQueueCreate" : { + "nullPKpasswds" : { "type" : "string", - "description" : "This property is to opt temporary queue creation" + "description" : "Comma separated list of boolean values (false/true) indicating whether the particular alias has a password or not in the same order as the aliases specified in pkAliasesList. For each key alias, true indicates that the key alias does not have a password and false indicates that it does have a password." }, - "allowReplyToConsumer" : { + "bitarray" : { "type" : "string", - "description" : "This property is to enable/disable the allowReplyToConsumer" + "description" : "Comma separated list of bits (1/0) indicating whether the particular key alias has been successfully configured in API Gateway or not. For each key alias, 1 indicates that the key alias was loaded successfully and 0 indicates that the key alias was not loaded/configured." }, - "manageDestinations" : { + "message" : { "type" : "string", - "description" : "This property is to enable/disable the manageDestinations" + "description" : "The error or warning or success message from persisting the keystore in API Gateway. If there are failures in loading a keystore or a key alias, then the reasons for the failures are indicated by this message." }, - "allowNewConnectionPerTrigger" : { - "type" : "string", - "description" : "This property is to enable/disable the allowNewConnectionPerTrigger" + "isLoaded" : { + "type" : "boolean", + "description" : "Indicates whether the keystore is loaded or not. A keystore may not be loaded if there are errors while reading the keystore file or its key aliases." }, - "producerCachingMode" : { + "isWarning" : { + "type" : "boolean", + "description" : "Indicates whether a warning is thrown by the API Gateway while persisting the keystore." + } + }, + "description" : "This model contains Keystore details" + }, + "TrustStore" : { + "type" : "object", + "properties" : { + "id" : { "type" : "string", - "description" : "This property is to enable/disable the producerCachingMode. 0 means disabled, 2 means Enable per destination" + "description" : "The unique identifier for the truststore.", + "readOnly" : true }, - "producerSessionPoolMinSize" : { + "keyStoreName" : { "type" : "string", - "description" : "This property specifies the minimum size of producer session pool" + "description" : "The name of the truststore. It cannot contain spaces or special characters." }, - "producerSessionPoolSize" : { + "keyStoreDescription" : { "type" : "string", - "description" : "This property specifies the max size of producer session pool" + "description" : "The description for the truststore." }, - "cacheProducersPoolMinSize" : { + "keyStoreType" : { "type" : "string", - "description" : "This property specifies the minimum size of producer cache pool" + "description" : "The certificate file format of the truststore.", + "enum" : [ "JKS" ] }, - "cacheProducersPoolSize" : { + "keyStoreProvider" : { "type" : "string", - "description" : "This property specifies the max size of producer cache pool" + "description" : "The provider that is used for the truststore type.", + "enum" : [ "SUN" ] }, - "poolTimeout" : { + "keyStoreLocation" : { "type" : "string", - "description" : "This property specifies the poolTimeout value" + "description" : "The location where the truststore is saved in API Gateway." }, - "cacheProducersQueueList" : { + "keyStorePassword" : { "type" : "string", - "description" : "This property specifies the list of queues to cache" + "description" : "The truststore password that is defined at the time of truststore creation using a keystore utility." }, - "cacheProducersTopicList" : { + "uploadFileName" : { "type" : "string", - "description" : "This property specifies the list of topics to cache" + "description" : "The name of the truststore file that will be used to save the truststore internally in API Gateway." }, - "producerMaxRetryAttempts" : { + "fileContent" : { "type" : "string", - "description" : "This property specifies the max retry attempts value for the producer" + "description" : "The contents of the truststore file." }, - "producerRetryInterval" : { - "type" : "string", - "description" : "This property specifies the retry interval" + "certificateAliases" : { + "type" : "array", + "description" : "The list of aliases that are available within the truststore.", + "readOnly" : true, + "items" : { + "type" : "string" + } }, - "um_loggingOutput" : { + "message" : { "type" : "string", - "description" : "This property specifies the logging output value. 0 refers to server log, 1 refers to audit logging" + "description" : "The warning message if any. Applies only if isWarning = true" }, - "um_producerMessageTracking" : { - "type" : "string", - "description" : "This property is to enable/disable the um_producerMessageTracking" + "isLoaded" : { + "type" : "boolean", + "description" : "Indicates whether the truststore is loaded or not. A truststore may not be loaded if there are errors while reading the truststore file." }, - "um_producerIncludedStrings" : { - "type" : "string", - "description" : "This property specifies the size of um_producerIncludedStrings" + "isWarning" : { + "type" : "boolean", + "description" : "Indicates whether there is a warning message from the API Gateway while the truststore was created/modified." } }, - "description" : "This model contains JMS connection alias details" + "description" : "Model containing the properties of a truststore in API Gateway" }, "APIGateway" : { "type" : "object", @@ -5661,15 +5010,19 @@ "type" : "object", "properties" : { "Sales Information" : { + "description" : "Contains the sales information like customer name,customer id etc.", "$ref" : "#/definitions/SalesInformation" }, "productInformation" : { + "description" : "Contains the product information like expiration date,operating system,product code etc.", "$ref" : "#/definitions/ProductInformation" }, "integrationServer" : { + "description" : "Contains the information related Integration Server like clustering,remoteInvoke etc.", "$ref" : "#/definitions/IntegrationServer" }, "licenseInformation" : { + "description" : "Contains the licensing information like price unit,price quantity etc.", "$ref" : "#/definitions/LicenseInformation" }, "API Gateway" : { @@ -5762,70 +5115,13 @@ "ContractPosNumber" : { "type" : "string" }, - "License Type Details" : { - "type" : "string" - }, - "AutoCallHome" : { - "type" : "string" - } - } - }, - "ApprovalConfiguration" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "Unique identifier of a Approval Configuration. Any of 'createApplication', 'updateApplication', 'registerApplication', 'subscribePackage' and 'changeOwner'" - }, - "eventType" : { - "type" : "string", - "description" : "Event Type: Any of 'createApplication', 'updateApplication', 'registerApplication', 'subscribePackage' and 'changeOwner'" - }, - "isEnabled" : { - "type" : "boolean", - "description" : "true/false. true value enforces approvals for the mentioned eventtype" - }, - "approversGroupId" : { - "type" : "string", - "description" : "Approvers Accessprofile Identifier. Whoever belongs to the selected team will be considered as Approvers" - }, - "approvalMode" : { - "type" : "string", - "description" : "Only possible value is anyone. This implies that, any one user associated with the approvers team can approve or reject the requests. The requester need not wait for the approval of each approver in the approvers group." - }, - "approvedEmailConfiguration" : { - "$ref" : "#/definitions/EmailConfiguration" - }, - "rejectedEmailConfiguration" : { - "$ref" : "#/definitions/EmailConfiguration" - }, - "initiateApprovalRequestEmailConfiguration" : { - "$ref" : "#/definitions/EmailConfiguration" - } - }, - "description" : "This model contains details about an ApprovalConfiguration in API Gateway" - }, - "EmailConfiguration" : { - "type" : "object", - "properties" : { - "emailSubject" : { - "type" : "string", - "description" : "Email Subject" - }, - "emailContent" : { - "type" : "string", - "description" : "Email Content" - }, - "enabled" : { - "type" : "boolean", - "description" : "true/false. Email would be sent to user only when enabled value is true." - }, - "requestType" : { - "type" : "string", - "description" : "Request Type. Value would be any of initiated, approved or rejected." + "License Type Details" : { + "type" : "string" + }, + "AutoCallHome" : { + "type" : "string" } - }, - "description" : "This model contains details about an EmailConfiguration configured in Approvals of API Gateway" + } }, "OutboundProxySettings" : { "type" : "object", @@ -5901,1420 +5197,1568 @@ } } }, - "ProxyBypass" : { + "NotificationCriteria" : { "type" : "object", - "required" : [ "proxyBypassAddresses" ], "properties" : { - "entityId" : { + "id" : { + "type" : "string" + }, + "user" : { "type" : "string", - "description" : "proxyBypass constance Fixed unique identifier value is proxyBypass" + "description" : "User" }, - "proxyBypassAddresses" : { - "type" : "array", - "description" : "The host name or IP address of the server. In the Addresses field, type the fully qualified host and domain name of each server to which you want the Integration Server to issue requests directly. Type the host name and the domain name exactly as they appear in the URLs the server uses. To enter multiple names, separate each with commas.\nYou can use the asterisk (*) to identify several servers with similar names. The asterisk matches any number of characters. For example, if you want to bypass requests made to localhost, www.yahoo.com, home.microsoft.com, and all hosts whose names begin with NYC, you would type:\nlocalhost,www.yahoo.com,home.microsoft.com, NYC*.*", - "items" : { - "type" : "string" + "notifyAt" : { + "type" : "integer", + "format" : "int32", + "description" : "When to notify" + }, + "email" : { + "type" : "string", + "description" : "Email address" + }, + "notificationType" : { + "type" : "string", + "description" : "Type of notification" + }, + "creationDate" : { + "type" : "string", + "description" : "Date of creation" + }, + "defaultNotificationCriteria" : { + "type" : "boolean", + "description" : "Default notification criteria" + } + }, + "description" : "This defines the notification criteria required for the transaction based license to generate notifications." + }, + "MasterPasswordExpiryInterval" : { + "type" : "object", + "properties" : { + "expireInterval" : { + "type" : "string", + "description" : "This interval(in days) specifies the time after which the master password would expire" + } + }, + "description" : "The expiration interval is a recommended time between master password changes.The default expiration interval for a master password is 90 days.After the expiration date,API Gateway will continue to operate using the existing password indefinitely." + }, + "MasterPasswordExpiryIntervalResponse" : { + "type" : "object", + "properties" : { + "message" : { + "type" : "string", + "description" : "The response message from the server when the master password expiry interval is updated" + }, + "result" : { + "type" : "string", + "description" : "This is the updated master password expiry interval(in days)" + } + }, + "description" : "The schema of the response from the server when the expiry interval is updated" + }, + "MasterPasswordUpdate" : { + "type" : "object", + "properties" : { + "oldPassword" : { + "type" : "string", + "description" : "This is the base64 encoded value of the old master password" + }, + "newPassword" : { + "type" : "string", + "description" : "This is the base64 encoded value of the new master password" + } + }, + "description" : "Describes the properties required for updating the master password" + }, + "MasterPasswordUpdateResponse" : { + "type" : "object", + "properties" : { + "message" : { + "type" : "string", + "description" : "The response message from the server when the master password is updated" + } + } + }, + "MasterPasswordResetResponse" : { + "type" : "object", + "properties" : { + "message" : { + "type" : "string", + "description" : "The response message from the server when the master password is reset" + }, + "handleCount" : { + "type" : "string", + "description" : "The number of passwords that are updated during master password reset" + } + }, + "description" : "Describes the response when the master password is reset" + }, + "MasterPasswordProperties" : { + "type" : "object", + "properties" : { + "lastChangeDate" : { + "type" : "string", + "description" : "The latest date when the master password was updated.The format for this field would be YYYY-MM-DD HH:mm:ssZ" + }, + "expireDate" : { + "type" : "string", + "description" : "The expiry date of the master password.The format for this field would be YYYY-MM-DD HH:mm:ssZ" + }, + "expireInterval" : { + "type" : "string", + "description" : "The interval(in days) after which the master password would expire" + }, + "daysTilExpire" : { + "type" : "string", + "description" : "The remaining number of days for the master password expiration" + }, + "expireMessage" : { + "type" : "string", + "description" : "The message which will be returned once the master password is expired" + }, + "statusMessage" : { + "type" : "string", + "description" : "The current status of the master password" + } + }, + "description" : "Describes the master password configuration properties in API Gateway" + }, + "ClusterInfo" : { + "type" : "object", + "properties" : { + "clusterAware" : { + "type" : "boolean", + "description" : "The property which is used to find whether APIGateway is cluster aware." + }, + "pendingRestart" : { + "type" : "boolean", + "description" : "The property used to determine whether APIGateway is pending for restart for the cluster settings to take effect." + }, + "currentlyClustered" : { + "type" : "boolean", + "description" : "The current clusterd state of APIGateway." + }, + "clusterSessTimeout" : { + "type" : "string", + "description" : "Number of minutes an inactive session will be retained in the clustered session store. The default is 60." + }, + "clusterName" : { + "type" : "string", + "description" : "Name of the cluster to which this APIGateway belongs." + }, + "actionOnStartupError" : { + "type" : "string", + "description" : "How APIGateway responds when an error at start up prevents APIGateway from joining the cluster." + }, + "tsaURLs" : { + "type" : "string", + "description" : "A comma separated list of the URLs for the Terracotta Server Array to be used with the cluster to which this APIGateway belongs." + }, + "cacheManagerName" : { + "type" : "string", + "description" : "The default cache manager." + }, + "cacheName" : { + "type" : "string", + "description" : "The default cache." + }, + "message" : { + "type" : "string", + "description" : "Message to be displayed to the clients." + } + } + }, + "JMSConsumerAlias" : { + "allOf" : [ { + "$ref" : "#/definitions/WebserviceEndpointAlias" + }, { + "type" : "object", + "properties" : { + "executeACL" : { + "type" : "string", + "description" : "This property specifies the access profile name" + }, + "jmsAliasType" : { + "type" : "string", + "description" : "This property specifies the jmsAliasType. Either it could be JMS or JNDI " + }, + "jndiProvAlias" : { + "type" : "string", + "description" : "This property specifies the name of JNDI" + }, + "connFactoryName" : { + "type" : "string", + "description" : "This property specifies the connection factory name" + }, + "jmsConnAlias" : { + "type" : "string", + "description" : "This property specifies the name of JMS connection" + }, + "user" : { + "type" : "string", + "description" : "This property specifies the name of the user to create the JMS connection" + }, + "password" : { + "type" : "string", + "description" : "This property specifies the password to create the JMS connection" + } + } + } ] + }, + "JMSProviderAlias" : { + "allOf" : [ { + "$ref" : "#/definitions/WebserviceEndpointAlias" + }, { + "type" : "object", + "properties" : { + "jmsTriggerName" : { + "type" : "string", + "description" : "This property specifies the JMS Trigger name" + }, + "deliveryMode" : { + "type" : "string", + "description" : "This property specifies the deliveryMode" + }, + "timeToLive" : { + "type" : "integer", + "format" : "int64", + "description" : "This property specifies the timeToLive value" + }, + "priority" : { + "type" : "integer", + "format" : "int32", + "description" : "This property specifies priority value" + }, + "replyToDestName" : { + "type" : "string", + "description" : "This property specifies the replyToDestName name" + }, + "replyToDestType" : { + "type" : "string", + "description" : "This property specifies the replyToDestType type" + }, + "includeConnFactoryName" : { + "type" : "string", + "description" : "This property enables/disables the includeConnFactoryName parameter" + }, + "includeJNDIParams" : { + "type" : "string", + "description" : "This property enables/disables the includeJNDIParams parameter" } } - } - }, - "MasterPasswordExpiryInterval" : { - "type" : "object", - "properties" : { - "expireInterval" : { - "type" : "string", - "description" : "This interval(in days) specifies the time after which the master password would expire" - } - }, - "description" : "The expiration interval is a recommended time between master password changes.The default expiration interval for a master password is 90 days.After the expiration date,API Gateway will continue to operate using the existing password indefinitely." + } ] }, - "MasterPasswordExpiryIntervalResponse" : { + "WebserviceEndpointAlias" : { "type" : "object", + "discriminator" : "aliasType", "properties" : { - "message" : { + "WebserviceEndpointAliasId" : { "type" : "string", - "description" : "The response message from the server when the master password expiry interval is updated" + "description" : "A unique ID for the WebserviceEndpointAlias", + "readOnly" : true }, - "result" : { - "type" : "string", - "description" : "This is the updated master password expiry interval(in days)" - } - }, - "description" : "The schema of the response from the server when the expiry interval is updated" - }, - "MasterPasswordUpdate" : { - "type" : "object", - "properties" : { - "oldPassword" : { + "alias" : { "type" : "string", - "description" : "This is the base64 encoded value of the old master password" + "description" : "The name of the WebserviceEndpointAlias" }, - "newPassword" : { - "type" : "string", - "description" : "This is the base64 encoded value of the new master password" - } - }, - "description" : "Describes the properties required for updating the master password" - }, - "MasterPasswordUpdateResponse" : { - "type" : "object", - "properties" : { - "message" : { + "description" : { "type" : "string", - "description" : "The response message from the server when the master password is updated" - } - } - }, - "MasterPasswordResetResponse" : { - "type" : "object", - "properties" : { - "message" : { + "description" : "The description of the WebserviceEndpointAlias" + }, + "aliasType" : { "type" : "string", - "description" : "The response message from the server when the master password is reset" + "description" : "The property specifies the aliasType, Either it should be Provider or Consumer" }, - "handleCount" : { + "transportType" : { "type" : "string", - "description" : "The number of passwords that are updated during master password reset" - } - }, - "description" : "Describes the response when the master password is reset" - }, - "MasterPasswordProperties" : { - "type" : "object", - "properties" : { - "lastChangeDate" : { + "description" : "this defines the transport type. The supported transport type is JMS" + }, + "keyStoreAlias" : { "type" : "string", - "description" : "The latest date when the master password was updated.The format for this field would be YYYY-MM-DD HH:mm:ssZ" + "description" : "this property specifies the keystorealias name" }, - "expireDate" : { + "keyAlias" : { "type" : "string", - "description" : "The expiry date of the master password.The format for this field would be YYYY-MM-DD HH:mm:ssZ" + "description" : "this property specifies the keyalias name" }, - "expireInterval" : { + "trustStoreAlias" : { "type" : "string", - "description" : "The interval(in days) after which the master password would expire" + "description" : "this property specifies the trustStoreAlias name" }, - "daysTilExpire" : { + "timestampPrecisionInMillis" : { "type" : "string", - "description" : "The remaining number of days for the master password expiration" + "description" : "this property specifies the timestampPrecisionInMillis" }, - "expireMessage" : { + "timestampTimeToLive" : { "type" : "string", - "description" : "The message which will be returned once the master password is expired" + "description" : "this property specifies the timestampTimeToLive value" }, - "statusMessage" : { + "timestampMaximumSkew" : { "type" : "string", - "description" : "The current status of the master password" + "description" : "this property specifies the timestampMaximumSkew value" } - }, - "description" : "Describes the master password configuration properties in API Gateway" + } }, - "ChangeOwnerRequest" : { + "LoadBalancer" : { "type" : "object", "properties" : { - "assetType" : { - "type" : "string", - "description" : "APIGateway asset type.", - "readOnly" : true + "httpUrls" : { + "type" : "array", + "description" : "HTTP URLs to be exposed for API invocation.", + "items" : { + "type" : "string" + } }, - "assetIds" : { + "httpsUrls" : { "type" : "array", - "description" : "List of APIGateway assets for which change owner/team is requested.", - "readOnly" : true, + "description" : "HTTPS URLs to be exposed for API invocation.", "items" : { "type" : "string" } }, - "newOwner" : { - "type" : "string", - "description" : "New owner of the APIGateway asset.", - "readOnly" : true + "websocketUrls" : { + "type" : "array", + "description" : "WebSocket URL to be exposed for Websocket APIs invocation.", + "items" : { + "type" : "string" + } }, - "currentOwner" : { + "webAppUrl" : { "type" : "string", - "description" : "Current owner of the APIGateway asset.", - "readOnly" : true - }, - "currentTeams" : { + "description" : "API Gateway UI access url" + } + }, + "description" : "This defines the Load Balancer URLs configuration in the API Gateway." + }, + "WhiteListedIPs" : { + "type" : "object", + "properties" : { + "privateIPs" : { "type" : "array", - "description" : "New teams of the APIGateway asset.", - "readOnly" : true, + "description" : "List of private whitelisted IPs to be considered while API is created / updated by importing a url and import an archive", "items" : { "type" : "string" } + } + }, + "description" : "This defines the whitelisting of private IPs configured in the API Gateway." + }, + "APICallbackSettings" : { + "type" : "object", + "properties" : { + "processCallbackRequests" : { + "type" : "boolean", + "description" : "Decider to process the callback URLs" + }, + "allowCallBackRequestsHTTPsAccessOnly" : { + "type" : "boolean", + "description" : "Native Servers can access the callback proxy through HTTPs protocal" + }, + "portType" : { + "type" : "string", + "description" : "Select value from Loadbalancer, HTTP, HTTPS, External, the port used to forward to Native Server" + }, + "allowCallbackRequestAccessToAllowedIPs" : { + "type" : "boolean", + "description" : "Decider to process callback requests based on Allowed IPs" }, - "newTeams" : { + "allowedIPs" : { "type" : "array", - "description" : "Current teams of the APIGateway asset.", - "readOnly" : true, + "description" : "Configure Allowed IPs.", "items" : { "type" : "string" } } } }, - "ChangeOwnerResponse" : { + "CallbackProcessorSettings" : { "type" : "object", + "required" : [ "configuration" ], "properties" : { - "message" : { - "type" : "string" + "configuration" : { + "description" : "Specifies the API callback processor setting properties", + "$ref" : "#/definitions/APICallbackSettings" + } + }, + "description" : "This defines the various extended settings that can be configured in API Gateway." + }, + "ExtendedSettingsInput" : { + "type" : "object", + "properties" : { + "preferredSettings" : { + "description" : "Administrator can choose their preferred extended settings and watt properties and can modify their values using this field. Also, these settings are the ones that are shown in the API Gateway User Interface by default.", + "$ref" : "#/definitions/Settings" + } + } + }, + "Settings" : { + "type" : "object", + "properties" : { + "wattKeys" : { + "type" : "object", + "description" : "A map containing the Integration Server Watt properties key-value pair.", + "additionalProperties" : { + "type" : "string" + } }, - "matchingAssets" : { + "extendedKeys" : { "type" : "object", + "description" : "A map containing the API Gateway Extended Settings key-value pair.", "additionalProperties" : { - "type" : "object" + "type" : "string" } + } + } + }, + "ExtendedSettingsOutput" : { + "type" : "object", + "properties" : { + "preferredSettings" : { + "description" : "Administrator can choose their preferred extended settings and watt properties and can modify their values using this field. Also, these settings are the ones that are shown in the API Gateway User Interface by default.", + "$ref" : "#/definitions/Settings" }, - "status" : { - "type" : "string", - "enum" : [ "PENDING_APPROVAL", "OK" ] + "allSettings" : { + "description" : "Contains all the extended settings and watt properties.", + "$ref" : "#/definitions/Settings" } } }, - "JNDIProviderAlias" : { + "ErrorProcessing" : { "type" : "object", "properties" : { - "jndiProviderAliasId" : { - "type" : "string", - "description" : "A unique ID for the jndiProviderAlias", - "readOnly" : true + "fallbackErrorMessage" : { + "type" : "string" }, - "jndiAliasName" : { - "type" : "string", - "description" : "The name of the JNDIProviderAlias configuration" + "defaultErrorMessage" : { + "type" : "string" }, - "description" : { - "type" : "string", - "description" : "The description of the JNDIProviderAlias configuration" + "sendNativeProviderFault" : { + "type" : "string" + } + }, + "description" : "Defines the error message configuration. The configured error message will be sent to the invoking client in case API Gateway encounters an exception." + }, + "KeystoreTruststore" : { + "type" : "object", + "properties" : { + "configId" : { + "type" : "string" }, - "initialContextFactory" : { - "type" : "string", - "description" : "The IntialContextFactoryName for JNDI lookup" + "keystoreName" : { + "type" : "string" }, - "providerURL" : { - "type" : "string", - "description" : "Message broker details" + "signingAlias" : { + "type" : "string" }, - "providerURLFailoverList" : { + "truststoreName" : { + "type" : "string" + } + }, + "description" : "This defines the keystore and truststore requred for the API Gateway." + }, + "Destination" : { + "type" : "object", + "properties" : { + "sendErrorEvent" : { "type" : "string", - "description" : "Fall backs URL's of providerURL" + "description" : "Flag to enable publish of the error events. Occurs each time an API invocation results in an error." }, - "securityPrincipal" : { + "sendLifecycleEvent" : { "type" : "string", - "description" : "SecurityPrincipal in case of SSL connection" + "description" : "Flag to enable publish of the life cycle events. Occurs each time API Gateway is started or shut down." }, - "securityCredentials" : { + "sendPolicyViolationEvent" : { "type" : "string", - "description" : "securityCredentials in case of SSL connection" + "description" : "Flag to enable publish of the policy violations events. Occurs each time an API invocation violates the policy enforcement that was set for the API." }, - "otherProps" : { + "sendPerformanceMetrics" : { "type" : "string", - "description" : "Any other properties you would like to mention, Provide the values as comma separated" - } - }, - "description" : "This model contains JNDI configuration details" - }, - "TrustStore" : { - "type" : "object", - "properties" : { - "id" : { + "description" : "Flag to enable publish of the performance metrics. The performance data provides information on average response time, total request count, fault count, and so on." + }, + "metricsPublishInterval" : { "type" : "string", - "description" : "The unique identifier for the truststore.", - "readOnly" : true + "description" : "The interval at which the metrics will be published to the destination. Enter a value from 1 through 60. The default is 60 minutes." }, - "keyStoreName" : { + "sendAuditlogPackageManagementEvent" : { "type" : "string", - "description" : "The name of the truststore. It cannot contain spaces or special characters." + "description" : "Flag to enable publish of the package management audit logs. Occurs each time a package create/update/delete operation performed." }, - "keyStoreDescription" : { + "sendAuditlogPolicyManagementEvent" : { "type" : "string", - "description" : "The description for the truststore." + "description" : "Flag to enable publish of the policy management audit logs. Occurs each time a policy create/update/delete operation performed." }, - "keyStoreType" : { + "sendAuditlogRuntimeDataManagementEvent" : { "type" : "string", - "description" : "The certificate file format of the truststore.", - "enum" : [ "JKS" ] + "description" : "Flag to enable publish of the analytics management audit logs. Occurs each time an analytics data purge operation performed." }, - "keyStoreProvider" : { + "sendAuditlogPlanManagementEvent" : { "type" : "string", - "description" : "The provider that is used for the truststore type.", - "enum" : [ "SUN" ] + "description" : "Flag to enable publish of the plan management audit logs. Occurs each time a plan create/update/delete operation performed." }, - "keyStoreLocation" : { + "sendAuditlogApprovalManagementEvent" : { "type" : "string", - "description" : "The location where the truststore is saved in API Gateway." + "description" : "Flag to enable publish of the approval management audit logs. Occurs each time an approval request create/update/delete operation performed." }, - "keyStorePassword" : { + "sendAuditlogUserManagementEvent" : { "type" : "string", - "description" : "The truststore password that is defined at the time of truststore creation using a keystore utility." + "description" : "Flag to enable publish of the user management audit logs. Occurs each time an user create/update/delete operation performed." }, - "uploadFileName" : { + "sendAuditlogApplicationManagementEvent" : { "type" : "string", - "description" : "The name of the truststore file that will be used to save the truststore internally in API Gateway." + "description" : "Flag to enable publish of the application management audit logs. Occurs each time an application create/update/delete operation performed." }, - "fileContent" : { + "sendAuditlogGroupManagementEvent" : { "type" : "string", - "description" : "The contents of the truststore file." + "description" : "Flag to enable publish of the group management audit logs. Occurs each time a group create/update/delete operation performed." }, - "certificateAliases" : { - "type" : "array", - "description" : "The list of aliases that are available within the truststore.", - "readOnly" : true, - "items" : { - "type" : "string" - } + "sendAuditlogAccessProfileManagementEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the access profile management audit logs. Occurs each time an access profile create/update/delete operation performed." }, - "message" : { + "sendAuditlogPromotionManagementEvent" : { "type" : "string", - "description" : "The warning message if any. Applies only if isWarning = true" + "description" : "Flag to enable publish of the promotion management audit logs. Occurs each time a promotion create/update/delete operation performed." }, - "isLoaded" : { - "type" : "boolean", - "description" : "Indicates whether the truststore is loaded or not. A truststore may not be loaded if there are errors while reading the truststore file." + "sendAuditlogAPIManagementEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the api management audit logs. Occurs each time an api create/update/delete operation performed." }, - "isWarning" : { - "type" : "boolean", - "description" : "Indicates whether there is a warning message from the API Gateway while the truststore was created/modified." + "sendAuditlogAliasManagementEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the alias management audit logs. Occurs each time an alias create/update/delete operation performed." } }, - "description" : "Model containing the properties of a truststore in API Gateway" + "description" : "This defines the configurations required for the destination." }, - "NotificationCriteria" : { + "AuditLogDestination" : { "type" : "object", "properties" : { - "id" : { - "type" : "string" + "name" : { + "type" : "string", + "description" : "The default name of the audit log, API Gateway Transaction Logger." }, - "user" : { + "enable" : { "type" : "string", - "description" : "User" + "description" : "Enable activation to enable the logger to start writing the log entries to the database or the file." }, - "notifyAt" : { - "type" : "integer", - "format" : "int32", - "description" : "When to notify" + "mode" : { + "type" : "string", + "description" : "Specifies whether the logger is to write entries to the destination synchronously or asynchronously." }, - "email" : { + "guaranteed" : { "type" : "string", - "description" : "Email address" + "description" : "Provides data about guaranteed delivery transactions." }, - "notificationType" : { + "destination" : { "type" : "string", - "description" : "Type of notification" + "description" : "Specifies whether the logger is to write entries to a file or database." }, - "creationDate" : { + "maximumQueueSize" : { "type" : "string", - "description" : "Date of creation" + "description" : "Specifies the maximum number of entries the queue can hold." }, - "defaultNotificationCriteria" : { - "type" : "boolean", - "description" : "Default notification criteria" + "maximumRetries" : { + "type" : "string", + "description" : "Specifies the maximum times the logger must retry writing the entry to the destination if the first attempt fails because of a transient error." + }, + "waitBetweenRetries" : { + "type" : "string", + "description" : "Specifies the waiting time before the logger can reconnect and rewrite the eateries to the destination in case of failure." } }, - "description" : "This defines the notification criteria required for the transaction based license to generate notifications." + "description" : "This defines the configurations required for Audit Log destination." }, - "URLAliasSettings" : { + "CSCommunicationDestination" : { "type" : "object", - "required" : [ "alias", "package" ], "properties" : { - "id" : { + "protocol" : { "type" : "string", - "description" : "URL Aliases ID", - "readOnly" : true + "description" : "Specifies the communication protocol used to establish communication between API Gateway and CentraSite." }, - "alias" : { + "hostname" : { "type" : "string", - "description" : "The unique alias name given for the URL aliases. When invoked with this alias, the path will be substituted." + "description" : "Specifies the host name or IP address of the machine on which CentraSite Application Server Tier (CAST) is running." }, - "urlPath" : { + "uddiPort" : { "type" : "string", - "description" : "The default path which must be substituted for the URL alias. If port specific mappings are provided, then this default path is considered if none of the ports are matched with the port of the incoming request. Either urlPath or portList must be specified." + "description" : "Specifies the port on which CAST is listening. The default port number for CAST is 53307." }, - "portList" : { - "type" : "array", - "example" : "[5555#gateway/ws/soapapi/v1/getOperation,5556#gateway/ws/soapapi/v2/testOp]", - "description" : "An array of port specific mappings for paths. Each mapping in this array must be specified as port_number#url_path. Either urlPath or portList must be specified.", - "items" : { - "type" : "string" - } + "username" : { + "type" : "string", + "description" : "Specifies the CentraSite user ID for authenticating CentraSite when API Gateway communicates with CentraSite. This implies the user ID of a user who has the CentraSite Administrator role or the API Gateway Administrator role in CentraSite." }, - "association" : { + "password" : { "type" : "string", - "example" : "1", - "description" : "Indicates how the URL Alias is created. This value is always 1." + "description" : "Specifies the password for authenticating CentraSite when API Gateway communicates with CentraSite." }, - "package" : { + "gatewayAssetId" : { "type" : "string", - "example" : "WmAPIGateway", - "description" : "The package to which the URL Alias is associated. Any URL Alias created through the API should always be associated with the WmAPIGateway package." + "description" : "Specifies the registered API Gateway ID." + }, + "targetname" : { + "type" : "string", + "description" : "Specifies the name of the API Gateway asset as defined in CentraSite." } }, - "description" : "This model contains URL Aliases details" - }, - "URLAliasesGetResponse" : { - "type" : "object", - "properties" : { - "urlAliases" : { - "type" : "array", - "description" : "Contains the list of available URL aliases or a single URL alias object.", - "items" : { - "$ref" : "#/definitions/URLAliasSettings" - } - } - } + "description" : "This defines the configurations required for Centrasite Communication section of CentraSite destination." }, - "Rule" : { + "CSSNMPDestination" : { "type" : "object", - "discriminator" : "ruleType", "properties" : { - "id" : { + "sendTRAPsToCentrasite" : { "type" : "string", - "description" : "A unique ID for the rule" + "description" : "Specifies whether the events has to be sent from API Gateway to CentraSite." }, - "ruleType" : { + "transport" : { "type" : "string", - "description" : "Type of the rule", - "enum" : [ "teamAssignmentRule" ] + "description" : "Specifies the wire transport protocol that is used by the SNMP Listener." }, - "name" : { + "hostname" : { "type" : "string", - "description" : "Rule name" + "description" : "Specifies the CentraSite host name or IP address to which the SNMP listener binds." }, - "description" : { + "port" : { "type" : "string", - "description" : "Rule Description" - }, - "attributeContexts" : { - "type" : "array", - "description" : "Context(s) of the attribute used in rule expression", - "items" : { - "type" : "string" - } + "description" : "Specifies the port to which the SNMP listener binds. The default port number for CentraSite's SNMP server is 8181." }, - "ruleLogicalOperator" : { + "username" : { "type" : "string", - "description" : "Logical operator (AND / OR) that should be used to evaluate Rule expression" - }, - "ruleExpressions" : { - "type" : "array", - "description" : "Rule condition is defined using ruleExpressions", - "items" : { - "$ref" : "#/definitions/RuleExpression" - } + "description" : "Specifies the SecurityName that is used by the SNMP Listener." }, - "owner" : { + "authorizationProtocol" : { "type" : "string", - "description" : "Owner of this rule asset" + "description" : "Specifies the authorization protocol that is used by the SNMP Listener for decoding the incoming trap." }, - "active" : { - "type" : "boolean", - "description" : "This rule is active" - } - } - }, - "RuleExpression" : { - "type" : "object", - "properties" : { - "attributeName" : { - "type" : "string" + "authorizationPassword" : { + "type" : "string", + "description" : "Specifies the password to be used for authorization protocol." }, - "operator" : { - "type" : "string" + "privacyProtocol" : { + "type" : "string", + "description" : "Specifies the privacy protocol that is used by the SNMP Listener for decoding the incoming trap." }, - "attributeValue" : { - "type" : "string" - } - } - }, - "TeamAssignmentRule" : { - "allOf" : [ { - "$ref" : "#/definitions/Rule" - }, { - "type" : "object", - "properties" : { - "teamsAssigned" : { - "type" : "array", - "description" : "List of teams to be assigned, if conditions of rule expression is met", - "items" : { - "type" : "string" - } - } + "privacyPassword" : { + "type" : "string", + "description" : "Specifies the password to be used for privacy protocol." } - } ] + }, + "description" : "This defines the configurations required for CentraSite SNMP section of CentraSite destination." }, - "ClusterInfo" : { + "ElasticsearchDestination" : { "type" : "object", "properties" : { - "clusterAware" : { - "type" : "boolean", - "description" : "The property which is used to find whether APIGateway is cluster aware." - }, - "pendingRestart" : { - "type" : "boolean", - "description" : "The property used to determine whether APIGateway is pending for restart for the cluster settings to take effect." - }, - "currentlyClustered" : { - "type" : "boolean", - "description" : "The current clusterd state of APIGateway." - }, - "clusterSessTimeout" : { - "type" : "string", - "description" : "Number of minutes an inactive session will be retained in the clustered session store. The default is 60." - }, - "clusterName" : { + "protocol" : { "type" : "string", - "description" : "Name of the cluster to which this APIGateway belongs." + "description" : "Specifies the communication protocol used to establish communication between API Gateway and CentraSite." }, - "actionOnStartupError" : { + "hostname" : { "type" : "string", - "description" : "How APIGateway responds when an error at start up prevents APIGateway from joining the cluster." + "description" : "Specifies the host name or IP address of the machine on which Elasticsearch Server is running." }, - "tsaURLs" : { + "port" : { "type" : "string", - "description" : "A comma separated list of the URLs for the Terracotta Server Array to be used with the cluster to which this APIGateway belongs." + "description" : "Specifies the port on which the Elasticsearch server runs." }, - "cacheManagerName" : { + "indexName" : { "type" : "string", - "description" : "The default cache manager." + "description" : "Specifies the index name for the Elasticsearch server on which the events will be available." }, - "cacheName" : { + "username" : { "type" : "string", - "description" : "The default cache." + "description" : "The username for the Elasticsearch server instance." }, - "message" : { + "password" : { "type" : "string", - "description" : "Message to be displayed to the clients." - } - } - }, - "KeyStore" : { - "type" : "object", - "properties" : { - "keyStoreName" : { + "description" : "The password for the Elasticsearch server instance." + }, + "sendErrorEvent" : { "type" : "string", - "description" : "The name of the keystore. It cannot contain spaces or special characters. The name of the key store must be unique across all the keystores created in API Gateway." + "description" : "Flag to enable publish of the error events. Occurs each time an API invocation results in an error." }, - "keyStoreDescription" : { + "sendLifecycleEvent" : { "type" : "string", - "description" : "The description for the keystore." + "description" : "Flag to enable publish of the life cycle events. Occurs each time API Gateway is started or shut down." }, - "keyStoreType" : { + "sendPolicyViolationEvent" : { "type" : "string", - "description" : "The certificate file format of the keystore.", - "enum" : [ "JKS", "PKCS12" ] + "description" : "Flag to enable publish of the policy violations events. Occurs each time an API invocation violates the policy enforcement that was set for the API." }, - "keyStoreProvider" : { + "sendPerformanceMetrics" : { "type" : "string", - "description" : "The provider that is used for the keystore type. The default is SUN for JKS type and SunJSSE for PKCS12 type.", - "enum" : [ "SUN", "SunJSSE" ] + "description" : "Flag to enable publish of the performance metrics. The performance data provides information on average response time, total request count, fault count, and so on." }, - "keyStorePassword" : { + "metricsPublishInterval" : { "type" : "string", - "description" : "The keystore password that is defined at the time of keystore creation using a keystore utility." + "description" : "The interval at which the metrics will be published to the destination. Enter a value from 1 through 60. The default is 60 minutes." }, - "uploadFileName" : { + "sendAuditlogPackageManagementEvent" : { "type" : "string", - "description" : "The name of the keystore file that will be used to save the keystore internally in API Gateway." + "description" : "Flag to enable publish of the package management audit logs. Occurs each time a package create/update/delete operation performed." }, - "fileContent" : { + "sendAuditlogPolicyManagementEvent" : { "type" : "string", - "description" : "The contents of the keystore file." + "description" : "Flag to enable publish of the policy management audit logs. Occurs each time a policy create/update/delete operation performed." }, - "pkAliasesList" : { + "sendAuditlogRuntimeDataManagementEvent" : { "type" : "string", - "description" : "Comma separated list of alias names in the uploaded keystore file." + "description" : "Flag to enable publish of the analytics management audit logs. Occurs each time an analytics data delete operation performed." }, - "pkPasswordsList" : { + "sendAuditlogPlanManagementEvent" : { "type" : "string", - "description" : "Comma separated list of passwords in the same order as the aliases specified in pkAliasesList. If a particular key alias does not have a password, it is denoted by space." + "description" : "Flag to enable publish of the plan management audit logs. Occurs each time a plan create/update/delete operation performed." }, - "nullPKpasswds" : { + "sendAuditlogApprovalManagementEvent" : { "type" : "string", - "description" : "Comma separated list of boolean values (false/true) indicating whether the particular alias has a password or not in the same order as the aliases specified in pkAliasesList. For each key alias, true indicates that the key alias does not have a password and false indicates that it does have a password." + "description" : "Flag to enable publish of the approval management audit logs. Occurs each time an approval request create/update/delete operation performed." }, - "bitarray" : { + "sendAuditlogUserManagementEvent" : { "type" : "string", - "description" : "Comma separated list of bits (1/0) indicating whether the particular key alias has been successfully configured in API Gateway or not. For each key alias, 1 indicates that the key alias was loaded successfully and 0 indicates that the key alias was not loaded/configured." + "description" : "Flag to enable publish of the user management audit logs. Occurs each time an user create/update/delete operation performed." }, - "message" : { + "sendAuditlogApplicationManagementEvent" : { "type" : "string", - "description" : "The error or warning or success message from persisting the keystore in API Gateway. If there are failures in loading a keystore or a key alias, then the reasons for the failures are indicated by this message." + "description" : "Flag to enable publish of the application management audit logs. Occurs each time an application create/update/delete operation performed." }, - "isLoaded" : { - "type" : "boolean", - "description" : "Indicates whether the keystore is loaded or not. A keystore may not be loaded if there are errors while reading the keystore file or its key aliases." + "sendAuditlogGroupManagementEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the group management audit logs. Occurs each time a group create/update/delete operation performed." }, - "isWarning" : { - "type" : "boolean", - "description" : "Indicates whether a warning is thrown by the API Gateway while persisting the keystore." - } - }, - "description" : "This model contains Keystore details" - }, - "LoadBalancer" : { - "type" : "object", - "properties" : { - "httpUrls" : { - "type" : "array", - "description" : "HTTP URLs to be exposed for API invocation.", - "items" : { - "type" : "string" - } + "sendAuditlogAccessProfileManagementEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the access profile management audit logs. Occurs each time an access profile create/update/delete operation performed." }, - "httpsUrls" : { - "type" : "array", - "description" : "HTTPS URLs to be exposed for API invocation.", - "items" : { - "type" : "string" - } + "sendAuditlogPromotionManagementEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the promotion management audit logs. Occurs each time a promotion create/update/delete operation performed." }, - "websocketUrls" : { - "type" : "array", - "description" : "WebSocket URL to be exposed for Websocket APIs invocation.", - "items" : { - "type" : "string" - } + "sendAuditlogAPIManagementEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the api management audit logs. Occurs each time an api create/update/delete operation performed." }, - "webAppUrl" : { + "sendAuditlogAliasManagementEvent" : { "type" : "string", - "description" : "API Gateway UI access url" - } - }, - "description" : "This defines the Load Balancer URLs configuration in the API Gateway." - }, - "WhiteListedIPs" : { - "type" : "object", - "properties" : { - "privateIPs" : { - "type" : "array", - "description" : "List of private whitelisted IPs to be considered while API is created / updated by importing a url and import an archive", - "items" : { - "type" : "string" - } + "description" : "Flag to enable publish of the alias management audit logs. Occurs each time an alias create/update/delete operation performed." } }, - "description" : "This defines the whitelisting of private IPs configured in the API Gateway." + "description" : "This defines the configurations required for Elasticsearch destinations." }, - "APICallbackSettings" : { + "SNMPDestination" : { "type" : "object", "properties" : { - "processCallbackRequests" : { - "type" : "boolean", - "description" : "Decider to process the callback URLs" - }, - "allowCallBackRequestsHTTPsAccessOnly" : { - "type" : "boolean", - "description" : "Native Servers can access the callback proxy through HTTPs protocal" - }, - "portType" : { + "snmpTargetType" : { "type" : "string", - "description" : "Select value from Loadbalancer, HTTP, HTTPS, External, the port used to forward to Native Server" + "description" : "Specifies target type of the SNMP server." }, - "allowCallbackRequestAccessToAllowedIPs" : { - "type" : "boolean", - "description" : "Decider to process callback requests based on Allowed IPs" + "hostname" : { + "type" : "string", + "description" : "Flag to enable save of the life cycle events." }, - "allowedIPs" : { - "type" : "array", - "description" : "Configure Allowed IPs.", - "items" : { - "type" : "string" - } - } - } - }, - "CallbackProcessorSettings" : { - "type" : "object", - "properties" : { - "configuration" : { - "$ref" : "#/definitions/APICallbackSettings" - } - }, - "description" : "This defines the various extended settings that can be configured in API Gateway." - }, - "ExtendedSettingsInput" : { - "type" : "object", - "properties" : { - "preferredSettings" : { - "$ref" : "#/definitions/Settings" - } - } - }, - "Settings" : { - "type" : "object", - "properties" : { - "wattKeys" : { - "type" : "object", - "description" : "A map containing the Integration Server Watt properties key-value pair.", - "additionalProperties" : { - "type" : "string" - } + "port" : { + "type" : "string", + "description" : "The SNMP trap receiver port that is listening for SNMP requests and packets." }, - "extendedKeys" : { - "type" : "object", - "description" : "A map containing the API Gateway Extended Settings key-value pair.", - "additionalProperties" : { - "type" : "string" - } - } - } - }, - "ExtendedSettingsOutput" : { - "type" : "object", - "properties" : { - "preferredSettings" : { - "$ref" : "#/definitions/Settings" + "transport" : { + "type" : "string", + "description" : "The protocol used by SNMP to send traps. The available options are: TCP and UDP. By default, TCP is selected." }, - "allSettings" : { - "$ref" : "#/definitions/Settings" - } - } - }, - "ErrorProcessing" : { - "type" : "object", - "properties" : { - "fallbackErrorMessage" : { - "type" : "string" + "username" : { + "type" : "string", + "description" : "If User is selected as the SNMP target type, then the Username field specifies the SNMPv3 user name to use when connecting to the receiver." }, - "defaultErrorMessage" : { - "type" : "string" + "useAuthorization" : { + "type" : "string", + "description" : "Specifies whether an authorization key is required. " }, - "sendNativeProviderFault" : { - "type" : "string" - } - }, - "description" : "Defines the error message configuration. The configured error message will be sent to the invoking client in case API Gateway encounters an exception." - }, - "KeystoreTruststore" : { - "type" : "object", - "properties" : { - "configId" : { - "type" : "string" + "usePrivacy" : { + "type" : "string", + "description" : "Specifies whether a privacy (encryption) key is required." }, - "keystoreName" : { - "type" : "string" + "sendErrorEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the error events. Occurs each time an API invocation results in an error." }, - "signingAlias" : { - "type" : "string" + "sendLifecycleEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the life cycle events. Occurs each time API Gateway is started or shut down." }, - "truststoreName" : { - "type" : "string" + "sendPolicyViolationEvent" : { + "type" : "string", + "description" : "Flag to enable publish of the policy violations events. Occurs each time an API invocation violates the policy enforcement that was set for the API." } }, - "description" : "This defines the keystore and truststore requred for the API Gateway." + "description" : "This defines the configurations required for the SNMP destination." }, - "Destination" : { + "EmailDestination" : { "type" : "object", "properties" : { - "sendErrorEvent" : { + "smtpServer" : { "type" : "string", - "description" : "Flag to enable publish of the error events. Occurs each time an API invocation results in an error." + "description" : "The server name or the IP address of the SMTP server that API Gateway uses to send the messages." }, - "sendLifecycleEvent" : { + "port" : { "type" : "string", - "description" : "Flag to enable publish of the life cycle events. Occurs each time API Gateway is started or shut down." + "description" : "The port that API Gateway uses to connect to the specified SMTP server." }, - "sendPolicyViolationEvent" : { + "username" : { "type" : "string", - "description" : "Flag to enable publish of the policy violations events. Occurs each time an API invocation violates the policy enforcement that was set for the API." + "description" : "The username that API Gateway uses to connect to the specified SMTP server." }, - "sendPerformanceMetrics" : { + "password" : { "type" : "string", - "description" : "Flag to enable publish of the performance metrics. The performance data provides information on average response time, total request count, fault count, and so on." + "description" : "The password that API Gateway uses to connect to the specified SMTP server." }, - "metricsPublishInterval" : { + "transportLayerSecurity" : { "type" : "string", - "description" : "The interval at which the metrics will be published to the destination. Enter a value from 1 through 60. The default is 60 minutes." + "description" : "The SSL encryption type that API Gateway uses when communicating with an email server. " }, - "sendAuditlogPackageManagementEvent" : { + "trustStoreAlias" : { "type" : "string", - "description" : "Flag to enable publish of the package management audit logs. Occurs each time a package create/update/delete operation performed." + "description" : "The truststore that API Gateway uses while sending the request to a native API." }, - "sendAuditlogPolicyManagementEvent" : { + "defaultEmailCharset" : { "type" : "string", - "description" : "Flag to enable publish of the policy management audit logs. Occurs each time a policy create/update/delete operation performed." + "description" : "The character set that API Gateway uses to be recognized by the system. " }, - "sendAuditlogRuntimeDataManagementEvent" : { + "fromEmail" : { "type" : "string", - "description" : "Flag to enable publish of the analytics management audit logs. Occurs each time an analytics data purge operation performed." + "description" : "The email address from which you want to send the alerts." }, - "sendAuditlogPlanManagementEvent" : { + "testRecipient" : { "type" : "string", - "description" : "Flag to enable publish of the plan management audit logs. Occurs each time a plan create/update/delete operation performed." + "description" : "The email address to which you want to send the test email." }, - "sendAuditlogApprovalManagementEvent" : { + "logInvocationSubject" : { "type" : "string", - "description" : "Flag to enable publish of the approval management audit logs. Occurs each time an approval request create/update/delete operation performed." + "description" : "The subject line of the email to be sent for the Log Invocation policy action." }, - "sendAuditlogUserManagementEvent" : { + "logInvocationContent" : { "type" : "string", - "description" : "Flag to enable publish of the user management audit logs. Occurs each time an user create/update/delete operation performed." + "description" : "The content of the email to be sent for the Log Invocation policy action." }, - "sendAuditlogApplicationManagementEvent" : { + "monitorSPSubject" : { "type" : "string", - "description" : "Flag to enable publish of the application management audit logs. Occurs each time an application create/update/delete operation performed." + "description" : "The subject line of the email to be sent for the Monitor SP policy action." }, - "sendAuditlogGroupManagementEvent" : { + "monitorSPContent" : { "type" : "string", - "description" : "Flag to enable publish of the group management audit logs. Occurs each time a group create/update/delete operation performed." + "description" : "The content of the email to be sent for the Monitor SP policy action." }, - "sendAuditlogAccessProfileManagementEvent" : { + "monitorSLASubject" : { "type" : "string", - "description" : "Flag to enable publish of the team management audit logs. Occurs each time an team create/update/delete operation performed." + "description" : "The subject line of the email to be sent for the Monitor SLA policy action." }, - "sendAuditlogPromotionManagementEvent" : { + "monitorSLAContent" : { "type" : "string", - "description" : "Flag to enable publish of the promotion management audit logs. Occurs each time a promotion create/update/delete operation performed." + "description" : "The content of the email to be sent for the Monitor SLA policy action." }, - "sendAuditlogAPIManagementEvent" : { + "throttlingSubject" : { "type" : "string", - "description" : "Flag to enable publish of the api management audit logs. Occurs each time an api create/update/delete operation performed." + "description" : "The subject line of the email to be sent for the Throttling Traffic Optimization policy action." }, - "sendAuditlogAliasManagementEvent" : { + "throttlingContent" : { "type" : "string", - "description" : "Flag to enable publish of the alias management audit logs. Occurs each time an alias create/update/delete operation performed." + "description" : "The content of the email to be sent for the Throttling Traffic Optimization policy action." } }, - "description" : "This defines the configurations required for the destination." + "description" : "This defines the configurations required for Email destination." }, - "AuditLogDestination" : { + "CacheableType" : { "type" : "object", "properties" : { - "name" : { - "type" : "string", - "description" : "The default name of the audit log, API Gateway Transaction Logger." - }, - "enable" : { - "type" : "string", - "description" : "Enable activation to enable the logger to start writing the log entries to the database or the file." - }, - "mode" : { - "type" : "string", - "description" : "Specifies whether the logger is to write entries to the destination synchronously or asynchronously." + "type" : { + "type" : "string" + } + } + }, + "GatewayCacheConfig" : { + "type" : "object", + "properties" : { + "cacheableType" : { + "description" : "Gateway entity object for which the caching needs to configured", + "$ref" : "#/definitions/CacheableType" }, - "guaranteed" : { - "type" : "string", - "description" : "Provides data about guaranteed delivery transactions." + "cacheSizeInPercent" : { + "type" : "integer", + "format" : "int32", + "description" : "Specifies the caching size in percentage" }, - "destination" : { - "type" : "string", - "description" : "Specifies whether the logger is to write entries to a file or database." + "collectStatistics" : { + "type" : "boolean", + "description" : "Specifies whether to collect statistics for the caching" }, - "maximumQueueSize" : { - "type" : "string", - "description" : "Specifies the maximum number of entries the queue can hold." + "autoScale" : { + "type" : "boolean", + "description" : "Specifies whether to auto scale caching dynamically" }, - "maximumRetries" : { - "type" : "string", - "description" : "Specifies the maximum times the logger must retry writing the entry to the destination if the first attempt fails because of a transient error." + "recordCount" : { + "type" : "integer", + "format" : "int32" }, - "waitBetweenRetries" : { - "type" : "string", - "description" : "Specifies the waiting time before the logger can reconnect and rewrite the eateries to the destination in case of failure." + "cacheName" : { + "type" : "string" } - }, - "description" : "This defines the configurations required for Audit Log destination." + } }, - "CSCommunicationDestination" : { + "CustomContentType" : { + "type" : "object" + }, + "LogConfiguration" : { "type" : "object", "properties" : { - "protocol" : { + "apigatewayLogger" : { "type" : "string", - "description" : "Specifies the communication protocol used to establish communication between API Gateway and CentraSite." + "description" : "The log setting of APIGateway server.Possible values are off,trace,debug,info,warn,error and fatal" }, - "hostname" : { + "elasticSearchLogger" : { "type" : "string", - "description" : "Specifies the host name or IP address of the machine on which CentraSite Application Server Tier (CAST) is running." + "description" : "The log setting of Internal Data Store.Possible values are off,info,debug,warn,error and fatal" }, - "uddiPort" : { + "kibanaLogger" : { "type" : "string", - "description" : "Specifies the port on which CAST is listening. The default port number for CAST is 53307." + "description" : "The log setting of APIGateway dashboard.Possible values are silent,quiet and verbose" }, - "username" : { + "enableSessionLogger" : { "type" : "string", - "description" : "Specifies the CentraSite user ID for authenticating CentraSite when API Gateway communicates with CentraSite. This implies the user ID of a user who has the CentraSite Administrator role or the API Gateway Administrator role in CentraSite." + "description" : "The log setting enable APIGateway session logs.Possible values are off,trace,debug,info,warn,error and fatal" }, - "password" : { + "enableSecurityLogger" : { "type" : "string", - "description" : "Specifies the password for authenticating CentraSite when API Gateway communicates with CentraSite." + "description" : "The log setting to enable APIGateway security logs.Possible values are true and false." }, - "gatewayAssetId" : { + "sagOsgiLogger" : { "type" : "string", - "description" : "Specifies the registered API Gateway ID." + "description" : "The log setting of OSGI platform.Possible values are true and false." }, - "targetname" : { + "enableLogAggregation" : { "type" : "string", - "description" : "Specifies the name of the API Gateway asset as defined in CentraSite." - } - }, - "description" : "This defines the configurations required for Centrasite Communication section of CentraSite destination." - }, - "CSSNMPDestination" : { - "type" : "object", - "properties" : { - "sendTRAPsToCentrasite" : { + "description" : "Enabling log aggregation will collect logs from the different components and store in Internal Data Store or external Elasticsearch.The value can be true or false." + }, + "logDestination" : { "type" : "string", - "description" : "Specifies whether the events has to be sent from API Gateway to CentraSite." + "description" : "Specifies where to store the accumulated logs from different stores. Value can be EXTERNAL_ES or INTERNAL" }, - "transport" : { + "protocol" : { "type" : "string", - "description" : "Specifies the wire transport protocol that is used by the SNMP Listener." + "description" : "Protocol to communicate the external elastic search." }, - "hostname" : { + "hostName" : { "type" : "string", - "description" : "Specifies the CentraSite host name or IP address to which the SNMP listener binds." + "description" : "Hostname of external elastic search used to send the logs." }, "port" : { "type" : "string", - "description" : "Specifies the port to which the SNMP listener binds. The default port number for CentraSite's SNMP server is 8181." + "description" : "Port to communicate the external elastic search." }, - "username" : { + "indexName" : { "type" : "string", - "description" : "Specifies the SecurityName that is used by the SNMP Listener." + "description" : "Indexname of external elastic search to store the accumulated logs." }, - "authorizationProtocol" : { + "userName" : { "type" : "string", - "description" : "Specifies the authorization protocol that is used by the SNMP Listener for decoding the incoming trap." + "description" : "Username to communicate the external elastic search." }, - "authorizationPassword" : { + "password" : { "type" : "string", - "description" : "Specifies the password to be used for authorization protocol." + "description" : "Password that is used to communicate the external elastic search." + } + }, + "description" : "This contains log settings of various components used by APIGateway." + }, + "InputLdapConfiguration" : { + "type" : "object", + "properties" : { + "ldapConfig" : { + "description" : "Configure local authentication provider or one or more LDAP authentication providers and their priority.", + "$ref" : "#/definitions/LDAPConfiguration" + } + } + }, + "LDAPConfiguration" : { + "type" : "object", + "properties" : { + "cacheSize" : { + "type" : "string", + "description" : "The maximum number of LDAP users Integration Server can keep in memory in the user cache. The default is 10." }, - "privacyProtocol" : { + "cacheTTL" : { "type" : "string", - "description" : "Specifies the privacy protocol that is used by the SNMP Listener for decoding the incoming trap." + "description" : "The number of minutes an LDAP user's credentials (userid and password) can remain in the credential cache before being purged. The default is 60 minutes." }, - "privacyPassword" : { + "provider" : { "type" : "string", - "description" : "Specifies the password to be used for privacy protocol." + "description" : "Choose the authentication provider. Possible values are 'local' and 'LDAP' " + }, + "ldapDirectoryList" : { + "type" : "array", + "description" : "List of LDAP directories. This field is applicable when LDAP provider is chosen.", + "items" : { + "$ref" : "#/definitions/LDAPDirectory" + } + }, + "cdsRunning" : { + "type" : "boolean" } - }, - "description" : "This defines the configurations required for CentraSite SNMP section of CentraSite destination." + } }, - "ElasticsearchDestination" : { + "LDAPDirectory" : { "type" : "object", "properties" : { - "protocol" : { + "index" : { + "type" : "integer", + "format" : "int32", + "description" : "Index of the current LDAP directory. Priority of the LDAP directory among other directories is calculated using the index. The starting value of index for the LDAP directory with first priority is 0 and is incremented by 1 for subsequent LDAP directories." + }, + "url" : { "type" : "string", - "description" : "Specifies the communication protocol used to establish communication between API Gateway and CentraSite." + "description" : "The complete URL of the LDAP server. The URL has the format protocol://hostname:portnumber. Possible values of 'protocol' is 'ldap' for standard connections or 'ldaps' for secure connections. For example, ldaps://ldaphost1:700" }, - "hostname" : { + "principal" : { "type" : "string", - "description" : "Specifies the host name or IP address of the machine on which Elasticsearch Server is running." + "description" : "The user ID the Integration Server should supply to connect to the LDAP server, for example, o=webm.com or dc=webm,dc=com. This user should not be the Administrator account, but a user that has permission to query groups and group membership. If your LDAP server allows anonymous access, leave this field blank." }, - "port" : { + "password" : { "type" : "string", - "description" : "Specifies the port on which the Elasticsearch server runs." + "description" : "The password the API Gateway should supply to connect to the LDAP server, that is, the Principal's password." }, - "indexName" : { + "timeout" : { "type" : "string", - "description" : "Specifies the index name for the Elasticsearch server on which the events will be available." + "description" : "The number of seconds the API Gateway will wait while trying to connect to the LDAP server. After this time has passed, the API Gateway will try the next configured LDAP server on the list. The default is 5 seconds." }, - "username" : { + "poolMin" : { "type" : "string", - "description" : "The username for the Elasticsearch server instance." + "description" : "The minimum number of connections allowed in the pool that API Gateway maintains for connecting to the LDAP server. When API Gateway starts, the connection pool initially contains this minimum number of connections. API Gateway adds connections to the pool as needed until it reaches the maximum allowed, which is specified in the Maximum Connection Pool field. The default is 0." }, - "password" : { + "poolMax" : { "type" : "string", - "description" : "The password for the Elasticsearch server instance." + "description" : "The maximum number of connections allowed in the pool that API Gateway maintains for connecting to the LDAP server. When API Gateway starts, the connection pool initially contains a minimum number of connections, which are specified in the Minimum Connection Pool field. API Gateway adds connections to the pool as needed until it reaches the maximum allowed. The default is 10." }, - "sendErrorEvent" : { + "Distinguished Name (DN) method" : { + "type" : "boolean", + "description" : "Specifies the DN method used for building the DN. Possible values are 'true' and 'false'.Select 'true' if the DN should be synthesized from the configured prefix and suffix values (Synthesize DN Method). These values are prefixed and suffixed to the username to build the DN. Select 'false' if the DN should be queried from a specified root directory (Query DN Method). The Synthesize DN method can be faster than the Query DN method because it does not perform a query against the LDAP directory. However, if your LDAP system does not contain all users in a single flat structure, use the Query DN method instead." + }, + "dnPrefix" : { "type" : "string", - "description" : "Flag to enable publish of the error events. Occurs each time an API invocation results in an error." + "description" : "A string that specifies the beginning of a DN you want to pass to the LDAP server. This field is applicable when 'useaf' is configured as 'true'. i.e, Synthesize DN Method is chosen.For example, if the prefix is 'cn=' and the suffix is ',ou=Users' and a user logs in specifying 'bob', API Gateway builds the DN 'cn=bob,ou=Users' and sends it to the LDAP server for authentication." }, - "sendLifecycleEvent" : { + "dnSuffix" : { "type" : "string", - "description" : "Flag to enable publish of the life cycle events. Occurs each time API Gateway is started or shut down." + "description" : "A string that specifies the end of a DN you want to pass to the LDAP server. This field is applicable when 'useaf' is configured as 'true'. i.e, Synthesize DN Method is chosen.For example, if the prefix is 'cn=' and the suffix is ',ou=Users' and a user logs in specifying 'bob', API Gateway builds the DN 'cn=bob,ou=Users' and sends it to the LDAP server for authentication." }, - "sendPolicyViolationEvent" : { + "uidProp" : { "type" : "string", - "description" : "Flag to enable publish of the policy violations events. Occurs each time an API invocation violates the policy enforcement that was set for the API." + "description" : "A property that identifies an LDAP userid, such as 'cn' or 'uid'. " }, - "sendPerformanceMetrics" : { + "userRootDn" : { "type" : "string", - "description" : "Flag to enable publish of the performance metrics. The performance data provides information on average response time, total request count, fault count, and so on." + "description" : "Enter the full distinguished name. For example, configure this value as 'ou=users,dc=webMethods,dc=com', API Gateway will issue a query that starts searching in the root directory ou=users for a common name that matches the name the user logged in with." }, - "metricsPublishInterval" : { + "group" : { "type" : "string", - "description" : "The interval at which the metrics will be published to the destination. Enter a value from 1 through 60. The default is 60 minutes." + "description" : "An API Gateway group with which the user is associated. The user is allowed to access services that members of this API Gateway group can access. This access is controlled by the access profiles with which the group is associated. If you also specify a value in the 'memberAttribute' field, the user has the same access as members of the API Gateway group and members of LDAP groups that have been mapped to an API Gateway access profile." }, - "sendAuditlogPackageManagementEvent" : { + "memberAttribute" : { "type" : "string", - "description" : "Flag to enable publish of the package management audit logs. Occurs each time a package create/update/delete operation performed." + "description" : "The name of the attribute in a group's directory entry that identifies each member of the group. This value is usually 'member' or 'uniqueMember', but can vary depending on the schema of the LDAP directory. API Gateway uses this information during access profile checking to see if the user attempting to log in belongs to an LDAP group that has been mapped to an access profile. If no value is specified here, API Gateway does not check for membership in an LDAP group. As a result, the user's access is controlled by the API Gateway group specified in the 'group' field." }, - "sendAuditlogPolicyManagementEvent" : { + "groupIdProperty" : { "type" : "string", - "description" : "Flag to enable publish of the policy management audit logs. Occurs each time a policy create/update/delete operation performed." + "description" : "A property that identifies an LDAP group, such as CN. This field is required." }, - "sendAuditlogRuntimeDataManagementEvent" : { + "groupRootDN" : { "type" : "string", - "description" : "Flag to enable publish of the analytics management audit logs. Occurs each time an analytics data delete operation performed." + "description" : "The full distinguished name. For example, if you specify 'ou=groups,webMethods,dc=com', API Gateway will issue a query that will display all the LDAP groups. This field is required." + } + } + }, + "PasswordRestrictions" : { + "type" : "object", + "properties" : { + "enablePasswordChange" : { + "type" : "string", + "description" : "Specifies whether users are allowed to change their passwords. These users must have developer privileges. Possible values are 'true' and 'false'. Default value is 'true'" }, - "sendAuditlogPlanManagementEvent" : { + "mode" : { "type" : "string", - "description" : "Flag to enable publish of the plan management audit logs. Occurs each time a plan create/update/delete operation performed." + "description" : "Specifies whether Administrator users are allowed to choose passwords that are not impacted by the password restriction settings. Possible values are 'strict' and 'lax'. Default value is 'lax'. For Administrator users, when this property is set to 'strict', API Gateway enforces the password restrictions. When set to 'lax', the password restrictions are not enforced. For non-administrators the restrictions are always enforced." }, - "sendAuditlogApprovalManagementEvent" : { + "minLength" : { "type" : "string", - "description" : "Flag to enable publish of the approval management audit logs. Occurs each time an approval request create/update/delete operation performed." + "description" : "Minimum number of characters (alphabetic characters, digits, and special characters combined) the password must contain.Default value is 8" }, - "sendAuditlogUserManagementEvent" : { + "maxLength" : { "type" : "string", - "description" : "Flag to enable publish of the user management audit logs. Occurs each time an user create/update/delete operation performed." + "description" : "Maximum number of characters (alphabetic characters, digits, and special characters combined) the password can contain. Default value is 64. Maximum value allowed for this field is 128" }, - "sendAuditlogApplicationManagementEvent" : { + "minUpperChars" : { "type" : "string", - "description" : "Flag to enable publish of the application management audit logs. Occurs each time an application create/update/delete operation performed." + "description" : "Minimum number of uppercase alphabetic characters the password must contain. Default value is 0" }, - "sendAuditlogGroupManagementEvent" : { + "minLowerChars" : { "type" : "string", - "description" : "Flag to enable publish of the group management audit logs. Occurs each time a group create/update/delete operation performed." + "description" : "Minimum number of lowercase alphabetic characters the password must contain. Default value is 0" }, - "sendAuditlogAccessProfileManagementEvent" : { + "minDigits" : { "type" : "string", - "description" : "Flag to enable publish of the team management audit logs. Occurs each time an team create/update/delete operation performed." + "description" : "Minimum number of digits the password must contain. Default value is 0" }, - "sendAuditlogPromotionManagementEvent" : { + "minSpecialChars" : { "type" : "string", - "description" : "Flag to enable publish of the promotion management audit logs. Occurs each time a promotion create/update/delete operation performed." + "description" : "Minimum number of special characters, such as asterisk (*), period (.), and question mark (?) the password must contain. Default value is 0" }, - "sendAuditlogAPIManagementEvent" : { + "maxIdenticalCharsInARow" : { "type" : "string", - "description" : "Flag to enable publish of the api management audit logs. Occurs each time an api create/update/delete operation performed." + "description" : "Maximum number of identical characters\nin a row a password can contain. Default value is 3" }, - "sendAuditlogAliasManagementEvent" : { + "historyLength" : { "type" : "string", - "description" : "Flag to enable publish of the alias management audit logs. Occurs each time an alias create/update/delete operation performed." + "description" : "Maximum number of previously set passwords that API Gateway saves for a user (excluding the current password). You cannot choose a password that matches any of the stored passwords. Maximum value allowed for this field is 12. Default value is 0." } - }, - "description" : "This defines the configurations required for Elasticsearch destinations." + } }, - "SNMPDestination" : { + "PasswordExpirySettings" : { "type" : "object", "properties" : { - "snmpTargetType" : { + "isEnabled" : { "type" : "string", - "description" : "Specifies target type of the SNMP server." + "description" : "Specifies whether to enable the password expiry settings. Possible values are 'true' (enabled) and 'false' (disabled). Default value is 'false'" }, - "hostname" : { + "expirationInterval" : { "type" : "string", - "description" : "Flag to enable save of the life cycle events." + "description" : "Number of days after which a password will expire, if not changed. The value should be a non-zero integer. Default value is 90." }, - "port" : { + "expiryEmailBefore" : { "type" : "string", - "description" : "The SNMP trap receiver port that is listening for SNMP requests and packets." + "description" : "Specifies the number of days prior to password expiry that API Gateway should start sending the reminder emails for password reset. The emails are sent daily until the user either updates the password or changes the expiration interval. Set the value to 0 to prevent API Gateway from sending the reminder emails for soon to expire passwords. Default value is 3." }, - "transport" : { + "emailIds" : { "type" : "string", - "description" : "The protocol used by SNMP to send traps. The available options are: TCP and UDP. By default, TCP is selected." + "description" : "List of email addresses to which API Gateway sends an email notification informing that the user password is about to expire or has already expired. The email addresses are separated by a new line character (\\n). For example, 'u1@abc.com\\nu2@abc.com'" }, - "username" : { + "applicableUsers" : { "type" : "string", - "description" : "If User is selected as the SNMP target type, then the Username field specifies the SNMPv3 user name to use when connecting to the receiver." + "description" : "List of users to whom the expiration interval setting is applicable. The users are separated by semicolon(;). For example, if you want to add user1 and user2 to the list, specify as 'user1;user2'" + } + } + }, + "AccountLockSettings" : { + "type" : "object", + "properties" : { + "isEnabled" : { + "type" : "string", + "description" : "Specifies whether to enable the account locking settings. Possible values are 'true' and 'false'" }, - "useAuthorization" : { + "maximumLoginAttempts" : { "type" : "string", - "description" : "Specifies whether an authorization key is required. " + "description" : "Number of attempts in the specified time interval (specified using timeInterval and timeIntervalUnit fields) to provide the correct password before locking the account" }, - "usePrivacy" : { + "timeInterval" : { "type" : "string", - "description" : "Specifies whether a privacy (encryption) key is required." + "description" : "The time interval within which the number of wrong login attempts exceeding the value specified in 'maximumLoginAttempts' will result in locking the account." }, - "sendErrorEvent" : { + "timeIntervalUnit" : { "type" : "string", - "description" : "Flag to enable publish of the error events. Occurs each time an API invocation results in an error." + "description" : "The unit for the time interval specified in the 'timeInterval' field. Possible values are 'Minutes', 'Hours', 'Days'." }, - "sendLifecycleEvent" : { + "blockDuration" : { "type" : "string", - "description" : "Flag to enable publish of the life cycle events. Occurs each time API Gateway is started or shut down." + "description" : "Duration for which the account remains locked." }, - "sendPolicyViolationEvent" : { + "blockDurationUnit" : { "type" : "string", - "description" : "Flag to enable publish of the policy violations events. Occurs each time an API invocation violates the policy enforcement that was set for the API." + "description" : "The unit for the duration specified under 'blockDuration' field. Possible values are 'Minutes', 'Hours', 'Days'." + }, + "appliesToUsers" : { + "type" : "string", + "description" : "List of users to whom the account locking settings apply. Possible values are 'allUsersExceptPredefinedUsers' and 'allUsers'. 'allUsersExceptPredefinedUsers' indicates that account locking rules apply to all user accounts except the predefined user accounts. 'allUsers' indicates the account locking rules apply to all user accounts." } - }, - "description" : "This defines the configurations required for the SNMP destination." + } }, - "EmailDestination" : { + "APIPortal" : { + "allOf" : [ { + "$ref" : "#/definitions/ExternalPortal" + }, { + "type" : "object", + "properties" : { + "type" : { + "type" : "string", + "description" : "API Portal type." + } + }, + "description" : "This defines the API portal configuration." + } ] + }, + "ExternalPortal" : { "type" : "object", + "discriminator" : "type", "properties" : { - "smtpServer" : { + "endpointTenant" : { "type" : "string", - "description" : "The server name or the IP address of the SMTP server that API Gateway uses to send the messages." + "description" : "API Portal tenant name." }, - "port" : { + "endpointURL" : { "type" : "string", - "description" : "The port that API Gateway uses to connect to the specified SMTP server." + "description" : "API Portal endpoint URL." }, - "username" : { + "endpointUsername" : { "type" : "string", - "description" : "The username that API Gateway uses to connect to the specified SMTP server." + "description" : "API Portal username used by API Gateway to communicate." }, - "password" : { + "endpointPassword" : { "type" : "string", - "description" : "The password that API Gateway uses to connect to the specified SMTP server." + "description" : "Password for API Portal user used by API Gateway to access portal." }, - "transportLayerSecurity" : { + "type" : { + "type" : "string" + } + }, + "description" : "This defines the API Portal configuration." + }, + "PortalGateway" : { + "type" : "object", + "properties" : { + "id" : { "type" : "string", - "description" : "The SSL encryption type that API Gateway uses when communicating with an email server. " + "description" : "API Portal configuration object ID in API Gateway." }, - "trustStoreAlias" : { + "gatewayName" : { "type" : "string", - "description" : "The truststore that API Gateway uses while sending the request to a native API." + "description" : "Name of the API Portal." }, - "defaultEmailCharset" : { + "gatewayDescription" : { "type" : "string", - "description" : "The character set that API Gateway uses to be recognized by the system. " + "description" : "Description of API Portal." }, - "fromEmail" : { + "gatewayUsername" : { "type" : "string", - "description" : "The email address from which you want to send the alerts." + "description" : "API Gateway administrative privileged username used by API Portal to access API Gateway." }, - "testRecipient" : { + "gatewayPassword" : { "type" : "string", - "description" : "The email address to which you want to send the test email." + "description" : "API Gateway password for provided username used by API Portal to access API Gateway." }, - "logInvocationSubject" : { + "gatewayURL" : { "type" : "string", - "description" : "The subject line of the email to be sent for the Log Invocation policy action." + "description" : "Integration Server URL of the API Gateway." }, - "logInvocationContent" : { + "refId" : { "type" : "string", - "description" : "The content of the email to be sent for the Log Invocation policy action." + "description" : "Specifies API Gateway reference ID in API Portal. This is used to identify the API Gateway in API Portal." }, - "monitorSPSubject" : { + "externalPortal" : { + "description" : "API Portal configuration information.", + "$ref" : "#/definitions/ExternalPortal" + }, + "version" : { "type" : "string", - "description" : "The subject line of the email to be sent for the Monitor SP policy action." + "description" : "Specifies API Portal configuration version." }, - "monitorSPContent" : { + "published" : { + "type" : "boolean" + } + }, + "description" : "This defines the Portal Gateway configuration in the API Gateway." + }, + "GatewayEndpoints" : { + "type" : "object", + "properties" : { + "gatewayEndpoint" : { "type" : "string", - "description" : "The content of the email to be sent for the Monitor SP policy action." + "description" : "API's access endpoint exposed in API Gateway." }, - "monitorSLASubject" : { + "status" : { "type" : "string", - "description" : "The subject line of the email to be sent for the Monitor SLA policy action." + "description" : "Status of the API endpoint.", + "enum" : [ "NEW", "PUBLISHED", "OBSELETE" ] + } + }, + "description" : "This defines the API Gateway's API endpoint." + }, + "PortalCommunities" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "ID of API Portal community." }, - "monitorSLAContent" : { + "name" : { "type" : "string", - "description" : "The content of the email to be sent for the Monitor SLA policy action." + "description" : "API Portal community name." }, - "throttlingSubject" : { + "description" : { "type" : "string", - "description" : "The subject line of the email to be sent for the Throttling Traffic Optimization policy action." + "description" : "Description of API Portal community." }, - "throttlingContent" : { + "status" : { "type" : "string", - "description" : "The content of the email to be sent for the Throttling Traffic Optimization policy action." + "description" : "Staus of the API Portal community.", + "enum" : [ "NEW", "PUBLISHED", "OBSELETE" ] } }, - "description" : "This defines the configurations required for Email destination." + "description" : "This defines the API Portal communities configuration in the API Gateway." }, - "CacheableType" : { + "PortalGatewayCommunitiesData" : { "type" : "object", "properties" : { - "type" : { - "type" : "string" + "provider" : { + "type" : "string", + "description" : "The API Portal destination configuration name" + }, + "communities" : { + "description" : "List of API Portal communities.", + "$ref" : "#/definitions/PortalGatewayData" } - } + }, + "description" : "This defines the API Portal provider and communities information." }, - "GatewayCacheConfig" : { + "PortalGatewayData" : { "type" : "object", "properties" : { - "cacheableType" : { - "$ref" : "#/definitions/CacheableType" - }, - "cacheSizeInPercent" : { - "type" : "integer", - "format" : "int32", - "description" : "Specifies the caching size in percentage" - }, - "collectStatistics" : { - "type" : "boolean", - "description" : "Specifies whether to collect statistics for the caching" - }, - "autoScale" : { - "type" : "boolean", - "description" : "Specifies whether to auto scale caching dynamically" - }, - "recordCount" : { - "type" : "integer", - "format" : "int32" + "portalCommunities" : { + "type" : "array", + "description" : "List of API Portal communities to which APIs should be published.", + "uniqueItems" : true, + "items" : { + "$ref" : "#/definitions/PortalCommunities" + } }, - "cacheName" : { - "type" : "string" + "gatewayEndpointsList" : { + "type" : "array", + "uniqueItems" : true, + "items" : { + "$ref" : "#/definitions/GatewayEndpoints" + } } - } - }, - "CustomContentType" : { - "type" : "object" + }, + "description" : "This defines the API Portal Gateway data in the API Gateway." }, - "LogConfiguration" : { + "ApprovalConfiguration" : { "type" : "object", "properties" : { - "apigatewayLogger" : { - "type" : "string", - "description" : "The log setting of APIGateway server.Possible values are off,trace,debug,info,warn,error and fatal" - }, - "elasticSearchLogger" : { - "type" : "string", - "description" : "The log setting of Internal Data Store.Possible values are off,info,debug,warn,error and fatal" - }, - "kibanaLogger" : { - "type" : "string", - "description" : "The log setting of APIGateway dashboard.Possible values are silent,quiet and verbose" - }, - "enableSessionLogger" : { + "id" : { "type" : "string", - "description" : "The log setting enable APIGateway session logs.Possible values are off,trace,debug,info,warn,error and fatal" + "description" : "Unique identifier of a Approval Configuration. Any of 'createApplication', 'updateApplication', 'registerApplication' and 'subscribePackage'" }, - "enableSecurityLogger" : { + "eventType" : { "type" : "string", - "description" : "The log setting to enable APIGateway security logs.Possible values are true and false." + "description" : "Event Type: Any of 'createApplication', 'updateApplication', 'registerApplication' and 'subscribePackage' " }, - "sagOsgiLogger" : { - "type" : "string", - "description" : "The log setting of OSGI platform.Possible values are true and false." + "isEnabled" : { + "type" : "boolean", + "description" : "true/false. true value enforces approvals for the mentioned eventtype" }, - "enableLogAggregation" : { + "approversGroupId" : { "type" : "string", - "description" : "Enabling log aggregation will collect logs from the different components and store in Internal Data Store or external Elasticsearch.The value can be true or false." + "description" : "Approvers Accessprofile Identifier. Whoever belongs to the selected access profile will be considered as Approvers" }, - "logDestination" : { + "approvalMode" : { "type" : "string", - "description" : "Specifies where to store the accumulated logs from different stores. Value can be EXTERNAL_ES or INTERNAL" + "description" : "Only possible value is anyone. This implies that, any one user associated with the approvers access profile can approve or reject the requests. The requester need not wait for the approval of each approver in the approvers group." }, - "protocol" : { - "type" : "string", - "description" : "Protocol to communicate the external elastic search." + "approvedEmailConfiguration" : { + "description" : "Configure Approved email template content. Configured Content would be sent to Requester once the approval request has been approved.", + "$ref" : "#/definitions/EmailConfiguration" }, - "hostName" : { - "type" : "string", - "description" : "Hostname of external elastic search used to send the logs." + "rejectedEmailConfiguration" : { + "description" : "Configure Rejected email template content. Configured Content would be sent to Requester once the approval request has been approved.", + "$ref" : "#/definitions/EmailConfiguration" }, - "port" : { + "initiateApprovalRequestEmailConfiguration" : { + "description" : "Configure Initiate request email template content. Configured Content would be sent to Approvers when the approval request has been generated.", + "$ref" : "#/definitions/EmailConfiguration" + } + }, + "description" : "This model contains details about an ApprovalConfiguration in API Gateway" + }, + "EmailConfiguration" : { + "type" : "object", + "properties" : { + "emailSubject" : { "type" : "string", - "description" : "Port to communicate the external elastic search." + "description" : "Email Subject" }, - "indexName" : { + "emailContent" : { "type" : "string", - "description" : "Indexname of external elastic search to store the accumulated logs." + "description" : "Email Content" }, - "userName" : { - "type" : "string", - "description" : "Username to communicate the external elastic search." + "enabled" : { + "type" : "boolean", + "description" : "true/false. Email would be sent to user only when enabled value is true." }, - "password" : { + "requestType" : { "type" : "string", - "description" : "Password that is used to communicate the external elastic search." + "description" : "Request Type. Value would be any of initiated, approved or rejected." } }, - "description" : "This contains log settings of various components used by APIGateway." - }, - "InputLdapConfiguration" : { - "type" : "object", - "properties" : { - "ldapConfig" : { - "$ref" : "#/definitions/LDAPConfiguration" - } - } + "description" : "This model contains details about an EmailConfiguration configured in Approvals of API Gateway" }, - "LDAPConfiguration" : { + "JMSConnectionAlias" : { "type" : "object", "properties" : { - "cacheSize" : { + "jmsConnectionAliasId" : { "type" : "string", - "description" : "The maximum number of LDAP users Integration Server can keep in memory in the user cache. The default is 10." + "description" : "A unique ID for the jmsConnectionAlias", + "readOnly" : true }, - "cacheTTL" : { + "aliasName" : { "type" : "string", - "description" : "The number of minutes an LDAP user's credentials (userid and password) can remain in the credential cache before being purged. The default is 60 minutes." + "description" : "The name of the JMSConnectionAlias configuration" }, - "provider" : { + "enabled" : { "type" : "string", - "description" : "Choose the authentication provider. Possible values are 'local' and 'LDAP' " + "description" : "This property specifies the size of um_consumerIncludedStrings" }, - "ldapDirectoryList" : { - "type" : "array", - "description" : "List of LDAP directories. This field is applicable when LDAP provider is chosen.", - "items" : { - "$ref" : "#/definitions/LDAPDirectory" - } + "description" : { + "type" : "string", + "description" : "The description of the JMSConnectionAlias configuration" }, - "cdsRunning" : { - "type" : "boolean" - } - } - }, - "LDAPDirectory" : { - "type" : "object", - "properties" : { - "index" : { - "type" : "integer", - "format" : "int32", - "description" : "Index of the current LDAP directory. Priority of the LDAP directory among other directories is calculated using the index. The starting value of index for the LDAP directory with first priority is 0 and is incremented by 1 for subsequent LDAP directories." + "transactionType" : { + "type" : "string", + "description" : "This property specifies the type of the transaction.Value 0 refers to NO-trans, 1 refers to Local-tran, 2 refers to XA-trans" }, - "url" : { + "clientID" : { "type" : "string", - "description" : "The complete URL of the LDAP server. The URL has the format protocol://hostname:portnumber. Possible values of 'protocol' is 'ldap' for standard connections or 'ldaps' for secure connections. For example, ldaps://ldaphost1:700" + "description" : "This property specifies the client id of the JMS connection" }, - "principal" : { + "user" : { "type" : "string", - "description" : "The user ID the Integration Server should supply to connect to the LDAP server, for example, o=webm.com or dc=webm,dc=com. This user should not be the Administrator account, but a user that has permission to query groups and group membership. If your LDAP server allows anonymous access, leave this field blank." + "description" : "This property specifies the user name to create the JMS connection" }, "password" : { "type" : "string", - "description" : "The password the API Gateway should supply to connect to the LDAP server, that is, the Principal's password." + "description" : "This property specifies the password to create the JMS connection" }, - "timeout" : { + "associationType" : { "type" : "string", - "description" : "The number of seconds the API Gateway will wait while trying to connect to the LDAP server. After this time has passed, the API Gateway will try the next configured LDAP server on the list. The default is 5 seconds." + "description" : "This property specifies whether the JMS connections has been created using JNDI or Native broker API. Value 0 refers to JNDI" }, - "poolMin" : { + "jndi_jndiAliasName" : { "type" : "string", - "description" : "The minimum number of connections allowed in the pool that API Gateway maintains for connecting to the LDAP server. When API Gateway starts, the connection pool initially contains this minimum number of connections. API Gateway adds connections to the pool as needed until it reaches the maximum allowed, which is specified in the Maximum Connection Pool field. The default is 0." + "description" : "Name of the JNDI that the JMS connection refers to" }, - "poolMax" : { + "jndi_connectionFactoryLookupName" : { "type" : "string", - "description" : "The maximum number of connections allowed in the pool that API Gateway maintains for connecting to the LDAP server. When API Gateway starts, the connection pool initially contains a minimum number of connections, which are specified in the Minimum Connection Pool field. API Gateway adds connections to the pool as needed until it reaches the maximum allowed. The default is 10." + "description" : "This property specifies the connection factory lookup name for the JMS connection" }, - "Distinguished Name (DN) method" : { - "type" : "boolean", - "description" : "Specifies the DN method used for building the DN. Possible values are 'true' and 'false'.Select 'true' if the DN should be synthesized from the configured prefix and suffix values (Synthesize DN Method). These values are prefixed and suffixed to the username to build the DN. Select 'false' if the DN should be queried from a specified root directory (Query DN Method). The Synthesize DN method can be faster than the Query DN method because it does not perform a query against the LDAP directory. However, if your LDAP system does not contain all users in a single flat structure, use the Query DN method instead." + "jndi_automaticallyCreateUMAdminObjects" : { + "type" : "string", + "description" : "This property specifies whether to create UM admin objects automatically" }, - "dnPrefix" : { + "jndi_enableFollowTheMaster" : { "type" : "string", - "description" : "A string that specifies the beginning of a DN you want to pass to the LDAP server. This field is applicable when 'useaf' is configured as 'true'. i.e, Synthesize DN Method is chosen.For example, if the prefix is 'cn=' and the suffix is ',ou=Users' and a user logs in specifying 'bob', API Gateway builds the DN 'cn=bob,ou=Users' and sends it to the LDAP server for authentication." + "description" : "This property is to enable the jndi_enableFollowTheMaster property" }, - "dnSuffix" : { + "jndi_connectionFactoryUpdateType" : { "type" : "string", - "description" : "A string that specifies the end of a DN you want to pass to the LDAP server. This field is applicable when 'useaf' is configured as 'true'. i.e, Synthesize DN Method is chosen.For example, if the prefix is 'cn=' and the suffix is ',ou=Users' and a user logs in specifying 'bob', API Gateway builds the DN 'cn=bob,ou=Users' and sends it to the LDAP server for authentication." + "description" : "This property specifies the connection factory update type" }, - "uidProp" : { + "jndi_connectionFactoryPollingInterval" : { "type" : "string", - "description" : "A property that identifies an LDAP userid, such as 'cn' or 'uid'. " + "description" : "This property specifies the connection factory polling interval" }, - "userRootDn" : { + "classLoader" : { "type" : "string", - "description" : "Enter the full distinguished name. For example, configure this value as 'ou=users,dc=webMethods,dc=com', API Gateway will issue a query that starts searching in the root directory ou=users for a common name that matches the name the user logged in with." + "description" : "This property specifies the classloader value" }, - "group" : { + "csqSize" : { "type" : "string", - "description" : "An API Gateway group with which the user is associated. The user is allowed to access services that members of this API Gateway group can access. This access is controlled by the teams with which the group is associated. If you also specify a value in the 'memberAttribute' field, the user has the same access as members of the API Gateway group and members of LDAP groups that have been mapped to an API Gateway team." + "description" : "This property specifies the csq size. Default value -1." }, - "memberAttribute" : { + "csqDrainInOrder" : { "type" : "string", - "description" : "The name of the attribute in a group's directory entry that identifies each member of the group. This value is usually 'member' or 'uniqueMember', but can vary depending on the schema of the LDAP directory. API Gateway uses this information during team checking to see if the user attempting to log in belongs to an LDAP group that has been mapped to a team. If no value is specified here, API Gateway does not check for membership in an LDAP group. As a result, the user's access is controlled by the API Gateway group specified in the 'group' field." + "description" : "This property is to enable/disable csqDrainInOrder" }, - "groupIdProperty" : { + "optTempQueueCreate" : { "type" : "string", - "description" : "A property that identifies an LDAP group, such as CN. This field is required." + "description" : "This property is to opt temporary queue creation" }, - "groupRootDN" : { + "allowReplyToConsumer" : { "type" : "string", - "description" : "The full distinguished name. For example, if you specify 'ou=groups,webMethods,dc=com', API Gateway will issue a query that will display all the LDAP groups. This field is required." - } - } - }, - "PasswordRestrictions" : { - "type" : "object", - "properties" : { - "enablePasswordChange" : { + "description" : "This property is to enable/disable the allowReplyToConsumer" + }, + "manageDestinations" : { "type" : "string", - "description" : "Specifies whether users are allowed to change their passwords. These users must have developer privileges. Possible values are 'true' and 'false'. Default value is 'true'" + "description" : "This property is to enable/disable the manageDestinations" }, - "mode" : { + "allowNewConnectionPerTrigger" : { "type" : "string", - "description" : "Specifies whether Administrator users are allowed to choose passwords that are not impacted by the password restriction settings. Possible values are 'strict' and 'lax'. Default value is 'lax'. For Administrator users, when this property is set to 'strict', API Gateway enforces the password restrictions. When set to 'lax', the password restrictions are not enforced. For non-administrators the restrictions are always enforced." + "description" : "This property is to enable/disable the allowNewConnectionPerTrigger" }, - "minLength" : { + "producerCachingMode" : { "type" : "string", - "description" : "Minimum number of characters (alphabetic characters, digits, and special characters combined) the password must contain.Default value is 8" + "description" : "This property is to enable/disable the producerCachingMode. 0 means disabled, 2 means Enable per destination" }, - "maxLength" : { + "producerSessionPoolMinSize" : { "type" : "string", - "description" : "Maximum number of characters (alphabetic characters, digits, and special characters combined) the password can contain. Default value is 64. Maximum value allowed for this field is 128" + "description" : "This property specifies the minimum size of producer session pool" }, - "minUpperChars" : { + "producerSessionPoolSize" : { "type" : "string", - "description" : "Minimum number of uppercase alphabetic characters the password must contain. Default value is 0" + "description" : "This property specifies the max size of producer session pool" }, - "minLowerChars" : { + "cacheProducersPoolMinSize" : { "type" : "string", - "description" : "Minimum number of lowercase alphabetic characters the password must contain. Default value is 0" + "description" : "This property specifies the minimum size of producer cache pool" }, - "minDigits" : { + "cacheProducersPoolSize" : { "type" : "string", - "description" : "Minimum number of digits the password must contain. Default value is 0" + "description" : "This property specifies the max size of producer cache pool" }, - "minSpecialChars" : { + "poolTimeout" : { "type" : "string", - "description" : "Minimum number of special characters, such as asterisk (*), period (.), and question mark (?) the password must contain. Default value is 0" + "description" : "This property specifies the poolTimeout value" }, - "maxIdenticalCharsInARow" : { + "cacheProducersQueueList" : { "type" : "string", - "description" : "Maximum number of identical characters\nin a row a password can contain. Default value is 3" + "description" : "This property specifies the list of queues to cache" }, - "historyLength" : { + "cacheProducersTopicList" : { "type" : "string", - "description" : "Maximum number of previously set passwords that API Gateway saves for a user (excluding the current password). You cannot choose a password that matches any of the stored passwords. Maximum value allowed for this field is 12. Default value is 0." - } - } - }, - "PasswordExpirySettings" : { - "type" : "object", - "properties" : { - "isEnabled" : { + "description" : "This property specifies the list of topics to cache" + }, + "producerMaxRetryAttempts" : { "type" : "string", - "description" : "Specifies whether to enable the password expiry settings. Possible values are 'true' (enabled) and 'false' (disabled). Default value is 'false'" + "description" : "This property specifies the max retry attempts value for the producer" }, - "expirationInterval" : { + "producerRetryInterval" : { "type" : "string", - "description" : "Number of days after which a password will expire, if not changed. The value should be a non-zero integer. Default value is 90." + "description" : "This property specifies the retry interval" }, - "expiryEmailBefore" : { + "um_loggingOutput" : { "type" : "string", - "description" : "Specifies the number of days prior to password expiry that API Gateway should start sending the reminder emails for password reset. The emails are sent daily until the user either updates the password or changes the expiration interval. Set the value to 0 to prevent API Gateway from sending the reminder emails for soon to expire passwords. Default value is 3." + "description" : "This property specifies the logging output value. 0 refers to server log, 1 refers to audit logging" }, - "emailIds" : { + "um_producerMessageTracking" : { "type" : "string", - "description" : "List of email addresses to which API Gateway sends an email notification informing that the user password is about to expire or has already expired. The email addresses are separated by a new line character (\\n). For example, 'u1@abc.com\\nu2@abc.com'" + "description" : "This property is to enable/disable the um_producerMessageTracking" }, - "applicableUsers" : { + "um_producerIncludedStrings" : { "type" : "string", - "description" : "List of users to whom the expiration interval setting is applicable. The users are separated by semicolon(;). For example, if you want to add user1 and user2 to the list, specify as 'user1;user2'" + "description" : "This property specifies the size of um_producerIncludedStrings" } - } + }, + "description" : "This model contains JMS connection alias details" }, - "AccountLockSettings" : { + "KerberosSettings" : { "type" : "object", "properties" : { - "isEnabled" : { - "type" : "string", - "description" : "Specifies whether to enable the account locking settings. Possible values are 'true' and 'false'" - }, - "maximumLoginAttempts" : { - "type" : "string", - "description" : "Number of attempts in the specified time interval (specified using timeInterval and timeIntervalUnit fields) to provide the correct password before locking the account" - }, - "timeInterval" : { + "kerberosRealm" : { "type" : "string", - "description" : "The time interval within which the number of wrong login attempts exceeding the value specified in 'maximumLoginAttempts' will result in locking the account." + "description" : "The domain name of the Kerberos server. If kerberosRealm is set, it overrides the realm specified in the provided configuration file." }, - "timeIntervalUnit" : { + "kerberosKDC" : { "type" : "string", - "description" : "The unit for the time interval specified in the 'timeInterval' field. Possible values are 'Minutes', 'Hours', 'Days'." + "description" : "The host name of the machine on which the Key Distribution Center (KDC) resides. If kerberosKDC is set, it overrrides the default KDC specified in the provided configuration file." }, - "blockDuration" : { + "kerberosConfigFileName" : { "type" : "string", - "description" : "Duration for which the account remains locked." + "description" : "The name of the Kerberos configuration file to be stored and maintained in API Gateway." }, - "blockDurationUnit" : { + "kerberosConfigContents" : { "type" : "string", - "description" : "The unit for the duration specified under 'blockDuration' field. Possible values are 'Minutes', 'Hours', 'Days'." + "description" : "The contents of the Kerberos configuration file conforming to the specification. If you do not want the default KDC and realm values from this configuration file to be overridden, then do not set values for the kerberosRealm and kerberosKDC properties. It contains the Kerberos configuration information, including the Kerberos realm, locations of KDCs, defaults for the current realm and for Kerberos applications, and the host names, Kerberos realms mappings and encryption algorithms. The full specification details of the Kerberos configuration file can be found in https://linux.die.net/man/5/krb5.conf." }, - "appliesToUsers" : { + "useSubjectCreds" : { "type" : "string", - "description" : "List of users to whom the account locking settings apply. Possible values are 'allUsersExceptPredefinedUsers' and 'allUsers'. 'allUsersExceptPredefinedUsers' indicates that account locking rules apply to all user accounts except the predefined user accounts. 'allUsers' indicates the account locking rules apply to all user accounts." + "description" : "Indicates whether the Kerberos v5 Generic Security Services (GSS) mechanism should be used to obtain credentials from an existing subject." } } }, @@ -7381,172 +6825,48 @@ }, "description" : "This model contains JMS trigger details" }, - "APIPortal" : { - "allOf" : [ { - "$ref" : "#/definitions/ExternalPortal" - }, { - "type" : "object", - "properties" : { - "type" : { - "type" : "string", - "description" : "API Portal type." - } - }, - "description" : "This defines the API portal configuration." - } ] - }, - "ExternalPortal" : { - "type" : "object", - "discriminator" : "type", - "properties" : { - "endpointTenant" : { - "type" : "string", - "description" : "API Portal tenant name." - }, - "endpointURL" : { - "type" : "string", - "description" : "API Portal endpoint URL." - }, - "endpointUsername" : { - "type" : "string", - "description" : "API Portal username used by API Gateway to communicate." - }, - "endpointPassword" : { - "type" : "string", - "description" : "Password for API Portal user used by API Gateway to access portal." - }, - "type" : { - "type" : "string" - } - }, - "description" : "This defines the API Portal configuration." - }, - "PortalGateway" : { + "JNDIProviderAlias" : { "type" : "object", "properties" : { - "id" : { - "type" : "string", - "description" : "API Portal configuration object ID in API Gateway." - }, - "gatewayName" : { - "type" : "string", - "description" : "Name of the API Portal." - }, - "gatewayDescription" : { - "type" : "string", - "description" : "Description of API Portal." - }, - "gatewayUsername" : { - "type" : "string", - "description" : "API Gateway administrative privileged username used by API Portal to access API Gateway." - }, - "gatewayPassword" : { - "type" : "string", - "description" : "API Gateway password for provided username used by API Portal to access API Gateway." - }, - "gatewayURL" : { + "jndiProviderAliasId" : { "type" : "string", - "description" : "Integration Server URL of the API Gateway." + "description" : "A unique ID for the jndiProviderAlias", + "readOnly" : true }, - "refId" : { + "jndiAliasName" : { "type" : "string", - "description" : "Specifies API Gateway reference ID in API Portal. This is used to identify the API Gateway in API Portal." - }, - "externalPortal" : { - "$ref" : "#/definitions/ExternalPortal" + "description" : "The name of the JNDIProviderAlias configuration" }, - "version" : { + "description" : { "type" : "string", - "description" : "Specifies API Portal configuration version." + "description" : "The description of the JNDIProviderAlias configuration" }, - "stageName" : { + "initialContextFactory" : { "type" : "string", - "description" : "Specifies the current stage name of the Gateway" + "description" : "The IntialContextFactoryName for JNDI lookup" }, - "published" : { - "type" : "boolean" - } - }, - "description" : "This defines the Portal Gateway configuration in the API Gateway." - }, - "GatewayEndpoints" : { - "type" : "object", - "properties" : { - "gatewayEndpoint" : { + "providerURL" : { "type" : "string", - "description" : "API's access endpoint exposed in API Gateway." + "description" : "Message broker details" }, - "status" : { - "type" : "string", - "description" : "Status of the API endpoint.", - "enum" : [ "NEW", "PUBLISHED", "OBSELETE" ] - } - }, - "description" : "This defines the API Gateway's API endpoint." - }, - "PortalCommunities" : { - "type" : "object", - "properties" : { - "id" : { + "providerURLFailoverList" : { "type" : "string", - "description" : "ID of API Portal community." + "description" : "Fall backs URL's of providerURL" }, - "name" : { + "securityPrincipal" : { "type" : "string", - "description" : "API Portal community name." + "description" : "SecurityPrincipal in case of SSL connection" }, - "description" : { + "securityCredentials" : { "type" : "string", - "description" : "Description of API Portal community." + "description" : "securityCredentials in case of SSL connection" }, - "status" : { - "type" : "string", - "description" : "Staus of the API Portal community.", - "enum" : [ "NEW", "PUBLISHED", "PUBLISHED_PACKAGE", "OBSELETE" ] - } - }, - "description" : "This defines the API Portal communities configuration in the API Gateway." - }, - "PortalGatewayCommunitiesData" : { - "type" : "object", - "properties" : { - "provider" : { + "otherProps" : { "type" : "string", - "description" : "The API Portal destination configuration name" - }, - "communities" : { - "$ref" : "#/definitions/PortalGatewayData" - } - }, - "description" : "This defines the API Portal provider and communities information." - }, - "PortalGatewayData" : { - "type" : "object", - "properties" : { - "portalCommunities" : { - "type" : "array", - "description" : "List of API Portal communities to which APIs should be published.", - "uniqueItems" : true, - "items" : { - "$ref" : "#/definitions/PortalCommunities" - } - }, - "gatewayEndpointsList" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "$ref" : "#/definitions/GatewayEndpoints" - } - }, - "microgatewayEndpointsList" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "$ref" : "#/definitions/GatewayEndpoints" - } + "description" : "Any other properties you would like to mention, Provide the values as comma separated" } }, - "description" : "This defines the API Portal Gateway data in the API Gateway." + "description" : "This model contains JNDI configuration details" } } } \ No newline at end of file diff --git a/apigatewayservices/APIGatewayAlias.json b/apigatewayservices/APIGatewayAlias.json index b376cc5..0b18014 100644 --- a/apigatewayservices/APIGatewayAlias.json +++ b/apigatewayservices/APIGatewayAlias.json @@ -1,8 +1,8 @@ { "swagger" : "2.0", "info" : { - "description" : "API Gateway Alias Management Service allows you to manage aliases in the API Gateway. Any user with the 'Manage aliases' functional previlige can manage the aliases in API Gateway. By default, the users who are part of API-Gateway-Administrators group will have this privilege. \n\n An alias in API Gateway holds environment-specific property values that can be used in policy routing configurations. The aliases can be referred to in routing endpoints, routing rules, endpoint connection properties, outbound authentication tokens, and outbound HTTP headers instead of providing an actual value. The corresponding alias value based on the stage is obtained and is substituted in place of an alias name during run-time. Thus the same alias can be referred to in multiple policies and the change in a particular alias would affect all the policy properties in which it is being referred. \n\n There are mainly six types of alias \n 1. Simple alias - Holds a simple value \n 2. Endpoint alias - Holds the endpoint value along with additional properties such as connection timeout, read timeout, whether to pass security headers or not, keystore alias, key alias \n 3. HTTP Transport security alias - Contains the transport level security information required while accessing the native API. Used in the outbound policies \n 4. SOAP message security alias - Contains message level security information that is required to access the native API \n 5. webMethods Integration Server alias - Holds the ESB service value. Can be used in the Invoke webMethods IS policy for request and response processing.\n 6. Transformation alias - Holds a list of XSLT style sheets. Can be used in the XSLT Transformation policies for request and response processing.\n\n In addition to the above alias types, the configurations for \n SAML issuer - which holds the configuration to communicate to STS (Security Token Service) to retrieve the SAML token. Used in the Outbound policies, \n Authorization server - which holds configuration of authorization server(internal/external)for introspection/Dynamic client registration. Used in the token validation and OAuth2 client creation, \n Client metadata mapping - which holds the authorization service provider metadata information. Used in the Dynamic client registration for the authorization server alias and \n Service Registry- which holds registry endpoint and service paths information. Used in the client side and server side discovery \n are internally stored as aliases.\n AWS Configuration Alias- which holds AWS instance configuaration details. This can be configured in any custom policies for invoking a lambda service\n running in any AWS cloud instance.\n Integration servers - This holds webMethods Integration Server accounts details. This configuration will be used to create connection to the integration server when publishing APIs to an integration server for implementing the API. You can refer to API Gateway Service Management Swagger documentation for information about how to publish API Gateway APIs to Integration servers.", - "version" : "10.7", + "description" : "API Gateway Alias Management Service allows you to manage aliases in the API Gateway. Any user with the 'Manage aliases' functional previlige can manage the aliases in API Gateway. By default, the users who are part of API-Gateway-Administrators group will have this privilege. \n\n An alias in API Gateway holds environment-specific property values that can be used in policy routing configurations. The aliases can be referred to in routing endpoints, routing rules, endpoint connection properties, outbound authentication tokens, and outbound HTTP headers instead of providing an actual value. The corresponding alias value based on the stage is obtained and is substituted in place of an alias name during run-time. Thus the same alias can be referred to in multiple policies and the change in a particular alias would affect all the policy properties in which it is being referred. \n\n There are mainly six types of alias \n 1. Simple alias - Holds a simple value \n 2. Endpoint alias - Holds the endpoint value along with additional properties such as connection timeout, read timeout, whether to pass security headers or not, keystore alias, key alias \n 3. HTTP Transport security alias - Contains the transport level security information required while accessing the native API. Used in the outbound policies \n 4. SOAP message security alias - Contains message level security information that is required to access the native API \n 5. webMethods Integration Server alias - Holds the ESB service value. Can be used in the Invoke webMethods IS policy for request and response processing.\n 6. Transformation alias - Holds a list of XSLT style sheets. Can be used in the XSLT Transformation policies for request and response processing.\n\n In addition to the above alias types, the configurations for \n SAML issuer - which holds the configuration to communicate to STS (Security Token Service) to retrieve the SAML token. Used in the Outbound policies, \n Authorization server - which holds configuration of authorization server(internal/external)for introspection/Dynamic client registration. Used in the token validation and OAuth2 client creation, \n Client metadata mapping - which holds the authorization service provider metadata information. Used in the Dynamic client registration for the authorization server alias and \n Service Registry- which holds registry endpoint and service paths information. Used in the client side and server side discovery \n are internally stored as aliases.", + "version" : "10.3", "title" : "API Gateway Alias Management Service" }, "host" : "localhost:5555", @@ -11,75 +11,6 @@ "consumes" : [ "plain/text" ], "produces" : [ "application/json" ], "paths" : { - "/alias" : { - "get" : { - "description" : "The method retrieves a list of all aliases in API Gateway.", - "operationId" : "getAllAlias", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the list of aliases is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n\t\"endPointURI\": \"https://myDevstage:9090\",\r\n\t\"connectionTimeout\": \"23\",\r\n\t\"optimizationTechnique\": \"MTOM\",\r\n\t\"readTimeout\": \"36\",\r\n\t\"passSecurityHeaders\": true,\r\n\t\"keystoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\"keyAlias\": \"ssos\",\r\n\t\"name\": \"MystageEndpoint\",\r\n\t\"description\": \"Endpoint alias for myDevstage.\",\r\n\t\"type\": \"endpoint\"\r\n},\r\n{\r\n\t\"id\": \"842c4526-db9a-4ef9-9782-edda1a6ab84c\"\r\n\t\"authType\": \"WSS_USERNAME\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"wssCredentials\": {\r\n\t\t\"userName\": \"Administrator\",\r\n\t\t\"password\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"UsernameMessageAlias\",\r\n\t\"description\": \"WSS username message alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"652c4526-db8a-4ef9-9782-edda1a4gf9bc\"\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachineadfs20.sag.com\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"KerberosHttpTransportAlias\",\r\n\t\"description\": \"vmmachineadfs20 kerberos transport alias\",\r\n\t\"type\": \"httpTransportSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"422c4526-db9a-4ef9-9872-edda1a6aa9bc\"\r\n\t\"authType\": \"HTTP_BASIC\",\r\n\t\"httpAuthCredentials\": {\r\n\t\t\"domain\": \"localhost\",\r\n\t\t\"userName\": \"Administrator\",\r\n\t\t\"password\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"BasicHttpTransportAlias\",\r\n\t\"description\": \"Basic http transport alias\",\r\n\t\"type\": \"httpTransportSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"732c4526-db9a-5t46-9782-edda1a4ac9bc\"\r\n\t\"authType\": \"NTLM\",\r\n\t\"httpAuthCredentials\": {\r\n\t\t\"domain\": \"localhost\",\r\n\t\t\"userName\": \"Administrator\",\r\n\t\t\"password\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"NTLMTransportAlias\",\r\n\t\"description\": \"ntlm http transport alias\",\r\n\t\"type\": \"httpTransportSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"652c4526-db9a-4ef9-3265-edda1a6aa9bc\"\r\n\t\"authType\": \"OAUTH2\",\r\n\t\"oauth2Token\": \"T2F1dGgydG9rZW4=\",\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"OAuthTransportAlias\",\r\n\t\"description\": \"OAuth2 alias for outbound transport security\",\r\n\t\"type\": \"httpTransportSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"732c3265-db9a-4ef9-9782-edda1a6aa9bc\"\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"12c4526-db9a-5ef9-9845-edda1a7ba9bc\"\r\n\t\"authType\": \"SAML\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"\",\r\n\t\t\"keyAlias\": null,\r\n\t\t\"certificateAlias\": null,\r\n\t\t\"truststoreAlias\": \"\"\r\n\t},\r\n\t\"samlIssuerConfig\": \"${SAMLIssuer1}\",\r\n\t\"name\": \"SAMLAlias\",\r\n\t\"description\": \"SAML secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n}\r\n" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Alias" - } - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "Use this method to create an alias. There are different types of alias like Endpoint, Simple etc. Refer to the Alias schema for different type of alias that you can create. If you want to create an alias for a specific type (say Endpoint alias), refer to the corresponding schema (EndpointAlias)", - "operationId" : "createAlias", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Alias" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n}" - } - } ], - "responses" : { - "201" : { - "description" : "This status code indicates that the alias has been successfully created in API Gateway, and the newly created alias is available in the response body.", - "examples" : { - "application/json" : "{\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Alias" - } - }, - "400" : { - "description" : "This status code indicates that an alias with the given name already exists in API Gateway or the request body is not correct.", - "examples" : { - "application/json" : "{}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, "/alias/{aliasId}" : { "get" : { "description" : "The method retrieves the details of an alias in API Gateway.", @@ -96,11 +27,11 @@ "responses" : { "200" : { "description" : "This status code indicates that the details of the alias are successfully retrieved.", - "examples" : { - "application/json" : "{\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n}" - }, "schema" : { "$ref" : "#/definitions/Alias" + }, + "examples" : { + "application/json" : "{\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n}" } }, "404" : { @@ -144,11 +75,11 @@ "responses" : { "200" : { "description" : "This status code indicates that the alias has been successfully updated in API Gateway, and the updated alias is available in the response body.", - "examples" : { - "application/json" : "{\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n}" - }, "schema" : { "$ref" : "#/definitions/Alias" + }, + "examples" : { + "application/json" : "{\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n}" } }, "404" : { @@ -206,6 +137,75 @@ "Basic" : [ ] } ] } + }, + "/alias" : { + "get" : { + "description" : "The method retrieves a list of all aliases in API Gateway.", + "operationId" : "getAllAlias", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This status code indicates that the list of aliases is successfully retrieved.", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Alias" + } + }, + "examples" : { + "application/json" : "{\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n\t\"endPointURI\": \"https://myDevstage:9090\",\r\n\t\"connectionTimeout\": \"23\",\r\n\t\"optimizationTechnique\": \"MTOM\",\r\n\t\"readTimeout\": \"36\",\r\n\t\"passSecurityHeaders\": true,\r\n\t\"keystoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\"keyAlias\": \"ssos\",\r\n\t\"name\": \"MystageEndpoint\",\r\n\t\"description\": \"Endpoint alias for myDevstage.\",\r\n\t\"type\": \"endpoint\"\r\n},\r\n{\r\n\t\"id\": \"842c4526-db9a-4ef9-9782-edda1a6ab84c\"\r\n\t\"authType\": \"WSS_USERNAME\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"wssCredentials\": {\r\n\t\t\"userName\": \"Administrator\",\r\n\t\t\"password\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"UsernameMessageAlias\",\r\n\t\"description\": \"WSS username message alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"652c4526-db8a-4ef9-9782-edda1a4gf9bc\"\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachineadfs20.sag.com\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"KerberosHttpTransportAlias\",\r\n\t\"description\": \"vmmachineadfs20 kerberos transport alias\",\r\n\t\"type\": \"httpTransportSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"422c4526-db9a-4ef9-9872-edda1a6aa9bc\"\r\n\t\"authType\": \"HTTP_BASIC\",\r\n\t\"httpAuthCredentials\": {\r\n\t\t\"domain\": \"localhost\",\r\n\t\t\"userName\": \"Administrator\",\r\n\t\t\"password\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"BasicHttpTransportAlias\",\r\n\t\"description\": \"Basic http transport alias\",\r\n\t\"type\": \"httpTransportSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"732c4526-db9a-5t46-9782-edda1a4ac9bc\"\r\n\t\"authType\": \"NTLM\",\r\n\t\"httpAuthCredentials\": {\r\n\t\t\"domain\": \"localhost\",\r\n\t\t\"userName\": \"Administrator\",\r\n\t\t\"password\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"NTLMTransportAlias\",\r\n\t\"description\": \"ntlm http transport alias\",\r\n\t\"type\": \"httpTransportSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"652c4526-db9a-4ef9-3265-edda1a6aa9bc\"\r\n\t\"authType\": \"OAUTH2\",\r\n\t\"oauth2Token\": \"T2F1dGgydG9rZW4=\",\r\n\t\"authMode\": \"NEW\",\r\n\t\"name\": \"OAuthTransportAlias\",\r\n\t\"description\": \"OAuth2 alias for outbound transport security\",\r\n\t\"type\": \"httpTransportSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"732c3265-db9a-4ef9-9782-edda1a6aa9bc\"\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n},\r\n{\r\n\t\"id\": \"12c4526-db9a-5ef9-9845-edda1a7ba9bc\"\r\n\t\"authType\": \"SAML\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"\",\r\n\t\t\"keyAlias\": null,\r\n\t\t\"certificateAlias\": null,\r\n\t\t\"truststoreAlias\": \"\"\r\n\t},\r\n\t\"samlIssuerConfig\": \"${SAMLIssuer1}\",\r\n\t\"name\": \"SAMLAlias\",\r\n\t\"description\": \"SAML secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n}\r\n" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "Use this method to create an alias. There are different types of alias like Endpoint, Simple etc. Refer to the Alias schema for different type of alias that you can create. If you want to create an alias for a specific type (say Endpoint alias), refer to the corresponding schema (EndpointAlias)", + "operationId" : "createAlias", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Alias" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n}" + } + } ], + "responses" : { + "201" : { + "description" : "This status code indicates that the alias has been successfully created in API Gateway, and the newly created alias is available in the response body.", + "schema" : { + "$ref" : "#/definitions/Alias" + }, + "examples" : { + "application/json" : "{\r\n\t\"authType\": \"KERBEROS\",\r\n\t\"signAndEncryptConfig\": {\r\n\t\t\"keyStoreAlias\": \"DEFAULT_IS_KEYSTORE\",\r\n\t\t\"keyAlias\": \"ssos\",\r\n\t\t\"certificateAlias\": \"ssos\",\r\n\t\t\"truststoreAlias\": \"DEFAULT_IS_TRUSTSTORE\"\r\n\t},\r\n\t\"kerberosCredentials\": {\r\n\t\t\"servicePrincipal\": \"vmmachine01.sag.com/adfs\",\r\n\t\t\"servicePrincipalNameForm\": \"username\",\r\n\t\t\"clientPrincipal\": \"Administrator\",\r\n\t\t\"clientPassword\": \"bWFuYWdl\"\r\n\t},\r\n\t\"authMode\": \"DELEGATE_INCOMING\",\r\n\t\"name\": \"KerberosMessageAlias\",\r\n\t\"description\": \"Kerberos outbound message secure alias\",\r\n\t\"type\": \"soapMessageSecurityAlias\"\r\n\t\"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that an alias with the given name already exists in API Gateway or the request body is not correct.", + "examples" : { + "application/json" : "{}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } } }, "securityDefinitions" : { @@ -215,27 +215,6 @@ } }, "definitions" : { - "AWSConfigurationAlias" : { - "allOf" : [ { - "$ref" : "#/definitions/Alias" - }, { - "type" : "object", - "properties" : { - "region" : { - "type" : "string", - "description" : "The configured AWS instance region detail" - }, - "accessKey" : { - "type" : "string", - "description" : "The access key ID for the AWS instance. This is used to sign the requests" - }, - "secretKey" : { - "type" : "string", - "description" : "The secret access key for the AWS instance. This is used to sign the requests" - } - } - } ] - }, "Alias" : { "type" : "object", "discriminator" : "type", @@ -256,7 +235,7 @@ "type" : { "type" : "string", "description" : "Type of the alias", - "enum" : [ "simple", "endpoint", "httpTransportSecurityAlias", "soapMessageSecurityAlias", "samlIssuerAlias", "authServerAlias", "webmethodsAlias", "transformationAlias", "serviceRegistryAlias", "clientMetadataMapping", "awsConfigurationAlias", "isConfigurationAlias" ] + "enum" : [ "simple", "endpoint", "httpTransportSecurityAlias", "soapMessageSecurityAlias", "samlIssuerAlias", "authServerAlias", "webmethodsAlias", "transformationAlias", "serviceRegistryAlias", "clientMetadataMapping" ] }, "stage" : { "type" : "string", @@ -279,28 +258,34 @@ "type" : "object", "properties" : { "localIntrospectionConfig" : { + "description" : "Configuration to do the local introspection", "$ref" : "#/definitions/LocalIntrospectionConfig" }, "remoteIntrospectionConfig" : { + "description" : "Configuration to do the remote introspection.", "$ref" : "#/definitions/RemoteIntrospectionConfig" }, "dcrEndpoint" : { + "description" : "configuration for the dynamic client registration", "$ref" : "#/definitions/DynamicClientRegistrationEndpoint" }, "tokenGeneratorConfig" : { + "description" : "Configuration that is required to generate the token by the API Gateway", "$ref" : "#/definitions/TokenGeneratorConfig" }, "sslConfig" : { + "description" : "SSL Configuration used for two ssl for the authorization server communications", "$ref" : "#/definitions/SSLConfig" }, "metadata" : { + "description" : "Metadata information used by the API Portal", "$ref" : "#/definitions/Metadata" }, - "scopes" : { + "authServerScopes" : { "type" : "array", "description" : "List of scopes available in the authorization server", "items" : { - "$ref" : "#/definitions/Scope" + "type" : "string" } }, "supportedGrantTypes" : { @@ -318,9 +303,6 @@ "type" : "string", "description" : "Type of the authorization server", "enum" : [ "LOCAL_IS", "REMOTE_IS", "EXTERNAL" ] - }, - "remoteISConfig" : { - "$ref" : "#/definitions/RemoteISConfig" } } } ] @@ -390,9 +372,11 @@ "type" : "object", "properties" : { "authInfo" : { + "description" : "Authorization configuration to manage the clients in the authorization server", "$ref" : "#/definitions/AuthInfo" }, "clientRegistrationEndpoint" : { + "description" : "Client registration endpoint configuration", "$ref" : "#/definitions/OAuth2Endpoint" } } @@ -472,9 +456,11 @@ "enum" : [ "NEW", "INCOMING_HTTP_BASIC_AUTH", "INCOMING_WSS_USER", "INCOMING_X509", "DELEGATE_INCOMING", "INCOMING_OAUTH_TOKEN", "INCOMING_JWT", "TRANSPARENT", "INCOMING_KERBEROS" ] }, "httpAuthCredentials" : { + "description" : "Credentials that are used for HTTP authentication", "$ref" : "#/definitions/Credentials" }, "kerberosCredentials" : { + "description" : "Credentials that are used for Kerberos authentication", "$ref" : "#/definitions/KerberosCredentials" }, "oauth2Token" : { @@ -484,34 +470,6 @@ } } ] }, - "ISConfigurationAlias" : { - "allOf" : [ { - "$ref" : "#/definitions/Alias" - }, { - "type" : "object", - "properties" : { - "url" : { - "type" : "string" - }, - "username" : { - "type" : "string", - "description" : "The username of a registered Integration Server user who has the functional privilege to create the service" - }, - "password" : { - "type" : "string", - "description" : "A valid password of the Integration Server user identified by the attribute Username" - }, - "keystoreAlias" : { - "type" : "string", - "description" : "The Keystore alias field contains a list of the available keystore aliases in API Gateway. If there are no configured keystore aliases, this field lists the default Integration Server keystore, DEFAULT_IS_KEYSTORE ." - }, - "keyAlias" : { - "type" : "string", - "description" : "The alias of the private key that is stored in the keystore specified by the keystore alias.\nThe Key alias field contains a list of the available aliases in the selected keystore. If there are no configured keystores, this field is empty" - } - } - } ] - }, "KerberosCredentials" : { "type" : "object", "properties" : { @@ -697,47 +655,6 @@ } } ] }, - "RemoteISConfig" : { - "type" : "object", - "properties" : { - "host" : { - "type" : "string", - "description" : "Host name or IP address of the remote server for which you are creating an alias" - }, - "port" : { - "type" : "integer", - "format" : "int32", - "example" : 5555, - "description" : "Port number on which the remote server listens for incoming requests from your server" - }, - "username" : { - "type" : "string", - "description" : "User name for a user account on the remote server. When you invoke a service using this alias, the remote server uses this user account for authentication and access control." - }, - "password" : { - "type" : "string", - "description" : "Password of the corresponding user in remote IS authorization server" - }, - "useSSL" : { - "type" : "boolean", - "description" : "Whether you want your server to connect to the remote server using Secure Sockets Layer (SSL)." - }, - "acl" : { - "type" : "string", - "description" : "ACL that governs which user groups on your server can use this alias for the remote server. Select an ACL from the drop down list. By default, only members of groups governed by the Internal ACL can use this alias." - }, - "timeout" : { - "type" : "integer", - "format" : "int32", - "description" : "Specifies the length of time (in minutes) that your server maintains an idle connection to a remote server." - }, - "keepAlive" : { - "type" : "integer", - "format" : "int32", - "description" : "Sets the default number of client keep alive connections to retain for a given target endpoint. If not specified, five keep alive connections are retained." - } - } - }, "RemoteIntrospectionConfig" : { "type" : "object", "properties" : { @@ -785,9 +702,11 @@ "enum" : [ "NEW", "INCOMING_HTTP_BASIC_AUTH", "INCOMING_WSS_USER", "INCOMING_X509", "DELEGATE_INCOMING", "INCOMING_OAUTH_TOKEN", "INCOMING_JWT", "TRANSPARENT", "INCOMING_KERBEROS" ] }, "wssCredentials" : { + "description" : "Credentials required for the WSS Username token", "$ref" : "#/definitions/WssCredentials" }, "kerberosCredentials" : { + "description" : "Credentials for the kerberos token", "$ref" : "#/definitions/KerberosCredentials" }, "endpoint" : { @@ -816,6 +735,7 @@ } }, "signAndEncryptConfig" : { + "description" : "Private and public keys used for signature and encryption", "$ref" : "#/definitions/SignAndEncryptConfig" }, "assertionId" : { @@ -841,9 +761,11 @@ "enum" : [ "NEW", "INCOMING_HTTP_BASIC_AUTH", "INCOMING_WSS_USER", "INCOMING_X509", "DELEGATE_INCOMING", "INCOMING_OAUTH_TOKEN", "INCOMING_JWT", "TRANSPARENT", "INCOMING_KERBEROS" ] }, "wssCredentials" : { + "description" : "Credentials required for the WSS Username token", "$ref" : "#/definitions/WssCredentials" }, "kerberosCredentials" : { + "description" : "Credentials for the kerberos token", "$ref" : "#/definitions/KerberosCredentials" }, "samlIssuerConfig" : { @@ -851,6 +773,7 @@ "description" : "Saml issuer configuration name" }, "signAndEncryptConfig" : { + "description" : "private and public keys used for signature and encryption", "$ref" : "#/definitions/SignAndEncryptConfig" } } @@ -873,19 +796,6 @@ } } }, - "Scope" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "Name of the oauth2 scope" - }, - "description" : { - "type" : "string", - "description" : "Description of the oauth2 scope" - } - } - }, "ServiceRegistryCommunication" : { "type" : "object", "properties" : { @@ -943,12 +853,15 @@ } }, "discoveryInfo" : { + "description" : "Contains information like resource path and HTTP method to use while discovering a service in service registry", "$ref" : "#/definitions/ServiceRegistryCommunication" }, "registrationInfo" : { + "description" : "Contains information like resource path and HTTP method to use while registering a service in service registry", "$ref" : "#/definitions/ServiceRegistryCommunication" }, "deRegistrationInfo" : { + "description" : "Contains information like resource path and HTTP method to use while de-registering a service from service registry", "$ref" : "#/definitions/ServiceRegistryCommunication" }, "serviceRegistryType" : { diff --git a/apigatewayservices/APIGatewayApplication.json b/apigatewayservices/APIGatewayApplication.json index f47ef53..1752239 100644 --- a/apigatewayservices/APIGatewayApplication.json +++ b/apigatewayservices/APIGatewayApplication.json @@ -1,1378 +1,1464 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "API Gateway Application Management Service allows you to manage the Applications in API Gateway. Any user with the 'Manage applications' functional privilege can manage the APIs in the API Gateway. By default, the users who are part of either API-Gateway-Providers or API-Gateway-Administrators groups will have this privilege.\n\n An application defines the precise identifiers by which messages from a particular consumer application is recognized at run time. The identifiers can be, for example, user name in HTTP headers, a range of IP addresses, such that API Gateway can identify or authenticate the consumers that are requesting an API.\n\n. The ability of API Gateway to relate a request to a specific consumer application enables it to:\n\n 1. Control access to an API at run time (that is, allow only authorized consumer applications to invoke an API).\n\n 2. Monitor an API for violations of a Service-Level Agreement (SLA) for a specified application.\n\n 3. Indicate the consumer application to which a logged transaction event belongs.\n\n\n\n An application has the following attributes for specifying the identifiers:\n\n 1. IP address, which specifies one or more IP addresses that identify requests from a particular consumer application. Example: 192.168.0.10\n\n This attribute is queried when the Identify and Authorize Application policy is configured to identify consumer applications by IP address.\n\n 2. JWT claims set, which specifies one or more claims that identify requests from a particular consumer application. The claims are a set of name-value pairs that provide sufficient information about the application. Example: sub = Administrator.\n\n This attribute is queried when the Identify and Authorize Application policy is configured to identify consumer applications by JSON Web Token (JWT).\n\n 3. Consumer certificate, which specifies the X.509 certificates that identify requests from a particular consumer.\n\n This attribute is queried when the Identify and authenticate consumer policy is configured to identify the consumer applications by a consumer certificate.\n\n 4. Identification token, which specifies the host names, user names or other distinguishing strings that identify requests from a particular consumer application.\n\n This attribute is queried when the Identify and authenticate consumer policy action is configured to identify consumer applications by host name, HTTP user name, and WSS user name.\n\n \n\n As an API provider or an API Gateway Administrator you can create and manage applications, and register applications with the APIs.\n\n These are the high level stages of managing and using an application:\n\n 1. API developers request the API Gateway administrators to create an application for access as per the required identification criteria.\n\n 2. API Gateway provider or administrator validates the request and creates a new application, there by provisioning the application specific access tokens (API access key and OAuth credentials).\n\n 3. API Developer, upon finding a suitable API, sends a request to API Gateway for consumption by providing the application details.\n\n 4. After validating the request, API Gateway provider or administrator associates the application with the API. Keys are generated for applications and not for every API that the application consumes. \n\n Note: The approval process, if any, is handled by the requesting application and not handled by API Gateway.\n\n 5. The API developer can then use the application with the proper identifier (such as the access key or identifier) to access the API. \n\n Strategies: \n\n A strategy is a way to authenticate the incoming request and provides multiple authentication mechanisms or multiple authorization servers for a single authentication scheme. API Gateway identifies the application and validates the token submitted through the strategy configured in the application. You can create multiple strategies authorized by an API for an application. For example, in case of OAuth authentication scheme, you want the application to support both OKTA and PINGFederate or OKTA with multiple tenants. This can be configured as OAuth strategy for the application.", - "version" : "10.7", - "title" : "API Gateway Application Management Service" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "plain/text" ], - "produces" : [ "application/json" ], - "paths" : { - "/applications" : { - "get" : { - "description" : "The method retrieves a list of available applications in API Gateway.", - "operationId" : "getApplications", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that a list of the available applications is retrieved successfully.", - "examples" : { - "application/json" : "{\n \"applications\": [\n {\n \"name\": \"TestSampleApp\",\n \"description\": null,\n \"contactEmails\": [],\n \"identifiers\": [\n {\n \"id\": \"3ce6f4df-e773-4fdb-bed3-3d63b5cb520c\",\n \"name\": \"Username\",\n \"key\": \"httpBasicAuth\",\n \"value\": [\n \"Administrator\"\n ]\n }\n ],\n \"siteURLs\": [],\n \"jsOrigins\": [],\n \"authStrategyIds\": [\n \"81df9682-6a28-4ebc-92fd-2c486d3f75c2\"\n ],\n \"version\": \"1.0\",\n \"id\": \"803b7f16-45c6-4b1c-be26-4da053d40640\",\n \"created\": \"2018-12-04 05:27:56 GMT\",\n \"lastupdated\": null,\n \"owner\": \"Administrator\",\n \"consumingAPIs\": [],\n \"accessTokens\": {\n \"apiAccessKey_credentials\": {\n \"apiAccessKey\": \"f293cbb5cb0f1367ecc55b4c5b1717dad4073f77d2bde869cf8ee0162cc08f38\",\n \"expirationInterval\": null,\n \"expirationDate\": null,\n \"expired\": false\n },\n \"oauth_credentials\": {\n \"clientID\": null,\n \"clientSecret\": null,\n \"clientName\": null,\n \"scopes\": null,\n \"token_lifetime\": null,\n \"token_refresh_limit\": null,\n \"redirect_uris\": [],\n \"Type\": \"confidential\"\n }\n }\n ,\r\n\t\t\t\"teams\": [\r\n\t\t\t\t{\r\n\t\t\t\t\t\"id\": \"Administrators\",\r\n\t\t\t\t\t\"name\": \"Administrators\",\r\n\t\t\t\t\t\"canDelete\": \"false\"\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"id\": \"Default\",\r\n\t\t\t\t\t\"name\": \"Default\",\r\n\t\t\t\t\t\"canDelete\": \"true\"\r\n\t\t\t\t}\r\n\t\t\t] }\n ]\n}" - }, - "schema" : { - "$ref" : "#/definitions/Application" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "The method creates an application in API Gateway.", - "operationId" : "createApplication", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of an application that is to be created in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Application" - }, - "x-examples" : { - "application/json" : "{\"id\":\"\",\"name\":\"TestApp\",\"description\":null,\"version\":\"1.0\",\"contactEmails\":[],\"siteURLs\":[],\"identifiers\":[{\"value\":[\"admin\"],\"name\":\"Username\",\"key\":\"httpBasicAuth\"}],\"consumingAPIs\":[],\"owner\":null,\r\n\t\"teams\": [\r\n\t\t{\r\n\t\t\t\"id\": \"Default\"\r\n\t\t}\r\n\t]\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the application has been successfully created in API Gateway.", - "examples" : { - "application/json" : "{\n \"name\": \"TestApp\",\n \"description\": null,\n \"contactEmails\": [],\n \"identifiers\": [\n {\n \"id\": \"820332c8-7467-4340-bef8-dae595c69f7b\",\n \"name\": \"Username\",\n \"key\": \"httpBasicAuth\",\n \"value\": [\n \"admin\"\n ]\n }\n ],\n \"siteURLs\": [],\n \"jsOrigins\": [],\n \"authStrategyIds\": [],\n \"version\": \"1.0\",\n \"id\": \"79251257-1ea5-4df7-a8bf-a345ea835592\",\n \"created\": \"2018-12-04 05:33:20 GMT\",\n \"lastupdated\": null,\n \"owner\": \"Administrator\",\n \"consumingAPIs\": [],\n \"accessTokens\": {\n \"apiAccessKey_credentials\": {\n \"apiAccessKey\": \"dad584e3b45f90db5baab4d52a24c2ff9201e5a5e48eaea0740bb4acf19fa937\",\n \"expirationInterval\": null,\n \"expirationDate\": null,\n \"expired\": false\n },\n \"oauth_credentials\": {\n \"clientID\": null,\n \"clientSecret\": null,\n \"clientName\": null,\n \"scopes\": null,\n \"token_lifetime\": null,\n \"token_refresh_limit\": null,\n \"redirect_uris\": [],\n \"Type\": \"confidential\"\n }\n }\n}" - }, - "schema" : { - "$ref" : "#/definitions/Application" - } - }, - "400" : { - "description" : "This status code indicates that an application with the given ID already exists in API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "The method deletes the specified application in API Gateway.", - "operationId" : "deleteApplications", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "ids", - "in" : "query", - "description" : "This parameter specifies the ID of an application that is to be deleted in API Gateway.", - "required" : false, - "type" : "string" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "This status code indicates that the specified application has been successfully deleted from API Gateway." - }, - "404" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/applications/{applicationId}/apis" : { - "get" : { - "description" : "The method retrieves a list of registered APIs for the specified application in API Gateway.", - "operationId" : "getRegisteredApis", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application whose registered APIs are to be retrieved in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that a list of registered APIs for the application is retrieved successfully.", - "examples" : { - "application/json" : "{\n \"apiIDs\": [\n \"2aa651f4-2696-425b-96c4-440ad78b0305\"\n ]\n}" - } - }, - "404" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "This HTTP request registers the APIs with the specified application in API Gateway.", - "operationId" : "registerApis", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter specifies the IDs of the APIs for registering in an application in API Gateway.", - "required" : true, - "schema" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "x-examples" : { - "application/json" : "{\"apiIDs\":[\"3de85431-d45b-418d-b5aa-0be5c3b5714d\"]}" - } - }, { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application for registering APIs in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the given APIs have been successfully registered with the specified application in API Gateway.", - "examples" : { - "application/json" : "{}" - } - }, - "400" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This HTTP request updates the registered APIs of the specified application.", - "operationId" : "updateRegisteredApis", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter specifies the ID of a registered API that is to be updated in API Gateway.", - "required" : true, - "schema" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "x-examples" : { - "application/json" : "{\"apiIDs\":[\"3de85431-d45b-418d-b5aa-0be5c3b5714d\"]}" - } - }, { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application for updating the details of the registered APIs in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the registered API has been successfully updated in API Gateway." - }, - "400" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "The method unregisters the APIs from the specified application in API Gateway.", - "operationId" : "unregisterApis", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiIDs", - "in" : "query", - "description" : "This parameter specifies the IDs of APIs that are to be unregistered from the specified application in API Gateway.", - "required" : true, - "type" : "string" - }, { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application for unregistering the associated APIs in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "This status code indicates that APIs are successfully unregistered from the specified application in API Gateway." - }, - "404" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/applications/{applicationId}/accessTokens" : { - "get" : { - "description" : "The method retrieves a map of access token endpoints for all the authorization servers configured", - "operationId" : "getAccessTokenEndpoints", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application whose access token endpoints are to be retrieved from API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that a list of access token endpoints for the application are retrieved successfully.", - "examples" : { - "application/json" : "{\n \"local\": {\n \"uris\": {\n \"authorizeUrl\": \"http://vm:5555/invoke/pub.apigateway.oauth2/authorize\",\n \"accessTokenUrl\": \"http://vm:5555/invoke/pub.apigateway.oauth2/getAccessToken\",\n \"refreshTokenUrl\": \"http://vm:5555/invoke/pub.oauth/refreshAccessToken\"\n }\n }\n}" - } - }, - "404" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "The method regenarates the access tokens of an application", - "operationId" : "regenerateAccessTokens", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application for generating the access Tokens in API Gateway.", - "required" : true, - "type" : "string" - }, { - "in" : "body", - "name" : "body", - "description" : "This parameter specifies the type of token to be regenerated.", - "required" : true, - "schema" : { - "type" : "string" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the access tokens are successfully regenerated for the application in API Gateway." - }, - "400" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "operationId" : "updateAccessTokens", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application for updating the access tokens.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates access tokens are successfully updated in API Gateway." - }, - "400" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "The method clears the access tokens from the specified application in API Gateway.", - "operationId" : "clearAccessTokens", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application for which the access tokesn needs to cleared", - "required" : true, - "type" : "string" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "This status code indicates that APIs are successfully unregistered from the specified application in API Gateway." - }, - "404" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/applications/{applicationId}" : { - "get" : { - "description" : "The method retrieves the details of a specified application in API Gateway", - "operationId" : "getApplication", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application whose details are to be retrieved in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the details of the specified application are retrieved successfully.", - "examples" : { - "application/json" : "{\n \"applications\": [\n {\n \"name\": \"TestApp\",\n \"description\": null,\n \"contactEmails\": [],\n \"identifiers\": [\n {\n \"id\": \"820332c8-7467-4340-bef8-dae595c69f7b\",\n \"name\": \"Username\",\n \"key\": \"httpBasicAuth\",\n \"value\": [\n \"admin\"\n ]\n }\n ],\n \"siteURLs\": [],\n \"jsOrigins\": [],\n \"authStrategyIds\": [],\n \"version\": \"1.0\",\n \"id\": \"79251257-1ea5-4df7-a8bf-a345ea835592\",\n \"created\": \"2018-12-04 05:33:20 GMT\",\n \"lastupdated\": null,\n \"owner\": \"Administrator\",\n \"consumingAPIs\": [],\n \"accessTokens\": {\n \"apiAccessKey_credentials\": {\n \"apiAccessKey\": \"eb3fcb16-89bd-4d0b-b45b-c1257686e4d6\",\n \"expirationInterval\": null,\n \"expirationDate\": null,\n \"expired\": false\n },\n \"oauth_credentials\": {\n \"clientID\": null,\n \"clientSecret\": null,\n \"clientName\": null,\n \"scopes\": null,\n \"token_lifetime\": null,\n \"token_refresh_limit\": null,\n \"redirect_uris\": [],\n \"Type\": \"confidential\"\n }\n }\n }\n ]\n}" - }, - "schema" : { - "$ref" : "#/definitions/Application" - } - }, - "404" : { - "description" : "This status code indicates that an application with the given ID could not be found in API Gateway." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This HTTP request updates a specified application in API Gateway.", - "operationId" : "updateApplication", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of an application that is to be updated in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Application" - }, - "x-examples" : { - "application/json" : "{\"id\":\"221aa46e-501d-4ae8-911f-34458e062e63\",\"name\":\"TestApp\",\"description\":null,\"version\":\"1.0\",\"contactEmails\":[],\"siteURLs\":[],\"identifiers\":[{\"value\":[\"admin\"],\"name\":\"Username\",\"key\":\"httpBasicAuth\"}],\"consumingAPIs\":[],\"owner\":null,\"accessTokens\":{\"apiAccessKey_credentials\":{\"apiAccessKey\":\"a6e43495-f981-43da-8f6a-ff8cb5689864\",\"expirationInterval\":null},\"oauth_credentials\":{\"Type\":\"confidential\",\"clientID\":\"a8271b2d-d903-4869-b571-c21088ac4b8d\",\"clientSecret\":\"13e2b1ca-befb-4fe3-909e-ed9fdb0a6748\",\"clientName\":\"TestApp-a1f3b232-4018-44c9-a086-77804fd55dd9\",\"scopes\":[\"dd5b733f-b31e-4f1d-86be-97364865c70b\",\"3de85431-d45b-418d-b5aa-0be5c3b5714d\"],\"redirect_uris\":[\"https://placeholder_redirect_uri\"],\"token_lifetime\":\"3600\",\"token_refresh_limit\":\"100\",\"accessTokenRequestURI\":null}}}" - } - }, { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application that is to be updated in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified application has been successfully updated in API Gateway.", - "schema" : { - "$ref" : "#/definitions/Application" - } - }, - "400" : { - "description" : "This status code indicates that the specified application could not be updated" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "patch" : { - "description" : "This HTTP PATCH request suspends the specified application in API Gateway.", - "operationId" : "patchApplication", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of an application that is to be updated in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Application" - }, - "x-examples" : { - "application/json" : "{\"isSuspended\":\"true\"}" - } - }, { - "name" : "applicationId", - "in" : "path", - "description" : "This parameter specifies the ID of an application that is to be updated in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified application has been successfully updated in API Gateway.", - "schema" : { - "$ref" : "#/definitions/Application" - } - }, - "400" : { - "description" : "This status code indicates that the specified application could not be updated" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/applications/_search" : { - "get" : { - "description" : "The method retrieves a list of available applications in API Gateway based on the search query parameters.", - "operationId" : "searchApplications", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "ids", - "in" : "query", - "description" : "This parameter specifies the IDs of applications whose details are to be retrieved in API Gateway.", - "required" : false, - "type" : "string" - }, { - "name" : "idsToExclude", - "in" : "query", - "description" : "This parameter specifies the IDs of applications whose details are to be removed while retrieving other applications in API Gateway.", - "required" : false, - "type" : "string" - }, { - "name" : "from", - "in" : "query", - "description" : "This parameter specifies the last updated date in milliseconds. The applications whose last updated date greater than or equal to this are to be retrieved in API Gateway.", - "required" : false, - "type" : "number" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the details of the specified applications are retrieved successfully.", - "schema" : { - "$ref" : "#/definitions/Application" - } - }, - "404" : { - "description" : "This status code indicates that an application with the given search parameters could not be found in API Gateway." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/strategies" : { - "get" : { - "description" : "The method retrieves a list of all strategies in API Gateway.", - "operationId" : "getStrategies", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the list of strategies is successfully retrieved.", - "examples" : { - "application/json" : "{\n \"strategies\": [\n {\n \"id\": \"e1f151e1-3210-4283-992b-b3f1d1cf6a92\",\n \"type\": \"OAUTH2\",\n \"authServerAlias\": \"local\",\n \"name\": \"test-oauth2-strategy\",\n \"description\": \"\",\n \"clientId\": \"e65b0fe2-d73d-4ea7-a92a-20c949e08235\",\n \"dcrConfig\": {\n \"allowedGrantTypes\": [\n \"authorization_code\",\n \"password\"\n ],\n \"applicationType\": \"WEB\",\n \"clientType\": \"PUBLIC\",\n \"clientName\": \"test-oauth2-strategy\",\n \"clientVersion\": \"1.0\",\n \"expirationInterval\": \"3600\",\n \"refreshCount\": \"0\",\n \"redirectUris\": [\n \"https://redirect.uri\"\n ]\n },\n \"clientRegistration\": {\n \"clientId\": \"e65b0fe2-d73d-4ea7-a92a-20c949e08235\",\n \"name\": \"test-oauth2-strategy\",\n \"version\": \"1.0\",\n \"type\": \"public\",\n \"tokenLifetime\": 3600,\n \"tokenRefreshLimit\": 0,\n \"clientSecret\": \"f3d2edb1-0bf4-47a8-9e34-775c1a943e70\",\n \"enabled\": true,\n \"redirectUris\": [\n \"https://redirect.uri\"\n ],\n \"clScopes\": [],\n \"authCodeAllowed\": true,\n \"implicitAllowed\": false,\n \"clientCredentialsAllowed\": false,\n \"resourceOwnerAllowed\": true\n }\n }\n ]\n}" - }, - "schema" : { - "$ref" : "#/definitions/OneOfStrategyModel" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "The method creates a strategy in API Gateway. The API request body must contain the payload for the strategy", - "operationId" : "createStrategy", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a strategy that is to be created in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/OneOfStrategyModel" - }, - "x-examples" : { - "application/json" : "{\n\"name\": \"Test\",\n\"description\": \"\",\n\"authServerAlias\": \"local\",\n\"type\": \"OAUTH2\",\n\"dcrConfig\": {\n\"allowedGrantTypes\": [\"authorization_code\",\n\"password\",\n\"implicit\"],\n\"scopes\": [],\n\"redirectUris\": [\"http://vm:5555/redirect\"],\n\"authServer\": \"local\",\n\"applicationType\": \"WEB\",\n\"clientType\": \"PUBLIC\",\n\"expirationInterval\": 3600,\n\"refreshCount\": \"0\"\n}\n} " - } - } ], - "responses" : { - "200" : { - "description" : "The method creates a strategy in API Gateway. The API request body must contain the payload for the strategy", - "examples" : { - "application/json" : "{\n \"strategy\": {\n \"id\": \"370f88ca-205e-45df-8e16-998088f32dc2\",\n \"type\": \"OAUTH2\",\n \"authServerAlias\": \"local\",\n \"name\": \"Test\",\n \"description\": \"\",\n \"clientId\": \"2b54de1c-a8fa-4965-a832-cacf6b656012\",\n \"dcrConfig\": {\n \"allowedGrantTypes\": [\n \"authorization_code\",\n \"password\",\n \"implicit\"\n ],\n \"applicationType\": \"WEB\",\n \"clientType\": \"PUBLIC\",\n \"clientName\": \"Test\",\n \"clientVersion\": \"1.0\",\n \"expirationInterval\": \"3600\",\n \"refreshCount\": \"0\",\n \"redirectUris\": [\n \"http://vm:5555/redirect\"\n ]\n },\n \"clientRegistration\": {\n \"clientId\": \"2b54de1c-a8fa-4965-a832-cacf6b656012\",\n \"name\": \"Test\",\n \"version\": \"1.0\",\n \"type\": \"public\",\n \"tokenLifetime\": 3600,\n \"tokenRefreshLimit\": 0,\n \"clientSecret\": \"6a3d98c3-e5b0-47fc-9acf-b454401cd87d\",\n \"enabled\": true,\n \"redirectUris\": [\n \"http://vm:5555/redirect\"\n ],\n \"clScopes\": [],\n \"authCodeAllowed\": true,\n \"implicitAllowed\": true,\n \"clientCredentialsAllowed\": false,\n \"resourceOwnerAllowed\": true\n }\n }\n}" - }, - "schema" : { - "$ref" : "#/definitions/OneOfStrategyModel" - } - }, - "400" : { - "description" : "This status code indicates that a strategy with the given ID already exists in API Gateway" - }, - "401" : { - "description" : "This status code indicates that either the user didn't provide right credentials or the user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "The method deletes the specified strategy in API Gateway.", - "operationId" : "deleteStrategy", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "ids", - "in" : "query", - "description" : "This parameter specifies the ID of a strategy that is to be deleted in API Gateway.", - "required" : false, - "type" : "string" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that either the user didn't provide right credentials or the user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "This status code indicates that the specified strategy has been successfully deleted from API Gateway." - }, - "404" : { - "description" : "This status code indicates that a strategy with the given ID could not be found in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/strategies/{strategyId}" : { - "get" : { - "description" : "The method retrieves the details of a specified strategy in API Gateway", - "operationId" : "getStrategy", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "strategyId", - "in" : "path", - "description" : "This parameter specifies the ID of a strategy whose details are to be retrieved in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the details of the specified strategy are retrieved successfully.", - "examples" : { - "application/json" : "{\n \"strategy\": {\n \"id\": \"a2641013-701c-420d-9eba-30cd9da1f0f5\",\n \"type\": \"OAUTH2\",\n \"authServerAlias\": \"local\",\n \"name\": \"testapp-$sys-default-oauth\",\n \"clientId\": \"5b5e2fee-b786-4abe-9fd4-584c265d260a\",\n \"dcrConfig\": {\n \"allowedGrantTypes\": [\n \"implicit\",\n \"client_credentials\",\n \"authorization_code\"\n ],\n \"clientType\": \"CONFIDENTIAL\",\n \"clientName\": \"4425af88-a80d-4f6c-b6e0-84008c720889\",\n \"clientVersion\": \"1.0\",\n \"expirationInterval\": \"3600\",\n \"redirectUris\": []\n },\n \"clientRegistration\": {\n \"clientId\": \"5b5e2fee-b786-4abe-9fd4-584c265d260a\",\n \"name\": \"4425af88-a80d-4f6c-b6e0-84008c720889\",\n \"version\": \"1.0\",\n \"type\": \"confidential\",\n \"tokenLifetime\": 3600,\n \"tokenRefreshLimit\": 0,\n \"clientSecret\": \"1bd1bcd0-7eb2-4aa9-a50a-41c038ad92b2\",\n \"enabled\": true,\n \"redirectUris\": [\n \"https://placeholder_redirect_uri\"\n ],\n \"clScopes\": [],\n \"authCodeAllowed\": true,\n \"implicitAllowed\": true,\n \"clientCredentialsAllowed\": true,\n \"resourceOwnerAllowed\": false\n }\n }\n}" - }, - "schema" : { - "$ref" : "#/definitions/OneOfStrategyModel" - } - }, - "404" : { - "description" : "This status code indicates that a strategy with the given ID could not be found in API Gateway." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This REST operation is used to update a strategy", - "operationId" : "updateStrategy", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a strategy that is to be updated in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/OneOfStrategyModel" - }, - "x-examples" : { - "application/json" : " {\n \"type\": \"OAUTH2\",\n \"authServerAlias\": \"local\",\n \"name\": \"testapp-$sys-default-oauth\",\n \"clientId\": \"5b5e2fee-b786-4abe-9fd4-584c265d260a\",\n \"dcrConfig\": {\n \"allowedGrantTypes\": [\n \"implicit\",\n \"client_credentials\",\n \"authorization_code\"\n ],\n \"clientType\": \"CONFIDENTIAL\",\n \"clientName\": \"4425af88-a80d-4f6c-b6e0-84008c720889\",\n \"clientVersion\": \"1.0\",\n \"expirationInterval\": \"3600\",\n \"redirectUris\": []\n },\n \"clientRegistration\": {\n \"clientId\": \"5b5e2fee-b786-4abe-9fd4-584c265d260a\",\n \"name\": \"4425af88-a80d-4f6c-b6e0-84008c720889\",\n \"version\": \"1.0\",\n \"type\": \"confidential\",\n \"tokenLifetime\": 3600,\n \"tokenRefreshLimit\": 0,\n \"clientSecret\": \"1bd1bcd0-7eb2-4aa9-a50a-41c038ad92b2\",\n \"enabled\": true,\n \"redirectUris\": [\n \"https://placeholder_redirect_uri\"\n ],\n \"clScopes\": [],\n \"authCodeAllowed\": true,\n \"implicitAllowed\": true,\n \"clientCredentialsAllowed\": true,\n \"resourceOwnerAllowed\": false\n }\n }\n" - } - }, { - "name" : "strategyId", - "in" : "path", - "description" : "This parameter specifies the ID of a strategy that is to be updated in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified strategy has been successfully updated in API Gateway.", - "examples" : { - "application/json" : "{\n \"strategy\": {\n \"id\": \"a2641013-701c-420d-9eba-30cd9da1f0f5\",\n \"type\": \"OAUTH2\",\n \"authServerAlias\": \"local\",\n \"name\": \"testapp-$sys-default-oauth\",\n \"clientId\": \"5b5e2fee-b786-4abe-9fd4-584c265d260a\",\n \"dcrConfig\": {\n \"allowedGrantTypes\": [\n \"implicit\",\n \"client_credentials\",\n \"authorization_code\"\n ],\n \"clientType\": \"CONFIDENTIAL\",\n \"clientName\": \"4425af88-a80d-4f6c-b6e0-84008c720889\",\n \"clientVersion\": \"1.0\",\n \"expirationInterval\": \"3600\",\n \"redirectUris\": []\n },\n \"clientRegistration\": {\n \"clientId\": \"5b5e2fee-b786-4abe-9fd4-584c265d260a\",\n \"name\": \"4425af88-a80d-4f6c-b6e0-84008c720889\",\n \"version\": \"1.0\",\n \"type\": \"confidential\",\n \"tokenLifetime\": 3600,\n \"tokenRefreshLimit\": 0,\n \"clientSecret\": \"1bd1bcd0-7eb2-4aa9-a50a-41c038ad92b2\",\n \"enabled\": true,\n \"redirectUris\": [],\n \"clScopes\": [],\n \"authCodeAllowed\": true,\n \"implicitAllowed\": true,\n \"clientCredentialsAllowed\": true,\n \"resourceOwnerAllowed\": false\n }\n }\n}" - }, - "schema" : { - "$ref" : "#/definitions/OneOfStrategyModel" - } - }, - "400" : { - "description" : "This status code indicates that the specified strategy could not be updated" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/strategies/{strategyId}/refreshCredentials" : { - "put" : { - "description" : "The method refreshes the credentials of a strategy in API Gateway.", - "operationId" : "refreshCredentials", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "strategyId", - "in" : "path", - "description" : "This parameter specifies the ID of a strategy that is to be updated in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified strategy has been successfully updated in API Gateway.", - "schema" : { - "$ref" : "#/definitions/OneOfStrategyModel" - } - }, - "400" : { - "description" : "This status code indicates that the specified strategy could not be updated" - }, - "401" : { - "description" : "This status code indicates that either the user didn't provide right credentials or the user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "APIAccessKey" : { - "type" : "object", - "properties" : { - "apiAccessKey" : { - "type" : "string", - "description" : "API access key" - }, - "expirationInterval" : { - "type" : "string", - "description" : "expiration interval of the api key" - }, - "expirationDate" : { - "type" : "string", - "description" : "expiration date of the api key" - } - } - }, - "Application" : { - "type" : "object", - "properties" : { - "applicationID" : { - "type" : "string", - "description" : "unique identifier of an application" - }, - "name" : { - "type" : "string", - "description" : "name of the application" - }, - "description" : { - "type" : "string", - "description" : "description of the application" - }, - "owner" : { - "type" : "string", - "description" : "owner of the application" - }, - "identifiers" : { - "type" : "array", - "description" : "list of all application identifiers", - "items" : { - "$ref" : "#/definitions/ApplicationIdentifier" - } - }, - "contactEmails" : { - "type" : "array", - "description" : "list of email contacts", - "items" : { - "type" : "string" - } - }, - "iconbyteArray" : { - "type" : "string", - "description" : "application icon byte array" - }, - "accessTokens" : { - "$ref" : "#/definitions/ApplicationToken" - }, - "creationDate" : { - "type" : "string", - "description" : "application creation time" - }, - "lastModified" : { - "type" : "string", - "description" : "last modified time of the application" - }, - "lastUpdated" : { - "type" : "integer", - "format" : "int64", - "description" : "last modified time of the application in milliseconds" - }, - "siteURLs" : { - "type" : "array", - "description" : "list of all site URLs", - "items" : { - "type" : "string" - } - }, - "jsOrigins" : { - "type" : "array", - "description" : "list of all javascript origins", - "items" : { - "type" : "string" - } - }, - "version" : { - "type" : "string" - }, - "isSuspended" : { - "type" : "boolean", - "description" : "holds the suspended state of an application" - }, - "authStrategyIds" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "type" : "string" - } - }, - "subscription" : { - "type" : "boolean" - } - } - }, - "ApplicationIdentifier" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "unique identifier of the application identifier" - }, - "key" : { - "type" : "string", - "description" : "identifier type" - }, - "name" : { - "type" : "string", - "description" : "name of the identifier" - }, - "value" : { - "type" : "array", - "description" : "list of identifier values", - "items" : { - "type" : "string" - } - } - } - }, - "ApplicationToken" : { - "type" : "object", - "properties" : { - "apiAccessKey" : { - "$ref" : "#/definitions/APIAccessKey" - }, - "oauth2Token" : { - "$ref" : "#/definitions/OAuth2Token" - } - } - }, - "OAuth2Token" : { - "type" : "object", - "properties" : { - "type" : { - "type" : "string", - "description" : "type of the oauth2 client" - }, - "clientId" : { - "type" : "string", - "description" : "unique identifier of the oauth2 client" - }, - "clientSecret" : { - "type" : "string", - "description" : "the client secret" - }, - "clientName" : { - "type" : "string", - "description" : "the name of the client" - }, - "scopes" : { - "type" : "array", - "description" : "the scopes associated with the client", - "items" : { - "type" : "string" - } - }, - "expirationInterval" : { - "type" : "string", - "description" : "the expiration interval" - }, - "refreshCount" : { - "type" : "string", - "description" : "number of times an access token can be refreshed" - }, - "redirectUris" : { - "type" : "array", - "description" : "list of redirect uris", - "items" : { - "type" : "string" - } - } - } - }, - "ClientRegistration" : { - "type" : "object", - "properties" : { - "clientId" : { - "type" : "string" - }, - "name" : { - "type" : "string" - }, - "version" : { - "type" : "string" - }, - "type" : { - "type" : "string" - }, - "tokenLifetime" : { - "type" : "integer", - "format" : "int32" - }, - "tokenRefreshLimit" : { - "type" : "integer", - "format" : "int32" - }, - "clientSecret" : { - "type" : "string" - }, - "enabled" : { - "type" : "boolean" - }, - "notes" : { - "type" : "string" - }, - "redirectUris" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "clScopes" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "authCodeAllowed" : { - "type" : "boolean" - }, - "implicitAllowed" : { - "type" : "boolean" - }, - "clientCredentialsAllowed" : { - "type" : "boolean" - }, - "resourceOwnerAllowed" : { - "type" : "boolean" - }, - "approvalpgTitle" : { - "type" : "string" - }, - "approvalpgHeading" : { - "type" : "string" - }, - "approvalpgLogoFilename" : { - "type" : "string" - }, - "approvalpgFooter" : { - "type" : "string" - }, - "approvalpgFilename" : { - "type" : "string" - } - } - }, - "DynamicClientRegistrationConfig" : { - "type" : "object", - "properties" : { - "allowedGrantTypes" : { - "type" : "array", - "description" : "grant types to be allowed for this client", - "items" : { - "type" : "string", - "enum" : [ "authorization_code", "password", "client_credentials", "refresh_token", "implicit" ] - } - }, - "applicationType" : { - "type" : "string", - "description" : "type of the application", - "enum" : [ "WEB", "NATIVE", "USER_AGENT_BASED" ] - }, - "clientType" : { - "type" : "string", - "description" : "specifies whether the client is either public or confidential client", - "enum" : [ "PUBLIC", "CONFIDENTIAL" ] - }, - "clientId" : { - "type" : "string", - "description" : "The client id" - }, - "clientSecret" : { - "type" : "string", - "description" : "The client secret" - }, - "clientName" : { - "type" : "string", - "description" : "The client name" - }, - "clientVersion" : { - "type" : "string", - "description" : "The client version" - }, - "expirationInterval" : { - "type" : "string", - "description" : "Token expiry time" - }, - "refreshCount" : { - "type" : "string", - "description" : "The number of times token can be refreshed" - }, - "scopes" : { - "type" : "array", - "description" : "The scopes associated with this client", - "items" : { - "type" : "string" - } - }, - "redirectUris" : { - "type" : "array", - "description" : "The redirect uris", - "items" : { - "type" : "string" - } - } - } - }, - "GatewaySecret" : { - "type" : "object" - }, - "JWTAuthStrategy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "A unique ID for the strategy", - "readOnly" : true - }, - "type" : { - "type" : "string", - "description" : "The type of the strategy", - "enum" : [ "JWT_RSA", "JWT_HSA", "OPENID_CONNECT_RSA", "OPENID_CONNECT_HSA", "OAUTH2", "OAUTH2_LOCAL_RSA", "OAUTH2_LOCAL_HSA", "COMPOSITE" ] - }, - "authServerAlias" : { - "type" : "string", - "description" : "The name of the authorization server alias" - }, - "name" : { - "type" : "string", - "description" : "The name of the strategy" - }, - "description" : { - "type" : "string" - }, - "audience" : { - "type" : "string" - } - } - }, - "JWTHSAuthStrategy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "A unique ID for the strategy", - "readOnly" : true - }, - "type" : { - "type" : "string", - "description" : "The type of the strategy", - "enum" : [ "JWT_RSA", "JWT_HSA", "OPENID_CONNECT_RSA", "OPENID_CONNECT_HSA", "OAUTH2", "OAUTH2_LOCAL_RSA", "OAUTH2_LOCAL_HSA", "COMPOSITE" ] - }, - "authServerAlias" : { - "type" : "string", - "description" : "The name of the authorization server alias" - }, - "name" : { - "type" : "string", - "description" : "The name of the strategy" - }, - "description" : { - "type" : "string" - }, - "audience" : { - "type" : "string" - }, - "secret" : { - "$ref" : "#/definitions/GatewaySecret" - } - } - }, - "JWTRSAuthStrategy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "A unique ID for the strategy", - "readOnly" : true - }, - "type" : { - "type" : "string", - "description" : "The type of the strategy", - "enum" : [ "JWT_RSA", "JWT_HSA", "OPENID_CONNECT_RSA", "OPENID_CONNECT_HSA", "OAUTH2", "OAUTH2_LOCAL_RSA", "OAUTH2_LOCAL_HSA", "COMPOSITE" ] - }, - "authServerAlias" : { - "type" : "string", - "description" : "The name of the authorization server alias" - }, - "name" : { - "type" : "string", - "description" : "The name of the strategy" - }, - "description" : { - "type" : "string" - }, - "audience" : { - "type" : "string" - } - } - }, - "OAuth2LocalHSIntrospectionStrategy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "A unique ID for the strategy", - "readOnly" : true - }, - "type" : { - "type" : "string", - "description" : "The type of the strategy", - "enum" : [ "JWT_RSA", "JWT_HSA", "OPENID_CONNECT_RSA", "OPENID_CONNECT_HSA", "OAUTH2", "OAUTH2_LOCAL_RSA", "OAUTH2_LOCAL_HSA", "COMPOSITE" ] - }, - "authServerAlias" : { - "type" : "string", - "description" : "The name of the authorization server alias" - }, - "name" : { - "type" : "string", - "description" : "The name of the strategy" - }, - "description" : { - "type" : "string" - }, - "clientId" : { - "type" : "string" - }, - "dcrConfig" : { - "$ref" : "#/definitions/DynamicClientRegistrationConfig" - }, - "clientRegistration" : { - "$ref" : "#/definitions/ClientRegistration" - }, - "jwtAuthStrategy" : { - "$ref" : "#/definitions/JWTAuthStrategy" - }, - "secret" : { - "$ref" : "#/definitions/GatewaySecret" - }, - "audience" : { - "type" : "string" - } - } - }, - "OAuth2LocalRSIntrospectionStrategy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "A unique ID for the strategy", - "readOnly" : true - }, - "type" : { - "type" : "string", - "description" : "The type of the strategy", - "enum" : [ "JWT_RSA", "JWT_HSA", "OPENID_CONNECT_RSA", "OPENID_CONNECT_HSA", "OAUTH2", "OAUTH2_LOCAL_RSA", "OAUTH2_LOCAL_HSA", "COMPOSITE" ] - }, - "authServerAlias" : { - "type" : "string", - "description" : "The name of the authorization server alias" - }, - "name" : { - "type" : "string", - "description" : "The name of the strategy" - }, - "description" : { - "type" : "string" - }, - "clientId" : { - "type" : "string" - }, - "dcrConfig" : { - "$ref" : "#/definitions/DynamicClientRegistrationConfig" - }, - "clientRegistration" : { - "$ref" : "#/definitions/ClientRegistration" - }, - "jwtAuthStrategy" : { - "$ref" : "#/definitions/JWTAuthStrategy" - }, - "audience" : { - "type" : "string" - } - } - }, - "OAuth2RemoteIntrospectionAuthStrategy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "A unique ID for the strategy", - "readOnly" : true - }, - "type" : { - "type" : "string", - "description" : "The type of the strategy", - "enum" : [ "JWT_RSA", "JWT_HSA", "OPENID_CONNECT_RSA", "OPENID_CONNECT_HSA", "OAUTH2", "OAUTH2_LOCAL_RSA", "OAUTH2_LOCAL_HSA", "COMPOSITE" ] - }, - "authServerAlias" : { - "type" : "string", - "description" : "The name of the authorization server alias" - }, - "name" : { - "type" : "string", - "description" : "The name of the strategy" - }, - "description" : { - "type" : "string" - }, - "clientId" : { - "type" : "string" - }, - "dcrConfig" : { - "$ref" : "#/definitions/DynamicClientRegistrationConfig" - }, - "clientRegistration" : { - "$ref" : "#/definitions/ClientRegistration" - }, - "audience" : { - "type" : "string" - } - } - }, - "OneOfStrategyModel" : { - "type" : "object", - "properties" : { - "JWT_HSA" : { - "$ref" : "#/definitions/JWTHSAuthStrategy" - }, - "JWT_RSA" : { - "$ref" : "#/definitions/JWTRSAuthStrategy" - }, - "OPENID_CONNECT_HSA" : { - "$ref" : "#/definitions/OAuth2LocalHSIntrospectionStrategy" - }, - "OPENID_CONNECT_RSA" : { - "$ref" : "#/definitions/OAuth2LocalRSIntrospectionStrategy" - }, - "OAUTH2" : { - "$ref" : "#/definitions/OAuth2RemoteIntrospectionAuthStrategy" - }, - "OAUTH2_LOCAL_RSA" : { - "$ref" : "#/definitions/OpenIDConnectRSAuthStrategy" - }, - "OAUTH2_LOCAL_HSA" : { - "$ref" : "#/definitions/OpenIDConnectHSAuthStrategy" - } - } - }, - "OpenIDConnectHSAuthStrategy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "A unique ID for the strategy", - "readOnly" : true - }, - "type" : { - "type" : "string", - "description" : "The type of the strategy", - "enum" : [ "JWT_RSA", "JWT_HSA", "OPENID_CONNECT_RSA", "OPENID_CONNECT_HSA", "OAUTH2", "OAUTH2_LOCAL_RSA", "OAUTH2_LOCAL_HSA", "COMPOSITE" ] - }, - "authServerAlias" : { - "type" : "string", - "description" : "The name of the authorization server alias" - }, - "name" : { - "type" : "string", - "description" : "The name of the strategy" - }, - "description" : { - "type" : "string" - }, - "clientId" : { - "type" : "string" - }, - "dcrConfig" : { - "$ref" : "#/definitions/DynamicClientRegistrationConfig" - }, - "clientRegistration" : { - "$ref" : "#/definitions/ClientRegistration" - }, - "jwtAuthStrategy" : { - "$ref" : "#/definitions/JWTAuthStrategy" - }, - "secret" : { - "$ref" : "#/definitions/GatewaySecret" - }, - "audience" : { - "type" : "string" - } - } - }, - "OpenIDConnectRSAuthStrategy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "A unique ID for the strategy", - "readOnly" : true - }, - "type" : { - "type" : "string", - "description" : "The type of the strategy", - "enum" : [ "JWT_RSA", "JWT_HSA", "OPENID_CONNECT_RSA", "OPENID_CONNECT_HSA", "OAUTH2", "OAUTH2_LOCAL_RSA", "OAUTH2_LOCAL_HSA", "COMPOSITE" ] - }, - "authServerAlias" : { - "type" : "string", - "description" : "The name of the authorization server alias" - }, - "name" : { - "type" : "string", - "description" : "The name of the strategy" - }, - "description" : { - "type" : "string" - }, - "clientId" : { - "type" : "string" - }, - "dcrConfig" : { - "$ref" : "#/definitions/DynamicClientRegistrationConfig" - }, - "clientRegistration" : { - "$ref" : "#/definitions/ClientRegistration" - }, - "jwtAuthStrategy" : { - "$ref" : "#/definitions/JWTAuthStrategy" - }, - "audience" : { - "type" : "string" - } - } - } - } +{ + "swagger": "2.0", + "info": { + "description": "API Gateway Application Management Service allows you to manage the Applications in API Gateway. Any user with the 'Manage applications' functional privilege can manage the APIs in the API Gateway. By default, the users who are part of either API-Gateway-Providers or API-Gateway-Administrators groups will have this privilege.\n\n An application defines the precise identifiers by which messages from a particular consumer application is recognized at run time. The identifiers can be, for example, user name in HTTP headers, a range of IP addresses, such that API Gateway can identify or authenticate the consumers that are requesting an API.\n\n. The ability of API Gateway to relate a request to a specific consumer application enables it to:\n\n 1. Control access to an API at run time (that is, allow only authorized consumer applications to invoke an API).\n\n 2. Monitor an API for violations of a Service-Level Agreement (SLA) for a specified application.\n\n 3. Indicate the consumer application to which a logged transaction event belongs.\n\n\n\n An application has the following attributes for specifying the identifiers:\n\n 1. IP address, which specifies one or more IP addresses that identify requests from a particular consumer application. Example: 192.168.0.10\n\n This attribute is queried when the Identify and Authorize Application policy is configured to identify consumer applications by IP address.\n\n 2. JWT claims set, which specifies one or more claims that identify requests from a particular consumer application. The claims are a set of name-value pairs that provide sufficient information about the application. Example: sub = Administrator.\n\n This attribute is queried when the Identify and Authorize Application policy is configured to identify consumer applications by JSON Web Token (JWT).\n\n 3. Consumer certificate, which specifies the X.509 certificates that identify requests from a particular consumer.\n\n This attribute is queried when the Identify and authenticate consumer policy is configured to identify the consumer applications by a consumer certificate.\n\n 4. Identification token, which specifies the host names, user names or other distinguishing strings that identify requests from a particular consumer application.\n\n This attribute is queried when the Identify and authenticate consumer policy action is configured to identify consumer applications by host name, HTTP user name, and WSS user name.\n\n \n\n As an API provider or an API Gateway Administrator you can create and manage applications, and register applications with the APIs.\n\n These are the high level stages of managing and using an application:\n\n 1. API developers request the API Gateway administrators to create an application for access as per the required identification criteria.\n\n 2. API Gateway provider or administrator validates the request and creates a new application, there by provisioning the application specific access tokens (API access key and OAuth credentials).\n\n 3. API Developer, upon finding a suitable API, sends a request to API Gateway for consumption by providing the application details.\n\n 4. After validating the request, API Gateway provider or administrator associates the application with the API. Keys are generated for applications and not for every API that the application consumes. \n\n Note: The approval process, if any, is handled by the requesting application and not handled by API Gateway.\n\n 5. The API developer can then use the application with the proper identifier (such as the access key or identifier) to access the API. \n\n Strategies: \n\n A strategy is a way to authenticate the incoming request and provides multiple authentication mechanisms or multiple authorization servers for a single authentication scheme. API Gateway identifies the application and validates the token submitted through the strategy configured in the application. You can create multiple strategies authorized by an API for an application. For example, in case of OAuth authentication scheme, you want the application to support both OKTA and PINGFederate or OKTA with multiple tenants. This can be configured as OAuth strategy for the application.", + "version": "10.3", + "title": "API Gateway Application Management Service" + }, + "host": "localhost:5555", + "basePath": "/rest/apigateway", + "schemes": [ + "http" + ], + "consumes": [ + "plain/text" + ], + "produces": [ + "application/json" + ], + "paths": { + "/applications": { + "get": { + "description": "The method retrieves a list of available applications in API Gateway.", + "operationId": "getApplications", + "produces": [ + "application/json" + ], + "parameters": [], + "responses": { + "200": { + "description": "This status code indicates that a list of the available applications is retrieved successfully.", + "schema": { + "$ref": "#/definitions/Application" + }, + "examples": { + "application/json": "{\n \"applications\": [\n {\n \"name\": \"TestSampleApp\",\n \"description\": null,\n \"contactEmails\": [],\n \"identifiers\": [\n {\n \"id\": \"3ce6f4df-e773-4fdb-bed3-3d63b5cb520c\",\n \"name\": \"Username\",\n \"key\": \"httpBasicAuth\",\n \"value\": [\n \"Administrator\"\n ]\n }\n ],\n \"siteURLs\": [],\n \"jsOrigins\": [],\n \"authStrategyIds\": [\n \"81df9682-6a28-4ebc-92fd-2c486d3f75c2\"\n ],\n \"version\": \"1.0\",\n \"id\": \"803b7f16-45c6-4b1c-be26-4da053d40640\",\n \"created\": \"2018-12-04 05:27:56 GMT\",\n \"lastupdated\": null,\n \"owner\": \"Administrator\",\n \"consumingAPIs\": [],\n \"accessTokens\": {\n \"apiAccessKey_credentials\": {\n \"apiAccessKey\": \"f293cbb5cb0f1367ecc55b4c5b1717dad4073f77d2bde869cf8ee0162cc08f38\",\n \"expirationInterval\": null,\n \"expirationDate\": null,\n \"expired\": false\n },\n \"oauth_credentials\": {\n \"clientID\": null,\n \"clientSecret\": null,\n \"clientName\": null,\n \"scopes\": null,\n \"token_lifetime\": null,\n \"token_refresh_limit\": null,\n \"redirect_uris\": [],\n \"Type\": \"confidential\"\n }\n }\n }\n ]\n}" + } + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "post": { + "description": "The method creates an application in API Gateway.", + "operationId": "createApplication", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "This parameter describes the request payload of an application that is to be created in API Gateway.", + "required": true, + "schema": { + "$ref": "#/definitions/Application" + }, + "x-examples": { + "application/json": "{\"id\":\"\",\"name\":\"TestApp\",\"description\":null,\"version\":\"1.0\",\"contactEmails\":[],\"siteURLs\":[],\"identifiers\":[{\"value\":[\"admin\"],\"name\":\"Username\",\"key\":\"httpBasicAuth\"}],\"consumingAPIs\":[],\"owner\":null}" + } + } + ], + "responses": { + "200": { + "description": "This status code indicates that the application has been successfully created in API Gateway.", + "schema": { + "$ref": "#/definitions/Application" + }, + "examples": { + "application/json": "{\n \"name\": \"TestApp\",\n \"description\": null,\n \"contactEmails\": [],\n \"identifiers\": [\n {\n \"id\": \"820332c8-7467-4340-bef8-dae595c69f7b\",\n \"name\": \"Username\",\n \"key\": \"httpBasicAuth\",\n \"value\": [\n \"admin\"\n ]\n }\n ],\n \"siteURLs\": [],\n \"jsOrigins\": [],\n \"authStrategyIds\": [],\n \"version\": \"1.0\",\n \"id\": \"79251257-1ea5-4df7-a8bf-a345ea835592\",\n \"created\": \"2018-12-04 05:33:20 GMT\",\n \"lastupdated\": null,\n \"owner\": \"Administrator\",\n \"consumingAPIs\": [],\n \"accessTokens\": {\n \"apiAccessKey_credentials\": {\n \"apiAccessKey\": \"dad584e3b45f90db5baab4d52a24c2ff9201e5a5e48eaea0740bb4acf19fa937\",\n \"expirationInterval\": null,\n \"expirationDate\": null,\n \"expired\": false\n },\n \"oauth_credentials\": {\n \"clientID\": null,\n \"clientSecret\": null,\n \"clientName\": null,\n \"scopes\": null,\n \"token_lifetime\": null,\n \"token_refresh_limit\": null,\n \"redirect_uris\": [],\n \"Type\": \"confidential\"\n }\n }\n}" + } + }, + "400": { + "description": "This status code indicates that an application with the given ID already exists in API Gateway" + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "delete": { + "description": "The method deletes the specified application in API Gateway.", + "operationId": "deleteApplications", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "This parameter specifies the ID of an application that is to be deleted in API Gateway.", + "required": false, + "type": "string" + } + ], + "responses": { + "204": { + "description": "This status code indicates that the specified application has been successfully deleted from API Gateway." + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + } + }, + "/applications/{applicationId}": { + "get": { + "description": "The method retrieves the details of a specified application in API Gateway", + "operationId": "getApplication", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application whose details are to be retrieved in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that the details of the specified application are retrieved successfully.", + "schema": { + "$ref": "#/definitions/Application" + }, + "examples": { + "application/json": "{\n \"applications\": [\n {\n \"name\": \"TestApp\",\n \"description\": null,\n \"contactEmails\": [],\n \"identifiers\": [\n {\n \"id\": \"820332c8-7467-4340-bef8-dae595c69f7b\",\n \"name\": \"Username\",\n \"key\": \"httpBasicAuth\",\n \"value\": [\n \"admin\"\n ]\n }\n ],\n \"siteURLs\": [],\n \"jsOrigins\": [],\n \"authStrategyIds\": [],\n \"version\": \"1.0\",\n \"id\": \"79251257-1ea5-4df7-a8bf-a345ea835592\",\n \"created\": \"2018-12-04 05:33:20 GMT\",\n \"lastupdated\": null,\n \"owner\": \"Administrator\",\n \"consumingAPIs\": [],\n \"accessTokens\": {\n \"apiAccessKey_credentials\": {\n \"apiAccessKey\": \"eb3fcb16-89bd-4d0b-b45b-c1257686e4d6\",\n \"expirationInterval\": null,\n \"expirationDate\": null,\n \"expired\": false\n },\n \"oauth_credentials\": {\n \"clientID\": null,\n \"clientSecret\": null,\n \"clientName\": null,\n \"scopes\": null,\n \"token_lifetime\": null,\n \"token_refresh_limit\": null,\n \"redirect_uris\": [],\n \"Type\": \"confidential\"\n }\n }\n }\n ]\n}" + } + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "put": { + "description": "This HTTP request updates a specified application in API Gateway.", + "operationId": "updateApplication", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "This parameter describes the request payload of an application that is to be updated in API Gateway.", + "required": true, + "schema": { + "$ref": "#/definitions/Application" + }, + "x-examples": { + "application/json": "{\"id\":\"221aa46e-501d-4ae8-911f-34458e062e63\",\"name\":\"TestApp\",\"description\":null,\"version\":\"1.0\",\"contactEmails\":[],\"siteURLs\":[],\"identifiers\":[{\"value\":[\"admin\"],\"name\":\"Username\",\"key\":\"httpBasicAuth\"}],\"consumingAPIs\":[],\"owner\":null,\"accessTokens\":{\"apiAccessKey_credentials\":{\"apiAccessKey\":\"a6e43495-f981-43da-8f6a-ff8cb5689864\",\"expirationInterval\":null},\"oauth_credentials\":{\"Type\":\"confidential\",\"clientID\":\"a8271b2d-d903-4869-b571-c21088ac4b8d\",\"clientSecret\":\"13e2b1ca-befb-4fe3-909e-ed9fdb0a6748\",\"clientName\":\"TestApp-a1f3b232-4018-44c9-a086-77804fd55dd9\",\"scopes\":[\"dd5b733f-b31e-4f1d-86be-97364865c70b\",\"3de85431-d45b-418d-b5aa-0be5c3b5714d\"],\"redirect_uris\":[\"https://placeholder_redirect_uri\"],\"token_lifetime\":\"3600\",\"token_refresh_limit\":\"100\",\"accessTokenRequestURI\":null}}}" + } + }, + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application that is to be updated in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that the specified application has been successfully updated in API Gateway.", + "schema": { + "$ref": "#/definitions/Application" + } + }, + "400": { + "description": "This status code indicates that the specified application could not be updated" + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "patch": { + "description": "This HTTP PATCH request suspends the specified application in API Gateway.", + "operationId": "patchApplication", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "This parameter describes the request payload of an application that is to be updated in API Gateway.", + "required": true, + "schema": { + "$ref": "#/definitions/Application" + }, + "x-examples": { + "application/json": "{\"isSuspended\":\"true\"}" + } + }, + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application that is to be updated in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that the specified application has been successfully updated in API Gateway.", + "schema": { + "$ref": "#/definitions/Application" + } + }, + "400": { + "description": "This status code indicates that the specified application could not be updated" + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + } + }, + "/applications/{applicationId}/apis": { + "get": { + "description": "The method retrieves a list of registered APIs for the specified application in API Gateway.", + "operationId": "getRegisteredApis", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application whose registered APIs are to be retrieved in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that a list of registered APIs for the application is retrieved successfully.", + "examples": { + "application/json": "{\n \"apiIDs\": [\n \"2aa651f4-2696-425b-96c4-440ad78b0305\"\n ]\n}" + } + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "post": { + "description": "This HTTP request registers the APIs with the specified application in API Gateway.", + "operationId": "registerApis", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "This parameter specifies the IDs of the APIs for registering in an application in API Gateway.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "x-examples": { + "application/json": "{\"apiIDs\":[\"3de85431-d45b-418d-b5aa-0be5c3b5714d\"]}" + } + }, + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application for registering APIs in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that the given APIs have been successfully registered with the specified application in API Gateway.", + "examples": { + "application/json": "{}" + } + }, + "400": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway" + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "put": { + "description": "This HTTP request updates the registered APIs of the specified application.", + "operationId": "updateRegisteredApis", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "This parameter specifies the ID of a registered API that is to be updated in API Gateway.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "x-examples": { + "application/json": "{\"apiIDs\":[\"3de85431-d45b-418d-b5aa-0be5c3b5714d\"]}" + } + }, + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application for updating the details of the registered APIs in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that the registered API has been successfully updated in API Gateway." + }, + "400": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway." + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "delete": { + "description": "The method unregisters the APIs from the specified application in API Gateway.", + "operationId": "unregisterApis", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "apiIDs", + "in": "query", + "description": "This parameter specifies the IDs of APIs that are to be unregistered from the specified application in API Gateway.", + "required": true, + "type": "string" + }, + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application for unregistering the associated APIs in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "204": { + "description": "This status code indicates that APIs are successfully unregistered from the specified application in API Gateway." + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + } + }, + "/applications/{applicationId}/accessTokens": { + "get": { + "description": "The method retrieves a map of access token endpoints for all the authorization servers configured", + "operationId": "getAccessTokenEndpoints", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application whose access token endpoints are to be retrieved from API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that a list of access token endpoints for the application are retrieved successfully.", + "examples": { + "application/json": "{\n \"local\": {\n \"uris\": {\n \"authorizeUrl\": \"http://vm:5555/invoke/pub.apigateway.oauth2/authorize\",\n \"accessTokenUrl\": \"http://vm:5555/invoke/pub.apigateway.oauth2/getAccessToken\",\n \"refreshTokenUrl\": \"http://vm:5555/invoke/pub.oauth/refreshAccessToken\"\n }\n }\n}" + } + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "post": { + "description": "The method regenerates the access tokens (only API Key) of an application. In the payload, you either specify type = apiAccessKeyCredentials or type = all. For OAuth, you cannot regenerate the application credentials using this API. You will have to delete the strategy and create a new one.", + "operationId": "regenerateAccessTokens", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application for generating the access Tokens in API Gateway.", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "This parameter specifies the type of token to be regenerated.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "This status code indicates that the access tokens are successfully regenerated for the application in API Gateway." + }, + "400": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway" + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "delete": { + "description": "The method clears the access tokens from the specified application in API Gateway.", + "operationId": "clearAccessTokens", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "This parameter specifies the ID of an application for which the access tokesn needs to cleared", + "required": true, + "type": "string" + } + ], + "responses": { + "204": { + "description": "This status code indicates that APIs are successfully unregistered from the specified application in API Gateway." + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that an application with the given ID could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + } + }, + "/applications/_search": { + "get": { + "description": "The method retrieves a list of available applications in API Gateway based on the search query parameters.", + "operationId": "searchApplications", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "This parameter specifies the IDs of applications whose details are to be retrieved in API Gateway.", + "required": false, + "type": "string" + }, + { + "name": "idsToExclude", + "in": "query", + "description": "This parameter specifies the IDs of applications whose details are to be removed while retrieving other applications in API Gateway.", + "required": false, + "type": "string" + }, + { + "name": "from", + "in": "query", + "description": "This parameter specifies the last updated date in milliseconds. The applications whose last updated date greater than or equal to this are to be retrieved in API Gateway.", + "required": false, + "type": "number" + } + ], + "responses": { + "200": { + "description": "This status code indicates that the details of the specified applications are retrieved successfully.", + "schema": { + "$ref": "#/definitions/Application" + } + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that an application with the given search parameters could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + } + }, + "/strategies": { + "get": { + "description": "The method retrieves a list of all strategies in API Gateway.", + "operationId": "getStrategies", + "produces": [ + "application/json" + ], + "parameters": [], + "responses": { + "200": { + "description": "This status code indicates that the list of strategies is successfully retrieved.", + "schema": { + "$ref": "#/definitions/OneOfStrategyModel" + }, + "examples": { + "application/json": "{\n \"strategies\": [\n {\n \"id\": \"e1f151e1-3210-4283-992b-b3f1d1cf6a92\",\n \"type\": \"OAUTH2\",\n \"authServerAlias\": \"local\",\n \"name\": \"test-oauth2-strategy\",\n \"description\": \"\",\n \"clientId\": \"e65b0fe2-d73d-4ea7-a92a-20c949e08235\",\n \"dcrConfig\": {\n \"allowedGrantTypes\": [\n \"authorization_code\",\n \"password\"\n ],\n \"applicationType\": \"WEB\",\n \"clientType\": \"PUBLIC\",\n \"clientName\": \"test-oauth2-strategy\",\n \"clientVersion\": \"1.0\",\n \"expirationInterval\": \"3600\",\n \"refreshCount\": \"0\",\n \"redirectUris\": [\n \"https://redirect.uri\"\n ]\n },\n \"clientRegistration\": {\n \"clientId\": \"e65b0fe2-d73d-4ea7-a92a-20c949e08235\",\n \"name\": \"test-oauth2-strategy\",\n \"version\": \"1.0\",\n \"type\": \"public\",\n \"tokenLifetime\": 3600,\n \"tokenRefreshLimit\": 0,\n \"clientSecret\": \"f3d2edb1-0bf4-47a8-9e34-775c1a943e70\",\n \"enabled\": true,\n \"redirectUris\": [\n \"https://redirect.uri\"\n ],\n \"clScopes\": [],\n \"authCodeAllowed\": true,\n \"implicitAllowed\": false,\n \"clientCredentialsAllowed\": false,\n \"resourceOwnerAllowed\": true\n }\n }\n ]\n}" + } + }, + "401": { + "description": "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "post": { + "description": "The method creates a strategy in API Gateway. The API request body must contain the payload for the strategy", + "operationId": "createStrategy", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "This parameter describes the request payload of a strategy that is to be created in API Gateway.", + "required": true, + "schema": { + "$ref": "#/definitions/OneOfStrategyModel" + }, + "x-examples": { + "application/json": "{\n\"name\": \"Test\",\n\"description\": \"\",\n\"authServerAlias\": \"local\",\n\"type\": \"OAUTH2\",\n\"dcrConfig\": {\n\"allowedGrantTypes\": [\"authorization_code\",\n\"password\",\n\"implicit\"],\n\"scopes\": [],\n\"redirectUris\": [\"http://vm:5555/redirect\"],\n\"authServer\": \"local\",\n\"applicationType\": \"WEB\",\n\"clientType\": \"PUBLIC\",\n\"expirationInterval\": 3600,\n\"refreshCount\": \"0\"\n}\n} " + } + } + ], + "responses": { + "200": { + "description": "The method creates a strategy in API Gateway. The API request body must contain the payload for the strategy", + "schema": { + "$ref": "#/definitions/OneOfStrategyModel" + }, + "examples": { + "application/json": "{\n \"strategy\": {\n \"id\": \"370f88ca-205e-45df-8e16-998088f32dc2\",\n \"type\": \"OAUTH2\",\n \"authServerAlias\": \"local\",\n \"name\": \"Test\",\n \"description\": \"\",\n \"clientId\": \"2b54de1c-a8fa-4965-a832-cacf6b656012\",\n \"dcrConfig\": {\n \"allowedGrantTypes\": [\n \"authorization_code\",\n \"password\",\n \"implicit\"\n ],\n \"applicationType\": \"WEB\",\n \"clientType\": \"PUBLIC\",\n \"clientName\": \"Test\",\n \"clientVersion\": \"1.0\",\n \"expirationInterval\": \"3600\",\n \"refreshCount\": \"0\",\n \"redirectUris\": [\n \"http://vm:5555/redirect\"\n ]\n },\n \"clientRegistration\": {\n \"clientId\": \"2b54de1c-a8fa-4965-a832-cacf6b656012\",\n \"name\": \"Test\",\n \"version\": \"1.0\",\n \"type\": \"public\",\n \"tokenLifetime\": 3600,\n \"tokenRefreshLimit\": 0,\n \"clientSecret\": \"6a3d98c3-e5b0-47fc-9acf-b454401cd87d\",\n \"enabled\": true,\n \"redirectUris\": [\n \"http://vm:5555/redirect\"\n ],\n \"clScopes\": [],\n \"authCodeAllowed\": true,\n \"implicitAllowed\": true,\n \"clientCredentialsAllowed\": false,\n \"resourceOwnerAllowed\": true\n }\n }\n}" + } + }, + "400": { + "description": "This status code indicates that a strategy with the given ID already exists in API Gateway" + }, + "401": { + "description": "This status code indicates that either the user didn't provide right credentials or the user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "delete": { + "description": "The method deletes the specified strategy in API Gateway.", + "operationId": "deleteStrategy", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "This parameter specifies the ID of a strategy that is to be deleted in API Gateway.", + "required": false, + "type": "string" + } + ], + "responses": { + "204": { + "description": "This status code indicates that the specified strategy has been successfully deleted from API Gateway." + }, + "401": { + "description": "This status code indicates that either the user didn't provide right credentials or the user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that a strategy with the given ID could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + } + }, + "/strategies/{strategyId}": { + "get": { + "description": "The method retrieves the details of a specified strategy in API Gateway", + "operationId": "getStrategy", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "strategyId", + "in": "path", + "description": "This parameter specifies the ID of a strategy whose details are to be retrieved in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that the details of the specified strategy are retrieved successfully.", + "schema": { + "$ref": "#/definitions/OneOfStrategyModel" + } + }, + "401": { + "description": "This status code indicates that either the user didn't provide right credentials or the user doesn't have required privileges to access this API." + }, + "404": { + "description": "This status code indicates that a strategy with the given ID could not be found in API Gateway." + } + }, + "security": [ + { + "Basic": [] + } + ] + }, + "put": { + "description": "The method updates the property details of the specified strategy in API Gateway.", + "operationId": "updateStrategy", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "This parameter describes the request payload of a strategy that is to be updated in API Gateway.", + "required": true, + "schema": { + "$ref": "#/definitions/OneOfStrategyModel" + } + }, + { + "name": "strategyId", + "in": "path", + "description": "This parameter specifies the ID of a strategy that is to be updated in API Gateway.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "This status code indicates that the specified strategy has been successfully updated in API Gateway.", + "schema": { + "$ref": "#/definitions/OneOfStrategyModel" + } + }, + "400": { + "description": "This status code indicates that the specified strategy could not be updated" + }, + "401": { + "description": "This status code indicates that either the user didn't provide right credentials or the user doesn't have required privileges to access this API." + } + }, + "security": [ + { + "Basic": [] + } + ] + } + } + }, + "securityDefinitions": { + "Basic": { + "description": "API Gateway Administrator and API Gateway provider", + "type": "basic" + } + }, + "definitions": { + "APIAccessKey": { + "type": "object", + "properties": { + "apiAccessKey": { + "type": "string", + "description": "API access key" + }, + "expirationInterval": { + "type": "string", + "description": "expiration interval of the api key" + }, + "expirationDate": { + "type": "string", + "description": "expiration date of the api key" + } + } + }, + "Application": { + "type": "object", + "properties": { + "applicationID": { + "type": "string", + "description": "unique identifier of an application" + }, + "name": { + "type": "string", + "description": "name of the application" + }, + "description": { + "type": "string", + "description": "description of the application" + }, + "owner": { + "type": "string", + "description": "owner of the application" + }, + "identifiers": { + "type": "array", + "description": "list of all application identifiers", + "items": { + "$ref": "#/definitions/ApplicationIdentifier" + } + }, + "contactEmails": { + "type": "array", + "description": "list of email contacts", + "items": { + "type": "string" + } + }, + "iconbyteArray": { + "type": "string", + "description": "application icon byte array" + }, + "accessTokens": { + "description": "access tokens associated with the application", + "$ref": "#/definitions/ApplicationToken" + }, + "creationDate": { + "type": "string", + "description": "application creation time" + }, + "lastModified": { + "type": "string", + "description": "last modified time of the application" + }, + "lastUpdated": { + "type": "integer", + "format": "int64", + "description": "last modified time of the application in milliseconds" + }, + "siteURLs": { + "type": "array", + "description": "list of all site URLs", + "items": { + "type": "string" + } + }, + "jsOrigins": { + "type": "array", + "description": "list of all javascript origins", + "items": { + "type": "string" + } + }, + "version": { + "type": "string" + }, + "isSuspended": { + "type": "boolean", + "description": "holds the suspended state of an application" + }, + "authStrategyIds": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "subscription": { + "type": "boolean" + } + } + }, + "ApplicationIdentifier": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "unique identifier of the application identifier" + }, + "key": { + "type": "string", + "description": "identifier type, one of [apiKey, httpBasicAuth, token,kerberosToken,oAuth2Token,openIdClaims,jwtClaims,wssecX509Token,wssecUsernameToken, httpsCertificate,payloadElement,hostNameAddress, ipAddressRange, XPathExpression,partnerId]" + }, + "name": { + "type": "string", + "description": "name of the identifier" + }, + "value": { + "type": "array", + "description": "list of identifier values", + "items": { + "type": "string" + } + } + } + }, + "ApplicationToken": { + "type": "object", + "properties": { + "apiAccessKey": { + "description": "the API KEY access credentials", + "$ref": "#/definitions/APIAccessKey" + }, + "oauth2Token": { + "$ref": "#/definitions/OAuth2Token" + } + } + }, + "OAuth2Token": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "type of the oauth2 client" + }, + "clientId": { + "type": "string", + "description": "unique identifier of the oauth2 client" + }, + "clientSecret": { + "type": "string", + "description": "the client secret" + }, + "clientName": { + "type": "string", + "description": "the name of the client" + }, + "scopes": { + "type": "array", + "description": "the scopes associated with the client", + "items": { + "type": "string" + } + }, + "expirationInterval": { + "type": "string", + "description": "the expiration interval" + }, + "refreshCount": { + "type": "string", + "description": "number of times an access token can be refreshed" + }, + "redirectUris": { + "type": "array", + "description": "list of redirect uris", + "items": { + "type": "string" + } + } + } + }, + "ClientRegistration": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "type": { + "type": "string" + }, + "tokenLifetime": { + "type": "integer", + "format": "int32" + }, + "tokenRefreshLimit": { + "type": "integer", + "format": "int32" + }, + "clientSecret": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "notes": { + "type": "string" + }, + "redirectUris": { + "type": "array", + "items": { + "type": "string" + } + }, + "clScopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "authCodeAllowed": { + "type": "boolean" + }, + "implicitAllowed": { + "type": "boolean" + }, + "clientCredentialsAllowed": { + "type": "boolean" + }, + "resourceOwnerAllowed": { + "type": "boolean" + }, + "approvalpgTitle": { + "type": "string" + }, + "approvalpgHeading": { + "type": "string" + }, + "approvalpgLogoFilename": { + "type": "string" + }, + "approvalpgFooter": { + "type": "string" + }, + "approvalpgFilename": { + "type": "string" + } + } + }, + "DynamicClientRegistrationConfig": { + "type": "object", + "properties": { + "allowedGrantTypes": { + "type": "array", + "description": "grant types to be allowed for this client", + "items": { + "type": "string", + "enum": [ + "authorization_code", + "password", + "client_credentials", + "refresh_token", + "implicit" + ] + } + }, + "applicationType": { + "type": "string", + "description": "type of the application", + "enum": [ + "WEB", + "NATIVE", + "USER_AGENT_BASED" + ] + }, + "clientType": { + "type": "string", + "description": "specifies whether the client is either public or confidential client", + "enum": [ + "PUBLIC", + "CONFIDENTIAL" + ] + }, + "clientId": { + "type": "string", + "description": "The client id" + }, + "clientSecret": { + "type": "string", + "description": "The client secret" + }, + "clientName": { + "type": "string", + "description": "The client name" + }, + "clientVersion": { + "type": "string", + "description": "The client version" + }, + "expirationInterval": { + "type": "string", + "description": "Token expiry time" + }, + "refreshCount": { + "type": "string", + "description": "The number of times token can be refreshed" + }, + "redirectUris": { + "type": "array", + "description": "The redirect uris", + "items": { + "type": "string" + } + } + } + }, + "JWTHSAuthStrategy": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the strategy", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The type of the strategy", + "enum": [ + "JWT_RSA", + "JWT_HSA", + "OPENID_CONNECT_RSA", + "OPENID_CONNECT_HSA", + "OAUTH2", + "OAUTH2_LOCAL_RSA", + "OAUTH2_LOCAL_HSA", + "COMPOSITE" + ] + }, + "authServerAlias": { + "type": "string", + "description": "The name of the authorization server alias" + }, + "name": { + "type": "string", + "description": "The name of the strategy" + }, + "description": { + "type": "string" + }, + "audience": { + "type": "string" + }, + "secret": { + "type": "string" + } + } + }, + "JWTRSAuthStrategy": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the strategy", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The type of the strategy", + "enum": [ + "JWT_RSA", + "JWT_HSA", + "OPENID_CONNECT_RSA", + "OPENID_CONNECT_HSA", + "OAUTH2", + "OAUTH2_LOCAL_RSA", + "OAUTH2_LOCAL_HSA", + "COMPOSITE" + ] + }, + "authServerAlias": { + "type": "string", + "description": "The name of the authorization server alias" + }, + "name": { + "type": "string", + "description": "The name of the strategy" + }, + "description": { + "type": "string" + }, + "audience": { + "type": "string" + } + } + }, + "OAuth2LocalHSIntrospectionStrategy": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the strategy", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The type of the strategy", + "enum": [ + "JWT_RSA", + "JWT_HSA", + "OPENID_CONNECT_RSA", + "OPENID_CONNECT_HSA", + "OAUTH2", + "OAUTH2_LOCAL_RSA", + "OAUTH2_LOCAL_HSA", + "COMPOSITE" + ] + }, + "authServerAlias": { + "type": "string", + "description": "The name of the authorization server alias" + }, + "name": { + "type": "string", + "description": "The name of the strategy" + }, + "description": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "dcrConfig": { + "$ref": "#/definitions/DynamicClientRegistrationConfig" + }, + "clientRegistration": { + "$ref": "#/definitions/ClientRegistration" + }, + "secret": { + "type": "string" + } + } + }, + "OAuth2LocalRSIntrospectionStrategy": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the strategy", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The type of the strategy", + "enum": [ + "JWT_RSA", + "JWT_HSA", + "OPENID_CONNECT_RSA", + "OPENID_CONNECT_HSA", + "OAUTH2", + "OAUTH2_LOCAL_RSA", + "OAUTH2_LOCAL_HSA", + "COMPOSITE" + ] + }, + "authServerAlias": { + "type": "string", + "description": "The name of the authorization server alias" + }, + "name": { + "type": "string", + "description": "The name of the strategy" + }, + "description": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "dcrConfig": { + "$ref": "#/definitions/DynamicClientRegistrationConfig" + }, + "clientRegistration": { + "$ref": "#/definitions/ClientRegistration" + } + } + }, + "OAuth2RemoteIntrospectionAuthStrategy": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the strategy", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The type of the strategy", + "enum": [ + "JWT_RSA", + "JWT_HSA", + "OPENID_CONNECT_RSA", + "OPENID_CONNECT_HSA", + "OAUTH2", + "OAUTH2_LOCAL_RSA", + "OAUTH2_LOCAL_HSA", + "COMPOSITE" + ] + }, + "authServerAlias": { + "type": "string", + "description": "The name of the authorization server alias" + }, + "name": { + "type": "string", + "description": "The name of the strategy" + }, + "description": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "dcrConfig": { + "$ref": "#/definitions/DynamicClientRegistrationConfig" + }, + "clientRegistration": { + "$ref": "#/definitions/ClientRegistration" + } + } + }, + "OneOfStrategyModel": { + "type": "object", + "properties": { + "JWT_HSA": { + "$ref": "#/definitions/JWTHSAuthStrategy" + }, + "JWT_RSA": { + "$ref": "#/definitions/JWTRSAuthStrategy" + }, + "OPENID_CONNECT_HSA": { + "$ref": "#/definitions/OAuth2LocalHSIntrospectionStrategy" + }, + "OPENID_CONNECT_RSA": { + "$ref": "#/definitions/OAuth2LocalRSIntrospectionStrategy" + }, + "OAUTH2": { + "$ref": "#/definitions/OAuth2RemoteIntrospectionAuthStrategy" + }, + "OAUTH2_LOCAL_RSA": { + "$ref": "#/definitions/OpenIDConnectRSAuthStrategy" + }, + "OAUTH2_LOCAL_HSA": { + "$ref": "#/definitions/OpenIDConnectHSAuthStrategy" + } + } + }, + "OpenIDConnectHSAuthStrategy": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the strategy", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The type of the strategy", + "enum": [ + "JWT_RSA", + "JWT_HSA", + "OPENID_CONNECT_RSA", + "OPENID_CONNECT_HSA", + "OAUTH2", + "OAUTH2_LOCAL_RSA", + "OAUTH2_LOCAL_HSA", + "COMPOSITE" + ] + }, + "authServerAlias": { + "type": "string", + "description": "The name of the authorization server alias" + }, + "name": { + "type": "string", + "description": "The name of the strategy" + }, + "description": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "dcrConfig": { + "$ref": "#/definitions/DynamicClientRegistrationConfig" + }, + "clientRegistration": { + "$ref": "#/definitions/ClientRegistration" + }, + "clientSecret": { + "type": "string" + } + } + }, + "OpenIDConnectRSAuthStrategy": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A unique ID for the strategy", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The type of the strategy", + "enum": [ + "JWT_RSA", + "JWT_HSA", + "OPENID_CONNECT_RSA", + "OPENID_CONNECT_HSA", + "OAUTH2", + "OAUTH2_LOCAL_RSA", + "OAUTH2_LOCAL_HSA", + "COMPOSITE" + ] + }, + "authServerAlias": { + "type": "string", + "description": "The name of the authorization server alias" + }, + "name": { + "type": "string", + "description": "The name of the strategy" + }, + "description": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "dcrConfig": { + "$ref": "#/definitions/DynamicClientRegistrationConfig" + }, + "clientRegistration": { + "$ref": "#/definitions/ClientRegistration" + } + } + } + } } \ No newline at end of file diff --git a/apigatewayservices/APIGatewayArchive.json b/apigatewayservices/APIGatewayArchive.json index 5a73c6f..74aa436 100644 --- a/apigatewayservices/APIGatewayArchive.json +++ b/apigatewayservices/APIGatewayArchive.json @@ -1,517 +1,289 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "The API Gateway archive service exposes the interface to the API Gateway export archives. An API Gateway export archive is a ZIP file that contains APIs, policies, global policies, users, groups, access profiles, aliases, keystores, trustores, ports, JMS connections, JMS providers, JMS triggers, service registries, various administrative configurations like approval configurations, keystore/trustore configurations, cache configurations, log configurations, LDAP configurations, user account settings and all the other assets in API Gateway. You can use this service to export/import all type of assets into API Gateway. \n\n In general, for any asset being exported, all the dependent assets are automatically exported. For example, when exporting APIs, the export archive contains the APIs, the API level policies, the policy actions associated with the API level policies, and the aliases referenced by the policy actions. Additionally, the archive may also contain the applications registered to the exported APIs.\n When exporting global policy the archive contains the global policies, the policy actions associated with the global policies, and the aliases referenced to the policy actions.\n When exporting approval configuration the archive contains the approval configuration and the access profile associated with the approval configuration. \n When exporting port the archive contains the port, the keystore and trustore associated with the port. \n When exporting LDAP configuration the archive contains the LDAP configuration, the group associated with the LDAP configuration. \n\nEach artifact in an archive is associated with a universally unique identifier (UUID) across all API Gateway installations. When importing an archive, the UUID helps in determining whether the corresponding artifact is already available in API Gateway. In such a situation, you can specify whether to overwrite an already existing artifact during the import process. \n\n Any user with the 'Export assets' functional privilege can export archives in API Gateway and any user with the 'Import assets' privilege can import the archives. By default, the users who are part of API-Gateway-Administrators group will have these privileges.", - "version" : "10.7", - "title" : "API Gateway Archive Service" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "application/json", "application/zip" ], - "produces" : [ "application/json", "application/zip" ], - "paths" : { - "/archive" : { - "get" : { - "description" : "The GET method exports an archive. The result of the GET request is an archive in a ZIP format. \n This Method supports exporting API, Application, Alias,Policy, Policy Action, Keystore, Truststore, Kerberos, User, Group, Team, JMS Connection, JNDI Provider, JMS Trigger, Webservice Endpoint Alias, Approval Configuration, Outbound Proxy, URL alias, Plan and Package. \n This GET method can be used for exporting specific type of assets and its optional/soft dependant assets by specifying the asset name and corresponding include options in query parameter. \n For example, for an API, the Application assets (used by the API) are soft dependant of that API. To export the dependant applications of an API use the query param 'include-applications'.If 'include-applications' is not provided, the export archive will contains only the APIs. \n Refer 'Parameters' section for the usage of each include parameters.\n\n\n Use the POST /archive method to export all the assets in API Gateway.", - "operationId" : "exportApiGatewayAssets", - "consumes" : [ "application/json" ], - "produces" : [ "multipart/form-data" ], - "parameters" : [ { - "name" : "include-applications", - "in" : "query", - "description" : "This parameter indicates whether you want to export the applications associated with the\nAPIs", - "required" : false, - "type" : "string", - "x-example" : "include-applications=true" - }, { - "name" : "include-users", - "in" : "query", - "description" : "This parameter indicates whether you want to export users associated with the groups and/or with the password expiry settings", - "required" : false, - "type" : "string", - "x-example" : "include-users=true" - }, { - "name" : "include-groups", - "in" : "query", - "description" : "This parameter indicates whether you want to export groups associated with the teams", - "required" : false, - "type" : "string", - "x-example" : "include-groups=true" - }, { - "name" : "include-truststores", - "in" : "query", - "description" : "This parameter indicates whether you want to export truststore alias associated with the email configuration", - "required" : false, - "type" : "string", - "x-example" : "include-truststores=true" - }, { - "name" : "policies", - "in" : "query", - "description" : "This parameter identifies the policies to be exported. The wildcard \"*\" selects all the policies. \nFor example a single policy can be exported with its id using the following request:\nGET /rest/apigateway/archive?policies=07b8d7b7-20b7-422e-8464-4b19d405c41a\n\nWhereas, all the policies can be exported using the following request:\nGET /rest/apigateway/archive?policies=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "policies=07b8d7b7-20b7-422e-8464-4b19d405c41a" - }, { - "name" : "apis", - "in" : "query", - "description" : "This parameter identifies the APIs to be exported. The wildcard \"*\" selects all the APIs. \nFor example a single API can be exported using the following request:\nGET /rest/apigateway/archive?apis=e2996867-af49-4ac6-98e7-cba48837c13e\n\nWhereas, all the APIs can be exported using the following request:\nGET /rest/apigateway/archive?apis=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "apis=e2996867-af49-4ac6-98e7-cba48837c13e" - }, { - "name" : "aliases", - "in" : "query", - "description" : "This parameter identifies the aliases to be exported. \nThe wildcard \"*\" selects all aliases.\nFor example, a single alias can be exported using the following requrest:\nGET /rest/apigateway/archive?aliases=d1885756-9e38-39b5-87d6-ba937726b02d\n\nWhereas, all the APIs can be exported using the following request:\nGET /rest/apigateway/archive?alias=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "aliases=d1885756-9e38-39b5-87d6-ba937726b02d" - }, { - "name" : "applications", - "in" : "query", - "description" : "This parameter identifies the applications to be exported. \nThe wildcard \"*\" selects all applications.\nFor example, a single application can be exported using the following requrest:\nGET /rest/apigateway/archive?applications=d1885756-9e38-39b5-87d6-ba937726b02d\n\nWhereas, all the applications can be exported using the following request:\nGET /rest/apigateway/archive?applications=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "applications=d1885756-9e38-39b5-87d6-ba937726b02d" - }, { - "name" : "policyActions", - "in" : "query", - "description" : "This parameter identifies the policy actions to be exported. \nThe wildcard \"*\" selects all policy actions.\nFor example, a single policy action can be exported using the following request:\n GET /rest/apigateway/archive?policyActions=20ca1e24-d6b2-430d-adf8-7a53a6cbaa53\n\nWhereas, all the policy actions can be exported using the following request:\nGET /rest/apigateway/archive?policyActions=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "policyActions=20ca1e24-d6b2-430d-adf8-7a53a6cbaa53,c98805c4-9c05-47c0-84f0-c0855c0a9032" - }, { - "name" : "approvalConfigurations", - "in" : "query", - "description" : "This parameter identifies the approval configurations to be exported. \nThe wildcard \"*\" selects all approval configurations.\nFor example, a single approval configuration can be exported using the following request:\nGET /rest/apigateway/archive?approvalConfigurations=createApplication\n\nWhereas, all the approval configurations can be exported using the following request:\n GET /rest/apigateway/archive?approvalConfigurations=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string", - "enum" : [ "createApplication", "updateApplication", "registerApplication", "subscribePackage" ] - }, - "collectionFormat" : "multi", - "x-example" : "approvalConfigurations=createApplication" - }, { - "name" : "outboundProxies", - "in" : "query", - "description" : "This parameter identifies the outbound proxy aliases to be exported. outbound proxy aliases are idetified with it's name.\nThe wildcard \"*\" selects all the outbound proxy aliases. \nFor example a single outbound proxy alias can be exported using the following request:\nGET /rest/apigateway/archive?outboundProxies=testOutboundProxyAlias\n\nWhereas, all the outbound proxy aliases can be exported using the following request:\nGET /rest/apigateway/archive?outboundProxies=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "outboundProxies=testOutboundProxyAlias" - }, { - "name" : "urlAliases", - "in" : "query", - "description" : "This parameter identifies the URL aliases to be exported. URL aliases are idetified with it's name.\nThe wildcard \"*\" selects all the URL aliases. \nFor example, a single URL alias can be exported using the following request:\nGET /rest/apigateway/archive?urlAliases=testUrlAlias\n\nWhereas, all the URL aliases can be exported using the following request:\nGET /rest/apigateway/archive?testUrlAlias=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "urlAliases=testUrlAlias" - }, { - "name" : "keyStores", - "in" : "query", - "description" : "This parameter identifies the keystore aliases to be exported. Keystore aliases are idetified with it's name.\nThe wildcard \"*\" selects all the keystore aliases. \nFor example, a single keystore alias can be exported using the following request:\nGET /rest/apigateway/archive?keyStores=test_keystore\n\nWhereas, all the keystore aliases can be exported using the following request:\nGET /rest/apigateway/archive?keyStores=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "keyStores=test_keystore" - }, { - "name" : "trustStores", - "in" : "query", - "description" : "This parameter identifies the truststore aliases to be exported. Truststore aliases are idetified with it's name.\nThe wildcard \"*\" selects all the truststore aliases. \nFor example, a single truststore alias can be exported using the following request:\nGET /rest/apigateway/archive?trustStores=test_truststore\n\nWhereas, all the truststore aliases can be exported using the following request:\nGET /rest/apigateway/archive?trustStores=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "trustStores=test_truststore" - }, { - "name" : "JNDIProviderAliases", - "in" : "query", - "description" : "This parameter identifies the JNDI provider aliases to be exported. JNDI provider aliases are idetified with it's name.\nThe wildcard \"*\" selects all the JNDI provider aliases. \nFor example, a single JNDI provider alias can be exported using the following request:\nGET /rest/apigateway/archive?JNDIProviderAliases=test_jndiProviderAlias\n\nWhereas, all the JNDI provider aliases can be exported using the following request:\nGET /rest/apigateway/archive?JNDIProviderAliases=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "JNDIProviderAliases=test_jndiProviderAlias" - }, { - "name" : "JMSConnectionAliases", - "in" : "query", - "description" : "This parameter identifies the JMS connection aliases to be exported. JMS connection aliases are idetified with it's name.\nThe wildcard \"*\" selects all the JNDI provider aliases. \nFor example, a single JNDI provider alias can be exported using the following request:\nGET /rest/apigateway/archive?JMSConnectionAliases=test_jmsConnectionAlias\n\nWhereas, all the JMS connection aliases can be exported using the following request:\nGET /rest/apigateway/archive?JMSConnectionAliases=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "JMSConnectionAliases=test_jmsConnectionAlias" - }, { - "name" : "JMSTriggers", - "in" : "query", - "description" : "This parameter identifies the JMS triggers to be exported. JMS triggers are idetified with it's name.\nThe wildcard \"*\" selects all the JMS triggers. \nFor example, a single JMS trigger can be exported using the following request:\nGET /rest/apigateway/archive?JMSTriggers=test_jmsTrigger\n\nWhereas, all the JMS triggers can be exported using the following request:\nGET /rest/apigateway/archive?JMSTriggers=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "JMSTriggers=test_jmsTrigger" - }, { - "name" : "webserviceEndpointAliases", - "in" : "query", - "description" : "This parameter identifies the 'web service endpoint' aliases to be exported. Web service endpoint aliases are idetified with it's name.\nThe wildcard \"*\" selects all the web service endpoint aliases. \nFor example, a single web service endpoint alias can be exported using the following request:\nGET /rest/apigateway/archive?webserviceEndpointAliases=test_wsEndpointAlias\n\nWhereas, all the JMS triggers can be exported using the following request:\nGET /rest/apigateway/archive?webserviceEndpointAliases=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "webserviceEndpointAliases=test_wsEndpointAlias" - }, { - "name" : "users", - "in" : "query", - "description" : "This parameter identifies the users to be exported. \nThe wildcard \"*\" selects all the users. \nFor example, a single user can be exported using the following request:\nGET /rest/apigateway/archive?users=7a6d3d40-44d8-4ab1-83df-5be63cdbae54\n\nWhereas, all the users can be exported using the following request:\nGET /rest/apigateway/archive?users=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "users=7a6d3d40-44d8-4ab1-83df-5be63cdbae54" - }, { - "name" : "groups", - "in" : "query", - "description" : "This parameter identifies the groups to be exported. \nThe wildcard \"*\" selects all the groups. \nFor example, a single group can be exported using the following request:\nGET /rest/apigateway/archive?groups=d6b38ff8-59a8-47bf-9fba-0bdb24ee5b48\n\nWhereas, all the groups can be exported using the following request:\nGET /rest/apigateway/archive?groups=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "groups=d6b38ff8-59a8-47bf-9fba-0bdb24ee5b48" - }, { - "name" : "accessProfiles", - "in" : "query", - "description" : "This parameter identifies the teams to be exported. \nThe wildcard \"*\" selects all the teams. \nFor example, a single team can be exported using the following request:\nGET /rest/apigateway/archive?accessProfiles=d6b38ff8-59a8-47bf-9fba-0bdb24ee5b48\n\nWhereas, all the teams can be exported using the following request:\nGET /rest/apigateway/archive?accessProfiles=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "accessProfiles=836fd806-4845-452f-9d7a-7e619e40a70e" - }, { - "name" : "kerberosSetting", - "in" : "query", - "description" : "This parameter identifies the kerberos configuration to be exported.\nThe kerberos configuration can be exported using the following request:\nGET /rest/apigateway/archive?kerberosSetting=kerberosSetting", - "required" : false, - "type" : "string", - "x-example" : "kerberosSetting=kerberosSetting", - "enum" : [ "kerberosSetting" ] - }, { - "name" : "plans", - "in" : "query", - "description" : "This parameter identifies the plans to be exported. \nThe wildcard \"*\" selects all the plans. \nFor example, a single plan can be exported using the following request:\nGET /rest/apigateway/archive?plans=86d58023-be4b-4735-a08f-14e78131ce4a\n\nWhereas, all the plans can be exported using the following request:\nGET /rest/apigateway/archive?plans=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "plans=86d58023-be4b-4735-a08f-14e78131ce4a" - }, { - "name" : "packages", - "in" : "query", - "description" : "This parameter identifies the packages to be exported. \nThe wildcard \"*\" selects all the packages. \nFor example, a single package can be exported using the following request:\nGET /rest/apigateway/archive?packages=73c93393-1477-4a99-9e44-c9b3e679de0c\n\nWhereas, all the packages can be exported using the following request:\nGET /rest/apigateway/archive?packages=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string" - }, - "collectionFormat" : "multi", - "x-example" : "packages=73c93393-1477-4a99-9e44-c9b3e679de0c" - }, { - "name" : "configurations", - "in" : "query", - "description" : "This parameter identifies the configurations to be exported. \nThe wildcard \"*\" selects all the configurations. \nFor example, a single configuration can be exported using the following request:\nGET /rest/apigateway/archive?configurations=loadBalancer,customContentTypes\n\nWhereas, all the configurations can be exported using the following request:\nGET /rest/apigateway/archive?configurations=*", - "required" : false, - "type" : "array", - "items" : { - "type" : "string", - "enum" : [ "loadBalancer", "keystore", "mobileApp", "extended", "samlsso", "misc", "dashboard", "customContentTypes", "errorProcessing", "auditlogDestinationConfig", "gatewayDestinationConfig", "jdbcDestinationConfig", "desDestinationConfig", "elasticsearchDestinationConfig", "snmpDestinationConfig", "emailDestinationConfig", "apiPortalDestinationConfig", "samlIssuer", "logConfig", "passwordRestrictions", "passwordExpiry", "accountLockSettings", "ldapConfig", "settings", "cache", "apiCallBackSettings" ] - }, - "collectionFormat" : "multi", - "x-example" : "configurations=loadBalancer,customContentTypes" - } ], - "responses" : { - "200" : { - "description" : "This response indicates that the archive is created successfully. The response body is the zipped archive." - }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "400" : { - "description" : "This response indicates that a request is incorrect. This can be due to identifiers that cannot be resolved." - }, - "500" : { - "description" : "This response indicates that the server has encountered an error while exporting API Gateway Asset" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "This method can be used for importing the API Gateway archive as well as exporting the assets as an archive. If the request is made with x-HTTP-Method-Override HTTP header with value as GET, then this method will export asset. It will require the body param using which you can specify the filtering criteria and include options for the API Gateway assets that need to be exported. \n\n If the HTTP header is not specified, then this method can be used to import the API Gateway archive. You can control the import settings with overwrite and preserveAssetState query parameters.\n\n Here are some sample payloads for different export scenarios. \n\n 1. Export all API Gateway assets. \n Payload: {} \n\n 2. Export all APIs \n Payload: { \"types\": [\"api\"] } \n\n 3. Export all APIs with registered Application \n Payload: {\r\n\"types\" : [\"api\"],\r\n\"includeOptions\" :{\r\n\"includeApplications\" :false\r\n}\r\n} \n\n 4. Export only APIs with name contains \"API Gateway\" \n Payload: {\r\n\"types\" : [\"api\"],\r\n\"scope\" : [\r\n{\"attributeName\" : \"apiName\",\r\n\"keyword\" : \".*API Gateway.*\"\r\n}],\r\n\"includeOptions\" :{\r\n\"includeApplications\" :false\r\n}\r\n} \n\n 5. Export API with specific ids only \n Payload: {\r\n\"types\" : [\"api\"],\r\n\"scope\" : [\r\n{\"attributeName\" : \"id\",\r\n\"keyword\" : \"1c36033a-ecb6-41ce-ad66-bada5cebe85e|8d505388-5524-4df5-bd3c-62c4bb5f41d0\"\r\n}],\r\n\"includeOptions\" :{\r\n\"includeApplications\" :true\r\n}\r\n} \n\n 6. Export API with name starts with API Gateway and description contains search \n Payload: {\r\n\"types\" : [\"api\"],\r\n\"scope\" : [\r\n{\"attributeName\" : \"apiName\",\r\n\"keyword\" : \"API Gateway.*\"\r\n},\r\n{\r\n\"attributeName\" : \"apiDescription\",\r\n\"keyword\" : \".*search.*\"\r\n}],\r\n\"condition\" : \"and\",\r\n\"includeOptions\" :{\r\n\"includeApplications\" :false\r\n}\r\n} \n\n 7. Export all Policy \n Payload: {\r\n\"types\" : [\"policy\"]\r\n} \n\n 8. Global Policy Alone \n Payload: {\r\n\"types\" : [\"policy\"],\r\n\"scope\":[\r\n{\r\n\"attributeName\" : \"policyScope\",\r\n\"keyword\" : \"GLOBAL\"\r\n}]\r\n} \n\n 9. Export Threat Protection Rule \n Payload: {\r\n\"types\" : [\"policy\"],\r\n\"scope\":[\r\n{\r\n\"attributeName\" : \"policyEnforcements.stageKey\",\r\n\"keyword\" : \"threatProtection\"\r\n}]\r\n} \n\n 10. Export All Policy Actions \n Payload: {\r\n\"types\" : [\"policy_action\"]\r\n} \n\n 11. Export All Threat Protection rules and policy \n Payload: {\r\n\"types\" : [\"policy_action\", \"policy\"],\r\n\"scope\":[\r\n{\r\n\"attributeName\" : \"policyEnforcements.stageKey\",\r\n\"keyword\" : \"threatProtection\"\r\n}, {\r\n\"attributeName\" : \"id\",\r\n\"keyword\" : \"globalipdos|ipdos\"\r\n}],\r\n\"condition\" : \"or\"\r\n} \n\n 12. Export all aliases \n Payload: {\r\n\"types\" : [\"alias\"]\r\n} \n\n 13. Export all applications \n Payload: {\r\n\"types\" : [\"application\"]\r\n} \n\n 14. Export all application with out including associated APIs \n Payload: {\r\n\"types\" : [\"application\"],\r\n\"includeOptions\" : {\r\n\"includeApis\": false\r\n}\r\n} \n\n 15. Export All Assertions \n Payload: {\r\n\"types\" : [\"assertion\"]\r\n} \n\n 16. Export all API Plans \n Payload: {\r\n\"types\" : [\"plan\"]\r\n} \n\n 17. Export all API Packages \n Payload: {\r\n\"types\" : [\"package\"]\r\n} \n\n 18. Export all packages along with subscription but with out the registered Applications for the associated APIs. \n Payload: {\r\n\"types\" : [\"package\"],\r\n\"includeOptions\":{\r\n\"includeApis\" : false,\r\n\"includeApplications\" : false,\r\n\"includeSubscriptions\" : true\r\n}\r\n} \n\n 19. Export all subscriptions \n Payload: {\r\n\"types\" : [\"subscription\"]\r\n} \n\n 20. Export all Administrator Settings \n Payload: {\r\n\"types\" : [\"administrator_setting\"]\r\n} \n\n 21. Export all approval configurations \n Payload: {\r\n\"types\" : [\"approval_configuration\"]\r\n} \n\n 22. Export all outbound proxy aliases \n Payload: {\r\n\"types\" : [\"outbound_proxy\"]\r\n} \n\n 23. Export all URL aliases \n Payload: {\r\n\"types\" : [\"url_alias\"]\r\n} \n\n 24. Export all keystore aliases \n Payload: {\r\n\"types\" : [\"keystore\"]\r\n} \n\n 25. Export all truststore aliases \n Payload: {\r\n\"types\" : [\"truststore\"]\r\n} \n\n 26. Export all kerberos settings \n Payload: {\r\n\"types\" : [\"kerberos_setting\"]\r\n} \n\n 27. Export all JNDI provider aliases \n Payload: {\r\n\"types\" : [\"jndi_provider_alias\"]\r\n} \n\n 28. Export all JMS connection aliases \n Payload: {\r\n\"types\" : [\"jms_connection_alias\"]\r\n} \n\n 29. Export all JMS triggers \n Payload: {\r\n\"types\" : [\"jms_trigger\"]\r\n} \n\n 30. Export all web service endpoint aliases \n Payload: {\r\n\"types\" : [\"web_service_endpoint_alias\"]\r\n} \n\n 31. Export all users \n Payload: {\r\n\"types\" : [\"users\"]\r\n} \n\n 32. Export all groups \n Payload: {\r\n\"types\" : [\"groups\"]\r\n} \n\n 33. Export all teams \n Payload: {\r\n\"types\" : [\"accessprofiles\"]\r\n}", - "operationId" : "importExportAPIGatewayAssets", - "consumes" : [ "multipart/form-data", "application/json" ], - "produces" : [ "application/json", "multipart/form-data" ], - "parameters" : [ { - "name" : "overwrite", - "in" : "query", - "description" : "This parameter specifies the import option to define the artifact types that can be overwritten during import. The parameter enables you to specify overwriting of APIs, policies, policy actions, aliases, applications, configurations, approval configurations, outbound proxies, URL aliases, keyStores, trustStores, JNDI provider aliases, JMS connection aliases, JMS triggers, webservice endpoint aliases, users, groups, teams, kerberos settings, plans and packages. \nThe wildcard \"*\" enables you to specify all types.\nFor example, the following request enables you to overwrite APIs during import:\nPOST /rest/apigateway/archive?overwrite=apis\nWhereas, overwriting all asset types during import can be specified as follows:\nPOST /rest/apigateway/archive?overwrite=*", - "required" : false, - "type" : "string", - "enum" : [ "apis", "policies", "policyactions", "applications", "aliases", "plans", "packages", "subscriptions", "administrator_settings", "portal_gateway", "assertions", "configurations", "outboundProxies", "urlAliases", "keyStores", "trustStores", "JNDIProviderAliases", "JMSConnectionAliases", "JMSTriggers", "webserviceEndpointAliases", "users", "groups", "accessProfiles", "kerberosSetting", "*" ] - }, { - "name" : "preserveAssetState", - "in" : "query", - "description" : "This parameter is used to specify whether the asset state needs to be preserved after importing the assets in to API Gateway. By default this value will be true. If false specified the assets will be imported and wont preserve asset state after importing asset.", - "required" : false, - "type" : "string", - "enum" : [ "true", "false" ] - }, { - "name" : "x-HTTP-Method-Override", - "in" : "header", - "description" : "This parameter is used to specify that this REST call is an export operation. The value for this field is GET. If this is specified then you need to provide the filtering criteria in body to specify the asset. If empty payload specified then all assets will be exported. ", - "required" : false, - "type" : "string", - "enum" : [ "GET" ] - }, { - "in" : "body", - "name" : "body", - "description" : "", - "required" : false, - "schema" : { - "$ref" : "#/definitions/ExportContext" - } - }, { - "name" : "zipFile", - "in" : "formData", - "description" : "Zip file that contains the API Gateway asset needs to be imported", - "required" : false, - "type" : "file" - } ], - "responses" : { - "201" : { - "description" : "This response indicates that the archive import was successful. The response body holds a detailed import log in application/json format.", - "examples" : { - "application/json" : "{\n \"ArchiveResult\": [\n {\n \"PolicyAction\": {\n \"name\": \"Straight Through Routing\",\n \"id\": \"bc7c75ba-ad5e-4dd7-adb7-a62bcd60593d\",\n \"status\": \"Failed\",\n \"explanation\": \"Asset already exists.\",\n \"overwritten\": false\n }\n },\n {\n \"PolicyAction\": {\n \"name\": \"Require HTTP / HTTPS\",\n \"id\": \"c3852da1-4e6e-440b-8fe9-7e5c1523d7f1\",\n \"status\": \"Failed\",\n \"explanation\": \"Asset already exists.\",\n \"overwritten\": false\n }\n },\n {\n \"API\": {\n \"name\": \"BayernRest\",\n \"id\": \"70062a02-e7f9-4ead-a66e-313752a9b111\",\n \"status\": \"Failed\",\n \"explanation\": \"Asset already exists.\",\n \"overwritten\": false\n }\n },\n {\n \"Policy\": {\n \"name\": \"Default Policy for API BayernRest\",\n \"id\": \"9a0d17c1-8bf1-4282-a53e-2b2ca634ba39\",\n \"status\": \"Failed\",\n \"explanation\": \"Asset already exists.\",\n \"overwritten\": false\n }\n }\n ]\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ArchiveResult" - } - } - }, - "200" : { - "description" : "This response indicates that the archive is created successfully. The response body is the zipped archive." - }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "500" : { - "description" : "This response indicates that the server has encountered an error while exporting or importing API Gateway Asset" - }, - "400" : { - "description" : "This response indicates that the request payload is invalid or that no objects with the specified search parameters were found" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "ExportContext" : { - "type" : "object", - "required" : [ "types" ], - "properties" : { - "types" : { - "type" : "string", - "description" : "List of allowed types that can be searched across API Gateway.", - "enum" : [ "USER", "GROUP", "USERS", "GROUPS", "ACCESSPROFILES", "LDAPGROUPS", "CDSGROUPS", "ASSERTION", "APPLICATION", "API", "ALIAS", "POLICY", "POLICY_ACTION", "PLAN", "PACKAGE", "ADMINISTRATOR_SETTING", "PORTAL_GATEWAY", "OAUTH2_SCOPE_DATA", "SUBSCRIPTION", "API_DOCUMENT", "APPROVAL_CONFIGURATION", "OUTBOUND_PROXY", "PROXY_BYPASS", "URL_ALIAS", "KEYSTORE", "TRUSTSTORE", "KERBEROS_SETTING", "JNDI_PROVIDER_ALIAS", "JMS_CONNECTION_ALIAS", "JMS_TRIGGER", "WEB_SERVICE_ENDPOINT_ALIAS", "ACCESS_CONTROL_LIST", "RULE", "MICROGATEWAY_GROUPS" ] - }, - "scope" : { - "$ref" : "#/definitions/SearchField" - }, - "condition" : { - "type" : "string", - "description" : "Condition between scope specified. The value can be either 'and' or 'or'", - "enum" : [ "and", "or" ] - }, - "responseFields" : { - "type" : "array", - "description" : "List of fields to be fetched for the specified types.", - "items" : { - "type" : "string" - } - }, - "from" : { - "type" : "integer", - "format" : "int32", - "description" : "The starting index of the record to be fetched. Default value is 0 which fetches from the start. The index is applied to each type separately. For each type the first n records are skipped as specified in from field. If the value specified is less than zero then the default value is taken for fetching records" - }, - "size" : { - "type" : "integer", - "format" : "int32", - "description" : "Number of records to be fetched. Default value is -1, which fetches all the records. The size is applied to each type separately. Each type has the records less than or equal to the size specified. If the value specified is less than zero then the default value is taken for fetching records" - }, - "sortByField" : { - "type" : "string", - "description" : "Field name on which the sorting needs to be applied." - }, - "sortOrder" : { - "type" : "string", - "description" : "Sort order for the records", - "enum" : [ "ASC", "DESC" ] - }, - "teamFilter" : { - "type" : "array", - "description" : "This filter is used to specify list teams to apply on the search results.", - "items" : { - "type" : "string" - } - }, - "includeOptions" : { - "$ref" : "#/definitions/IncludeOptions" - } - }, - "description" : "This defines the request structure to export the specific assets across API Gateway" - }, - "IncludeOptions" : { - "type" : "object", - "properties" : { - "includeAll" : { - "type" : "boolean", - "description" : "Include all dependent assets for all asset type specified" - }, - "includeApplications" : { - "type" : "boolean", - "description" : "Include application as dependent asset for asset type specified if applicable" - }, - "includeApis" : { - "type" : "boolean", - "description" : "Include API as dependent asset for asset type specified if applicable" - }, - "includeDocuments" : { - "type" : "boolean", - "description" : "Include documents as dependent asset for asset type specified if applicable" - }, - "includeUsers" : { - "type" : "boolean", - "description" : "Include users as dependent asset for asset type specified if applicable" - }, - "includeGroups" : { - "type" : "boolean", - "description" : "Include groups as dependent asset for asset type specified if applicable" - }, - "includeSubscriptions" : { - "type" : "boolean", - "description" : "Include subscriptions for the asset type specified if applicable" - }, - "includeAccessProfiles" : { - "type" : "boolean" - }, - "includeTruststores" : { - "type" : "boolean" - }, - "promotion" : { - "type" : "boolean" - } - }, - "description" : "It is used to specify the inclusion of dependent assets" - }, - "SearchField" : { - "type" : "object", - "properties" : { - "attributeName" : { - "type" : "string", - "description" : "Field name to be searched for the list of types specified" - }, - "keyword" : { - "type" : "string", - "description" : "Value of the corresponding field to be matched. User can use regular expression to specify the multiple values for single attributeName. For example to find \n 1. apiDescription contains \"weather\" or equals \"country\" , we can use {\"attributeName\" : \"apiDescription\", \"keyword\" : \".*weather.*|country\"}. \n 2. apiName starts with weather - {\"attributeName\" : \"apiName\", \"keyword\" : \"weather.*\"}. \n 3. api type is REST or SOAP - {\"attributeName\" : \"type\", \"keyword\" : \"REST|SOAP\"}." - }, - "orTokenKey" : { - "type" : "boolean" - }, - "rawFieldKey" : { - "type" : "string" - } - }, - "description" : "A scope is filtering criteria for the list of types specified in search.It is a key/value pair. key is the field name on which the search is being done and value contains the search string to be searched on the field specified.To get the field name for a type, user needs to access the corresponding API Gateway REST service to know about the fields available for a particular type. " - }, - "ArchiveResult" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string" - }, - "importedOK" : { - "type" : "boolean" - }, - "explanation" : { - "type" : "string" - }, - "overwritten" : { - "type" : "boolean" - }, - "dependencyFailed" : { - "type" : "boolean" - } - } - } - } +{ + "swagger" : "2.0", + "info" : { + "description" : "The API Gateway archive service exposes the interface to the API Gateway export archives. An API Gateway export archive is a ZIP file that contains APIs, policies, global policies and all the other assets in API Gateway. You can use this service to export/import all type of assets into API Gateway. \n\n In general, for any asset being exported, all the dependent assets are automatically exported. For example, when exporting APIs, the export archive contains the APIs, the API level policies, the policy actions associated with the API level policies, and the aliases referenced by the policy actions. Additionally, the archive may also contain the applications registered to the exported APIs.\n When exporting global policy the archive contains the global policies, the policy actions associated with the global policies, and the aliases referenced to the policy actions.\n\nEach artifact in an archive is associated with a universally unique identifier (UUID) across all API Gateway installations. When importing an archive, the UUID helps in determining whether the corresponding artifact is already available in API Gateway. In such a situation, you can specify whether to overwrite an already existing artifact during the import process. \n\n Any user with the 'Export assets' functional privilege can export archives in API Gateway and any user with the 'Import assets' privilege can import the archives. By default, the users who are part of API-Gateway-Administrators group will have these privileges.", + "version" : "10.3", + "title" : "API Gateway Archive Service" + }, + "host" : "localhost:5555", + "basePath" : "/rest/apigateway", + "schemes" : [ "http" ], + "consumes" : [ "application/json", "application/zip" ], + "produces" : [ "application/json", "application/zip" ], + "paths" : { + "/archive" : { + "get" : { + "description" : "The GET method exports an archive. The result of the GET request is an archive in a ZIP format. This Method supports exporting API, Application, Alias and Global Policy ONLY. \n\n Use the POST /archive method to export all the assets in API Gateway.", + "operationId" : "exportApiGatewayAssets", + "consumes" : [ "application/json" ], + "produces" : [ "multipart/form-data" ], + "parameters" : [ { + "name" : "include-applications", + "in" : "query", + "description" : "This parameter indicates whether you want to export the applications associated with the\nAPIs", + "required" : false, + "type" : "string", + "x-example" : "include-applications=true" + }, { + "name" : "policies", + "in" : "query", + "description" : "This parameter identifies the policies to be exported. \nThe wildcard \"*\" selects all policies.\nFor example, a single policy can be exported using the following request:\nGET /rest/apigateway/archive?policies=07b8d7b7-20b7-422e-8464-4b19d405c41a\nWhereas, global policies can be exported using the following request:\nGET /rest/apigateway/archive?policies=*\n", + "required" : false, + "type" : "array", + "items" : { + "type" : "string" + }, + "collectionFormat" : "multi", + "x-example" : "policies=07b8d7b7-20b7-422e-8464-4b19d405c41a" + }, { + "name" : "apis", + "in" : "query", + "description" : "This parameter identifies the APIs to be exported. The wildcard \"*\" selects all the APIs. \nFor example a single API can be exported using the following request:\nGET /rest/apigateway/archive?apis=e2996867-af49-4ac6-98e7-cba48837c13e\n\nWhereas, all the APIs can be exported using the following request:\nGET /rest/apigateway/archive?apis=*", + "required" : false, + "type" : "array", + "items" : { + "type" : "string" + }, + "collectionFormat" : "multi", + "x-example" : "apis=e2996867-af49-4ac6-98e7-cba48837c13e" + }, { + "name" : "aliases", + "in" : "query", + "description" : "This parameter identifies the aliases to be exported. \nThe wildcard \"*\" selects all aliases.\n For example, a single alias can be exported using the following requrest:\n GET /rest/apigateway/archive?aliases=d1885756-9e38-39b5-87d6-ba937726b02d\nWhereas, all the APIs can be exported using the following request:\n GET /rest/apigateway/archive?alias=*", + "required" : false, + "type" : "array", + "items" : { + "type" : "string" + }, + "collectionFormat" : "multi", + "x-example" : "aliases=d1885756-9e38-39b5-87d6-ba937726b02d" + }, { + "name" : "applications", + "in" : "query", + "description" : "This parameter identifies the applications to be exported. \nThe wildcard \"*\" selects all applications.\n For example, a single application can be exported using the following requrest:\n GET /rest/apigateway/archive?applications=d1885756-9e38-39b5-87d6-ba937726b02d\nWhereas, all the APIs can be exported using the following request:\n GET /rest/apigateway/archive?alias=*", + "required" : false, + "type" : "array", + "items" : { + "type" : "string" + }, + "collectionFormat" : "multi", + "x-example" : "applications=d1885756-9e38-39b5-87d6-ba937726b02d" + } ], + "responses" : { + "200" : { + "description" : "This response indicates that the archive is created successfully. The response body is the zipped archive." + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "400" : { + "description" : "This response indicates that a request is incorrect. This can be due to the API or Policy identifiers that cannot be resolved." + }, + "500" : { + "description" : "This response indicates that the server has encountered an error while exporting API Gateway Asset" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "This method can be used for importing the API Gateway archive as well as exporting the assets as an archive. If the request is made with x-HTTP-Method-Override HTTP header with value as GET, then this method will export asset. It will require the body param using which you can specify the filtering criteria and include options for the API Gateway assets that need to be exported. \n\n If the HTTP header is not specified, then this method can be used to import the API Gateway archive. You can control the import settings with overwrite and preserveAssetState query parameters.\n\n Here are some sample payloads for different export scenarios. \n\n 1. Export all API Gateway assets. \n Payload: {} \n\n 2. Export all APIs \n Payload: { \"types\": [\"api\"] } \n\n 3. Export all APIs with registered Application \n Payload: {\r\n\"types\" : [\"api\"],\r\n\"includeOptions\" :{\r\n\"includeApplications\" :false\r\n}\r\n} \n\n 4. Export only APIs with name contains \"API Gateway\" \n Payload: {\r\n\"types\" : [\"api\"],\r\n\"scope\" : [\r\n{\"attributeName\" : \"apiName\",\r\n\"keyword\" : \".*API Gateway.*\"\r\n}],\r\n\"includeOptions\" :{\r\n\"includeApplications\" :false\r\n}\r\n} \n\n 5. Export API with specific ids only \n Payload: {\r\n\"types\" : [\"api\"],\r\n\"scope\" : [\r\n{\"attributeName\" : \"id\",\r\n\"keyword\" : \"1c36033a-ecb6-41ce-ad66-bada5cebe85e|8d505388-5524-4df5-bd3c-62c4bb5f41d0\"\r\n}],\r\n\"includeOptions\" :{\r\n\"includeApplications\" :true\r\n}\r\n} \n\n 6. Export API with name starts with API Gateway and description contains search \n Payload: {\r\n\"types\" : [\"api\"],\r\n\"scope\" : [\r\n{\"attributeName\" : \"apiName\",\r\n\"keyword\" : \"API Gateway.*\"\r\n},\r\n{\r\n\"attributeName\" : \"apiDescription\",\r\n\"keyword\" : \".*search.*\"\r\n}],\r\n\"condition\" : \"and\",\r\n\"includeOptions\" :{\r\n\"includeApplications\" :false\r\n}\r\n} \n\n 7. Export all Policy \n Payload: {\r\n\"types\" : [\"policy\"]\r\n} \n\n 8. Global Policy Alone \n Payload: {\r\n\"types\" : [\"policy\"],\r\n\"scope\":[\r\n{\r\n\"attributeName\" : \"policyScope\",\r\n\"keyword\" : \"GLOBAL\"\r\n}]\r\n} \n\n 9. Export Threat Protection Rule \n Payload: {\r\n\"types\" : [\"policy\"],\r\n\"scope\":[\r\n{\r\n\"attributeName\" : \"policyEnforcements.stageKey\",\r\n\"keyword\" : \"threatProtection\"\r\n}]\r\n} \n\n 10. Export All Policy Actions \n Payload: {\r\n\"types\" : [\"policy_action\"]\r\n} \n\n 11. Export All Threat Protection rules and policy \n Payload: {\r\n\"types\" : [\"policy_action\", \"policy\"],\r\n\"scope\":[\r\n{\r\n\"attributeName\" : \"policyEnforcements.stageKey\",\r\n\"keyword\" : \"threatProtection\"\r\n}, {\r\n\"attributeName\" : \"id\",\r\n\"keyword\" : \"globalipdos|ipdos\"\r\n}],\r\n\"condition\" : \"or\"\r\n} \n\n 12. Export all aliases \n Payload: {\r\n\"types\" : [\"alias\"]\r\n} \n\n 13. Export all applications \n Payload: {\r\n\"types\" : [\"application\"]\r\n} \n\n 14. Export all application with out including associated APIs \n Payload: {\r\n\"types\" : [\"application\"],\r\n\"includeOptions\" : {\r\n\"includeApis\": false\r\n}\r\n} \n\n 15. Export All Assertions \n Payload: {\r\n\"types\" : [\"assertion\"]\r\n} \n\n 16. Export all API Plans \n Payload: {\r\n\"types\" : [\"plan\"]\r\n} \n\n 17. Export all API Packages \n Payload: {\r\n\"types\" : [\"package\"]\r\n} \n\n 18. Export all packages along with subscription but with out the registered Applications for the associated APIs. \n Payload: {\r\n\"types\" : [\"package\"],\r\n\"includeOptions\":{\r\n\"includeApis\" : false,\r\n\"includeApplications\" : false,\r\n\"includeSubscriptions\" : true\r\n}\r\n} \n\n 19. Export all subscriptions \n Payload: {\r\n\"types\" : [\"subscription\"]\r\n} \n\n 20. Export all Administrator Settings \n Payload: {\r\n\"types\" : [\"administrator_setting\"]\r\n}", + "operationId" : "importExportAPIGatewayAssets", + "consumes" : [ "multipart/form-data", "application/json" ], + "produces" : [ "application/json", "multipart/form-data" ], + "parameters" : [ { + "name" : "overwrite", + "in" : "query", + "description" : "This parameter specifies the import option to define the artifact types that can be overwritten during import. The parameter enables you to specify overwriting of APIs, policies, policy actions, aliases, and applications. \nThe wildcard \"*\" enables you to specify all types.\nFor example, the following request enables you to overwrite APIs during import:\nPOST /rest/apigateway/archive?overwrite=apis\nWhereas, overwriting all asset types during import can be specified as follows:\nPOST /rest/apigateway/archive?overwrite=*", + "required" : false, + "type" : "string", + "enum" : [ "apis", "policies", "policyactions", "applications", "aliases", "plans", "packages", "subscriptions", "administrator_settings", "portal_gateway", "assertions", "*" ] + }, { + "name" : "preserveAssetState", + "in" : "query", + "description" : "This parameter is used to specify whether the asset state needs to be preserved after importing the assets in to API Gateway. By default this value will be true. If false specified the assets will be imported and wont preserve asset state after importing asset.", + "required" : false, + "type" : "string", + "enum" : [ "true", "false" ] + }, { + "name" : "x-HTTP-Method-Override", + "in" : "header", + "description" : "This parameter is used to specify that this REST call is an export operation. The value for this field is GET. If this is specified then you need to provide the filtering criteria in body to specify the asset. If empty payload specified then all assets will be exported. ", + "required" : false, + "type" : "string", + "enum" : [ "GET" ] + }, { + "in" : "body", + "name" : "body", + "description" : "", + "required" : false, + "schema" : { + "$ref" : "#/definitions/ExportContext" + } + }, { + "name" : "zipFile", + "in" : "formData", + "description" : "Zip file that contains the API Gateway asset needs to be imported", + "required" : false, + "type" : "file" + } ], + "responses" : { + "201" : { + "description" : "This response indicates that the archive import was successful. The response body holds a detailed import log in application/json format.", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ArchiveResult" + } + }, + "examples" : { + "application/json" : "{\n \"ArchiveResult\": [\n {\n \"PolicyAction\": {\n \"name\": \"Straight Through Routing\",\n \"id\": \"bc7c75ba-ad5e-4dd7-adb7-a62bcd60593d\",\n \"status\": \"Failed\",\n \"explanation\": \"Asset already exists.\",\n \"overwritten\": false\n }\n },\n {\n \"PolicyAction\": {\n \"name\": \"Require HTTP / HTTPS\",\n \"id\": \"c3852da1-4e6e-440b-8fe9-7e5c1523d7f1\",\n \"status\": \"Failed\",\n \"explanation\": \"Asset already exists.\",\n \"overwritten\": false\n }\n },\n {\n \"API\": {\n \"name\": \"BayernRest\",\n \"id\": \"70062a02-e7f9-4ead-a66e-313752a9b111\",\n \"status\": \"Failed\",\n \"explanation\": \"Asset already exists.\",\n \"overwritten\": false\n }\n },\n {\n \"Policy\": {\n \"name\": \"Default Policy for API BayernRest\",\n \"id\": \"9a0d17c1-8bf1-4282-a53e-2b2ca634ba39\",\n \"status\": \"Failed\",\n \"explanation\": \"Asset already exists.\",\n \"overwritten\": false\n }\n }\n ]\n}" + } + }, + "200" : { + "description" : "This response indicates that the archive is created successfully. The response body is the zipped archive." + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "500" : { + "description" : "This response indicates that the server has encountered an error while exporting or importing API Gateway Asset" + }, + "400" : { + "description" : "This response indicates that the request is invalid or faulty, for example, the request body may contain an invalid archive." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + } + }, + "securityDefinitions" : { + "Basic" : { + "description" : "API Gateway Administrator and API Gateway provider", + "type" : "basic" + } + }, + "definitions" : { + "ExportContext" : { + "type" : "object", + "required" : [ "types" ], + "properties" : { + "types" : { + "type" : "string", + "description" : "List of allowed types that can be searched across API Gateway.", + "enum" : [ "USER", "GROUP", "USERS", "GROUPS", "ACCESSPROFILES", "LDAPGROUPS", "CDSGROUPS", "ASSERTION", "APPLICATION", "API", "ALIAS", "POLICY", "POLICY_ACTION", "PLAN", "PACKAGE", "ADMINISTRATOR_SETTING", "PORTAL_GATEWAY", "OAUTH2_SCOPE_DATA", "SUBSCRIPTION", "API_DOCUMENT" ] + }, + "scope" : { + "$ref" : "#/definitions/SearchField" + }, + "condition" : { + "type" : "string", + "description" : "Condition between scope specified. The value can be either 'and' or 'or'", + "enum" : [ "and", "or" ] + }, + "responseFields" : { + "type" : "array", + "description" : "List of fields to be fetched for the specified types.", + "items" : { + "type" : "string" + } + }, + "from" : { + "type" : "integer", + "format" : "int32", + "description" : "The starting index of the record to be fetched. Default value is 0 which fetches from the start. The index is applied to each type separately. For each type the first n records are skipped as specified in from field. If the value specified is less than zero then the default value is taken for fetching records" + }, + "size" : { + "type" : "integer", + "format" : "int32", + "description" : "Number of records to be fetched. Default value is -1, which fetches all the records. The size is applied to each type separately. Each type has the records less than or equal to the size specified. If the value specified is less than zero then the default value is taken for fetching records" + }, + "sortByField" : { + "type" : "string", + "description" : "Field name on which the sorting needs to be applied." + }, + "sortOrder" : { + "type" : "string", + "description" : "Sort order for the records", + "enum" : [ "ASC", "DESC" ] + }, + "includeOptions" : { + "$ref" : "#/definitions/IncludeOptions" + } + }, + "description" : "This defines the request structure to export the specific assets across API Gateway" + }, + "IncludeOptions" : { + "type" : "object", + "properties" : { + "includeAll" : { + "type" : "boolean", + "description" : "Include all dependent assets for all asset type specified" + }, + "includeApplications" : { + "type" : "boolean", + "description" : "Include application as dependent asset for asset type specified if applicable" + }, + "includeApis" : { + "type" : "boolean", + "description" : "Include API as dependent asset for asset type specified if applicable" + }, + "includeDocuments" : { + "type" : "boolean", + "description" : "Include documents as dependent asset for asset type specified if applicable" + }, + "includeSubscriptions" : { + "type" : "boolean", + "description" : "Include subscriptions for the asset type specified if applicable" + }, + "promotion" : { + "type" : "boolean" + } + }, + "description" : "It is used to specify the inclusion of dependent assets" + }, + "SearchField" : { + "type" : "object", + "properties" : { + "attributeName" : { + "type" : "string", + "description" : "Field name to be searched for the list of types specified" + }, + "keyword" : { + "type" : "string", + "description" : "Value of the corresponding field to be matched. User can use regular expression to specify the multiple values for single attributeName. For example to find \n 1. apiDescription contains \"weather\" or equals \"country\" , we can use {\"attributeName\" : \"apiDescription\", \"keyword\" : \".*weather.*|country\"}. \n 2. apiName starts with weather - {\"attributeName\" : \"apiName\", \"keyword\" : \"weather.*\"}. \n 3. api type is REST or SOAP - {\"attributeName\" : \"type\", \"keyword\" : \"REST|SOAP\"}." + }, + "orTokenKey" : { + "type" : "boolean" + }, + "rawFieldKey" : { + "type" : "string" + } + }, + "description" : "A scope is filtering criteria for the list of types specified in search.It is a key/value pair. key is the field name on which the search is being done and value contains the search string to be searched on the field specified.To get the field name for a type, user needs to access the corresponding API Gateway REST service to know about the fields available for a particular type. " + }, + "ArchiveResult" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string" + }, + "importedOK" : { + "type" : "boolean" + }, + "explanation" : { + "type" : "string" + }, + "overwritten" : { + "type" : "boolean" + }, + "dependencyFailed" : { + "type" : "boolean" + } + } + } + } } \ No newline at end of file diff --git a/apigatewayservices/APIGatewayDocumentManagement.json b/apigatewayservices/APIGatewayDocumentManagement.json index 0fcd1e0..849b3dd 100644 --- a/apigatewayservices/APIGatewayDocumentManagement.json +++ b/apigatewayservices/APIGatewayDocumentManagement.json @@ -1,285 +1,285 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "API Gateway Document Management Service allows you to store/manage the Documents associated to API in the API Gateway. Any user with the 'Manage APIs' functional privilege can manage the documents in the API Gateway. By default, the users who are part of either API-Gateway-Providers or API-Gateway-Administrators groups will have this privilege.\n\nAny document can be stored and attached to any of these APIs types - REST APIs, SOAP APIs, WebSocket APIs and OData APIs. ", - "version" : "10.7", - "title" : "API Gateway Document Management Service" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "paths" : { - "/documents" : { - "post" : { - "operationId" : "storeDocument", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "The request payload to store the document in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Document" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"displayName\": \"APIGatewayPortsInfoDocument\",\r\n\t\"fileName\": \"APIGatewayPorts.json\",\r\n\t\"fileContent\": \"data:;base64,ew0KICAic3dhZ2dlciIgOiAiMi4wIiwNCiAgImluZm8iIDogew0KICAgICJkZXNjcmlwdGlvbiIgOiAiVGhpcyBzd2FnZ2VyIGRvYyBjb250YWlucyBBUEkgRGVmaW5pdGlvbiBvZiB0aGUgcG9ydHMgQ1JVRCBvcGVyYXRpb25zLiIsDQogICAgInZlcnNpb24iIDogIjEwLjEiLA0KICAgICJ0aXRsZSIgOiAiUG9ydHMgY29uZmlndXJhdGlvbnMuIg0KICB9LA0KICAiaG9zdCIgOiAibG9jYWxob3N0OjU1NTUiLA0KICAiYmFzZVBhdGgiIDogIi9yZXN0L2FwaWdhdGV3YXkiLA0KICAic2NoZW1lcyIgOiBbICJodHRwIiBdLA0KICAiY29uc3VtZXMiIDogWyAicGxhaW4vdGV4dCIgXSwNCiAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICJwYXRocyIgOiB7DQogICAgIi9wb3J0cyIgOiB7DQogICAgICAicG9zdCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiY3JlYXRlUG9ydCIsDQogICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQogICAgICAgICAgImluIiA6ICJib2R5IiwNCiAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQogICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJwb3J0IHBheWxvYWQiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJzY2hlbWEiIDogew0KICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydCINCiAgICAgICAgICB9DQogICAgICAgIH0gXSwNCiAgICAgICAgInJlc3BvbnNlcyIgOiB7DQogICAgICAgICAgIjIwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIkNyZWF0ZWQiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQmFkIHJlcXVlc3QiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAxIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQWNjZXNzIERlbmllZCINCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgICJzZWN1cml0eSIgOiBbIHsNCiAgICAgICAgICAiQmFzaWMiIDogWyBdDQogICAgICAgIH0gXQ0KICAgICAgfSwNCiAgICAgICJwdXQiIDogew0KICAgICAgICAib3BlcmF0aW9uSWQiIDogInVwZGF0ZVBvcnQiLA0KICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KICAgICAgICAgICJpbiIgOiAiYm9keSIsDQogICAgICAgICAgIm5hbWUiIDogImJvZHkiLA0KICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCiAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCiAgICAgICAgICAic2NoZW1hIiA6IHsNCiAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgfQ0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICIyMDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNTAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAic2VjdXJpdHkiIDogWyB7DQogICAgICAgICAgIkJhc2ljIiA6IFsgXQ0KICAgICAgICB9IF0NCiAgICAgIH0sDQogICAgICAiZGVsZXRlIiA6IHsNCiAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJkZWxldGVQb3J0IiwNCiAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCiAgICAgICAgICAibmFtZSIgOiAibGlzdGVuZXJLZXkiLA0KICAgICAgICAgICJpbiIgOiAicXVlcnkiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KICAgICAgICAgICJ4LWV4YW1wbGUiIDogIkhUVFBMaXN0ZW5lckA1NTU1Ig0KICAgICAgICB9LCB7DQogICAgICAgICAgIm5hbWUiIDogInBrZyIsDQogICAgICAgICAgImluIiA6ICJxdWVyeSIsDQogICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQogICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQogICAgICAgICAgIngtZXhhbXBsZSIgOiAiV21Sb290Ig0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICI0MDEiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiMjA0IiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwNCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgICJzZWN1cml0eSIgOiBbIHsNCiAgICAgICAgICAiQmFzaWMiIDogWyBdDQogICAgICAgIH0gXQ0KICAgICAgfQ0KICAgIH0sDQogICAgIi9wb3J0cy9lbmFibGUiIDogew0KICAgICAgInB1dCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiZW5hYmxlUG9ydCIsDQogICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQogICAgICAgICAgImluIiA6ICJib2R5IiwNCiAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQogICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJzY2hlbWEiIDogew0KICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydEVuYWJsZURpc2FibGUiDQogICAgICAgICAgfQ0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICIyMDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnRFbmFibGVEaXNhYmxlIg0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0sDQogICAgICAgICAgIjUwMCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDEiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgInNlY3VyaXR5IiA6IFsgew0KICAgICAgICAgICJCYXNpYyIgOiBbIF0NCiAgICAgICAgfSBdDQogICAgICB9DQogICAgfSwNCiAgICAiL3BvcnRzL2Rpc2FibGUiIDogew0KICAgICAgInB1dCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiZGRpc2FibGVQb3J0IiwNCiAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCiAgICAgICAgICAiaW4iIDogImJvZHkiLA0KICAgICAgICAgICJuYW1lIiA6ICJib2R5IiwNCiAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQogICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQogICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qb3J0RW5hYmxlRGlzYWJsZSINCiAgICAgICAgICB9DQogICAgICAgIH0gXSwNCiAgICAgICAgInJlc3BvbnNlcyIgOiB7DQogICAgICAgICAgIjIwMCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQogICAgICAgICAgICAic2NoZW1hIiA6IHsNCiAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydEVuYWJsZURpc2FibGUiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNTAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAic2VjdXJpdHkiIDogWyB7DQogICAgICAgICAgIkJhc2ljIiA6IFsgXQ0KICAgICAgICB9IF0NCiAgICAgIH0NCiAgICB9DQogIH0sDQogICJzZWN1cml0eURlZmluaXRpb25zIiA6IHsNCiAgICAiQmFzaWMiIDogew0KICAgICAgImRlc2NyaXB0aW9uIiA6ICJBUEkgR2F0ZXdheSBBZG1pbmlzdHJhdG9yIGFuZCBBUEkgR2F0ZXdheSBwcm92aWRlciIsDQogICAgICAidHlwZSIgOiAiYmFzaWMiDQogICAgfQ0KICB9LA0KICAiZGVmaW5pdGlvbnMiIDogew0KICAgICJQb3J0IiA6IHsNCiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KICAgICAgInByb3BlcnRpZXMiIDogew0KICAgICAgICAicG9ydCIgOiB7DQogICAgICAgICAgInR5cGUiIDogImludGVnZXIiLA0KICAgICAgICAgICJmb3JtYXQiIDogImludDMyIg0KICAgICAgICB9LA0KICAgICAgICAicHJvdG9jb2wiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwa2ciIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJlbmFibGVkIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAia2V5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAidW5pcXVlSUQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwb3J0QWxpYXMiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwb3J0RGVzY3JpcHRpb24iIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJmYWN0b3J5S2V5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiY29uZmlnVVJMIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAicHJvdmlkZXIiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJsaXN0ZW5lclR5cGUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJjbGllbnRBdXRoIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaWRQcm92aWRlciIgOiB7DQogICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCiAgICAgICAgfSwNCiAgICAgICAgInNzbCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgIm1heFF1ZXVlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAia2VlcEFsaXZlVGltZW91dCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInRocmVhZFBvb2wiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtaW5UaHJlYWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtYXhUaHJlYWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJ0aHJlYWRQcmlvcml0eSIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInVzZWRUaHJlYWRDb3VudCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImludGVybmFsUG9ydCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImN1ckRlbGF5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAic3RlcHNpemUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJzdXNwZW5kZWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJqc3NlRW5hYmxlZFByb3RvY29scyIgOiB7DQogICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCiAgICAgICAgfSwNCiAgICAgICAgInN0YXR1cyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImxpc3RlbmluZyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImFjY2Vzc01vZGUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJoYXNBY2Nlc3NMaXN0IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaXBBY2Nlc3NNb2RlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaGFzSVBBY2Nlc3NMaXN0IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGRlZmluZXMgdGhlIHZhcmlvdXMgZmllbGRzIHRoYXQgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgcG9ydC4iDQogICAgfSwNCiAgICAiUG9ydEVuYWJsZURpc2FibGUiIDogew0KICAgICAgInR5cGUiIDogIm9iamVjdCIsDQogICAgICAicHJvcGVydGllcyIgOiB7DQogICAgICAgICJsaXN0ZW5lcktleSIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInBrZyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInJlcXVlc3RTZXJ2aWNlU3RhdHVzIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiZ2V0JHJlc291cmNlSUQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtZXNzYWdlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICB9DQp9\"\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the given document has been stored successfully in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/DocumentResponse" - } - }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while storing the given document in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/documents/{documentId}" : { - "get" : { - "description" : "Retrieves the requested document from API Gateway", - "operationId" : "getDocument", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "documentId", - "in" : "path", - "description" : "The unique identifier of the document for retrieving from API Gateway.", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the given document has been retrieved successfully from API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"documents\": [{\r\n\t\t\"id\": \"c98c7290-bc68-4da3-a39e-545c714e75bc\",\r\n\t\t\"fileName\": \"SamplePowerpoint.pptx\",\r\n\t\t\"displayName\": \"How to upload documents to the store?\",\r\n\t\t\"fileContent\": \"data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,UEsDBBQABgAIAAAAIQD93q/s6gEAAFIPAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMl990JrRLqv6+ONgR6nB3mzU7T/S6zeFFiF7yGWlYgyJtgnR813PvL8QsEZ/QW5+BJw0oMXXv4aH5oxlxCPLnIolA8a5hyjt9KsZloQZYhki/OENKCucg0qojmgSOpU1V9qrRlQLtjiqvVkK62BtGvsTT/zw7D4Aydg3ku5PObCsWzs3TDNTxzwWIaKWuQcnvnrahleR9U26jd3PYPAAD//wMAUEsDBBQABgAIAAAAIQBL9T3svwAAADcBAAAgAAAAcHB0L3NsaWRlcy9fcmVscy9zbGlkZTIueG1sLnJlbHOEj8EKwjAQRO+C/xD2blI9iEhTLyIInkQ/YEm2bbBNQjaK/XtzrCB4nB3mzU59eI+DeFFiF7yGtaxAkDfBOt9puN9Oqx0IzugtDsGThokYDs1yUV9pwFxC3LvIolA8a+hzjnul2PQ0IssQyRenDWnEXGTqVETzwI7Upqq2Ks0Z0HwxxdlqSGe7BnGbYmn+zw5t6wwdg3mO5POPCsWDs3TBKTxzwWLqKGuQcn7nudjI8j6oplZfc5sPAAAA//8DAFBLAwQUAAYACAAAACEAS/U97L8AAAA3AQAAIAAAAHBwdC9zbGlkZXMvX3JlbHMvc2xpZGUzLnhtbC5yZWxzhI/BCsIwEETvgv8Q9m5SPYhIUy8iCJ5EP2BJtm2wTUI2iv17c6wgeJwd5s1OfXiPg3hRYhe8hrWsQJA3wTrfabjfTqsdCM7oLQ7Bk4aJGA7NclFfacBcQty7yKJQPGvoc457pdj0NCLLEMkXpw1pxFxk6lRE88CO1KaqtirNGdB8McXZakhnuwZxm2Jp/s8ObesMHYN5juTzjwrFg7N0wSk8c8Fi6ihrkHJ+57nYyPI+qKZWX3ObDwAAAP//AwBQSwMEFAAGAAgAAAAhAEv1Pey/AAAANwEAACAAAABwcHQvc2xpZGVzL19yZWxzL3NsaWRlNS54bWwucmVsc4SPwQrCMBBE74L/EPZuUj2ISFMvIgieRDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyVz06EMBDG7ya+A+ldCuw/NVv2Ykz2YGJ0fYAKAzSWtmnrKm9vw67Ibjb10nAhmaH95pePmWG9+W55tAdtmBQEpXGCIhCFLJmoCXrbPd7coshYKkrKpQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo\"\r\n\t}]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Document" - } - }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while retrieving the given document from API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "operationId" : "updateDocumentContent", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "documentId", - "in" : "path", - "description" : "The unique identifier of the document to update", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "in" : "body", - "name" : "body", - "description" : "The request payload to update the document in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Document" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"displayName\": \"APIGatewayPortsInfoDocumentUpdated\",\r\n\t\"fileName\": \"APIGatewayPorts.json\",\r\n\t\"fileContent\": \"data:;base64,ew0KICAic3dhZ2dlciIgOiAiMi4wIiwNCiAgImluZm8iIDogew0KICAgICJkZXNjcmlwdGlvbiIgOiAiVGhpcyBzd2FnZ2VyIGRvYyBjb250YWlucyBBUEkgRGVmaW5pdGlvbiBvZiB0aGUgcG9ydHMgQ1JVRCBvcGVyYXRpb25zLiIsDQogICAgInZlcnNpb24iIDogIjEwLjEiLA0KICAgICJ0aXRsZSIgOiAiUG9ydHMgY29uZmlndXJhdGlvbnMuIg0KICB9LA0KICAiaG9zdCIgOiAibG9jYWxob3N0OjU1NTUiLA0KICAiYmFzZVBhdGgiIDogIi9yZXN0L2FwaWdhdGV3YXkiLA0KICAic2NoZW1lcyIgOiBbICJodHRwIiBdLA0KICAiY29uc3VtZXMiIDogWyAicGxhaW4vdGV4dCIgXSwNCiAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICJwYXRocyIgOiB7DQogICAgIi9wb3J0cyIgOiB7DQogICAgICAicG9zdCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiY3JlYXRlUG9ydCIsDQogICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQogICAgICAgICAgImluIiA6ICJib2R5IiwNCiAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQogICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJwb3J0IHBheWxvYWQiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJzY2hlbWEiIDogew0KICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydCINCiAgICAgICAgICB9DQogICAgICAgIH0gXSwNCiAgICAgICAgInJlc3BvbnNlcyIgOiB7DQogICAgICAgICAgIjIwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIkNyZWF0ZWQiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQmFkIHJlcXVlc3QiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAxIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQWNjZXNzIERlbmllZCINCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgICJzZWN1cml0eSIgOiBbIHsNCiAgICAgICAgICAiQmFzaWMiIDogWyBdDQogICAgICAgIH0gXQ0KICAgICAgfSwNCiAgICAgICJwdXQiIDogew0KICAgICAgICAib3BlcmF0aW9uSWQiIDogInVwZGF0ZVBvcnQiLA0KICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KICAgICAgICAgICJpbiIgOiAiYm9keSIsDQogICAgICAgICAgIm5hbWUiIDogImJvZHkiLA0KICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCiAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCiAgICAgICAgICAic2NoZW1hIiA6IHsNCiAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgfQ0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICIyMDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNTAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAic2VjdXJpdHkiIDogWyB7DQogICAgICAgICAgIkJhc2ljIiA6IFsgXQ0KICAgICAgICB9IF0NCiAgICAgIH0sDQogICAgICAiZGVsZXRlIiA6IHsNCiAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJkZWxldGVQb3J0IiwNCiAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCiAgICAgICAgICAibmFtZSIgOiAibGlzdGVuZXJLZXkiLA0KICAgICAgICAgICJpbiIgOiAicXVlcnkiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KICAgICAgICAgICJ4LWV4YW1wbGUiIDogIkhUVFBMaXN0ZW5lckA1NTU1Ig0KICAgICAgICB9LCB7DQogICAgICAgICAgIm5hbWUiIDogInBrZyIsDQogICAgICAgICAgImluIiA6ICJxdWVyeSIsDQogICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQogICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQogICAgICAgICAgIngtZXhhbXBsZSIgOiAiV21Sb290Ig0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICI0MDEiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiMjA0IiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwNCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgICJzZWN1cml0eSIgOiBbIHsNCiAgICAgICAgICAiQmFzaWMiIDogWyBdDQogICAgICAgIH0gXQ0KICAgICAgfQ0KICAgIH0sDQogICAgIi9wb3J0cy9lbmFibGUiIDogew0KICAgICAgInB1dCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiZW5hYmxlUG9ydCIsDQogICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQogICAgICAgICAgImluIiA6ICJib2R5IiwNCiAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQogICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJzY2hlbWEiIDogew0KICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydEVuYWJsZURpc2FibGUiDQogICAgICAgICAgfQ0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICIyMDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnRFbmFibGVEaXNhYmxlIg0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0sDQogICAgICAgICAgIjUwMCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDEiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgInNlY3VyaXR5IiA6IFsgew0KICAgICAgICAgICJCYXNpYyIgOiBbIF0NCiAgICAgICAgfSBdDQogICAgICB9DQogICAgfSwNCiAgICAiL3BvcnRzL2Rpc2FibGUiIDogew0KICAgICAgInB1dCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiZGRpc2FibGVQb3J0IiwNCiAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCiAgICAgICAgICAiaW4iIDogImJvZHkiLA0KICAgICAgICAgICJuYW1lIiA6ICJib2R5IiwNCiAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQogICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQogICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qb3J0RW5hYmxlRGlzYWJsZSINCiAgICAgICAgICB9DQogICAgICAgIH0gXSwNCiAgICAgICAgInJlc3BvbnNlcyIgOiB7DQogICAgICAgICAgIjIwMCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQogICAgICAgICAgICAic2NoZW1hIiA6IHsNCiAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydEVuYWJsZURpc2FibGUiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNTAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAic2VjdXJpdHkiIDogWyB7DQogICAgICAgICAgIkJhc2ljIiA6IFsgXQ0KICAgICAgICB9IF0NCiAgICAgIH0NCiAgICB9DQogIH0sDQogICJzZWN1cml0eURlZmluaXRpb25zIiA6IHsNCiAgICAiQmFzaWMiIDogew0KICAgICAgImRlc2NyaXB0aW9uIiA6ICJBUEkgR2F0ZXdheSBBZG1pbmlzdHJhdG9yIGFuZCBBUEkgR2F0ZXdheSBwcm92aWRlciIsDQogICAgICAidHlwZSIgOiAiYmFzaWMiDQogICAgfQ0KICB9LA0KICAiZGVmaW5pdGlvbnMiIDogew0KICAgICJQb3J0IiA6IHsNCiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KICAgICAgInByb3BlcnRpZXMiIDogew0KICAgICAgICAicG9ydCIgOiB7DQogICAgICAgICAgInR5cGUiIDogImludGVnZXIiLA0KICAgICAgICAgICJmb3JtYXQiIDogImludDMyIg0KICAgICAgICB9LA0KICAgICAgICAicHJvdG9jb2wiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwa2ciIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJlbmFibGVkIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAia2V5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAidW5pcXVlSUQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwb3J0QWxpYXMiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwb3J0RGVzY3JpcHRpb24iIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJmYWN0b3J5S2V5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiY29uZmlnVVJMIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAicHJvdmlkZXIiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJsaXN0ZW5lclR5cGUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJjbGllbnRBdXRoIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaWRQcm92aWRlciIgOiB7DQogICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCiAgICAgICAgfSwNCiAgICAgICAgInNzbCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgIm1heFF1ZXVlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAia2VlcEFsaXZlVGltZW91dCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInRocmVhZFBvb2wiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtaW5UaHJlYWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtYXhUaHJlYWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJ0aHJlYWRQcmlvcml0eSIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInVzZWRUaHJlYWRDb3VudCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImludGVybmFsUG9ydCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImN1ckRlbGF5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAic3RlcHNpemUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJzdXNwZW5kZWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJqc3NlRW5hYmxlZFByb3RvY29scyIgOiB7DQogICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCiAgICAgICAgfSwNCiAgICAgICAgInN0YXR1cyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImxpc3RlbmluZyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImFjY2Vzc01vZGUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJoYXNBY2Nlc3NMaXN0IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaXBBY2Nlc3NNb2RlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaGFzSVBBY2Nlc3NMaXN0IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGRlZmluZXMgdGhlIHZhcmlvdXMgZmllbGRzIHRoYXQgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgcG9ydC4iDQogICAgfSwNCiAgICAiUG9ydEVuYWJsZURpc2FibGUiIDogew0KICAgICAgInR5cGUiIDogIm9iamVjdCIsDQogICAgICAicHJvcGVydGllcyIgOiB7DQogICAgICAgICJsaXN0ZW5lcktleSIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInBrZyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInJlcXVlc3RTZXJ2aWNlU3RhdHVzIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiZ2V0JHJlc291cmNlSUQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtZXNzYWdlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICB9DQp9\"\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the given document has been updated successfully in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/DocumentResponse" - } - }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while updating the given document in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "Deletes the stored document from API Gateway", - "operationId" : "deleteDocument", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "documentId", - "in" : "path", - "description" : "Id of the document for deletion", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the given document has been deleted successfully from API Gateway." - }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while deleting the given document from API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "patch" : { - "operationId" : "patchDocument", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "The request payload to patch the document in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Document" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"displayName\": \"APIGatewayPortsInfoDocument Updated\"\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the given document has been patched successfully in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/DocumentResponse" - } - }, - "400" : { - "description" : "This status code indicates invalid request or bad input." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "404" : { - "description" : "This status code indicates that the requested resource is not found." - }, - "405" : { - "description" : "This status code indicates that the requested HTTP method is not supported for the resource." - }, - "500" : { - "description" : "This status code indicates an error occurred while patching the given document in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "Document" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "The unique identifier of the document as stored in API Gateway.", - "readOnly" : true - }, - "displayName" : { - "type" : "string", - "description" : "The display name of the attached document." - }, - "fileName" : { - "type" : "string", - "description" : "The original name of the file uploaded to API Gateway." - }, - "fileContent" : { - "type" : "string", - "description" : "The complete file content in data URL format." - } - }, - "description" : "This model is used to store any document in API Gateway." - }, - "DocumentResponse" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "The unique identifier of the document as stored in API Gateway.", - "readOnly" : true - } - }, - "description" : "This defines the response for documents." - } - } +{ + "swagger" : "2.0", + "info" : { + "description" : "API Gateway Document Management Service allows you to store/manage the Documents associated to API in the API Gateway. Any user with the 'Manage APIs' functional privilege can manage the documents in the API Gateway. By default, the users who are part of either API-Gateway-Providers or API-Gateway-Administrators groups will have this privilege.\n\nAny document can be stored and attached to any of these APIs types - REST APIs, SOAP APIs, WebSocket APIs and OData APIs. ", + "version" : "10.3", + "title" : "API Gateway Document Management Service" + }, + "host" : "localhost:5555", + "basePath" : "/rest/apigateway", + "schemes" : [ "http" ], + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "paths" : { + "/documents/{documentId}" : { + "get" : { + "description" : "Retrieves the requested document from API Gateway", + "operationId" : "getDocument", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "documentId", + "in" : "path", + "description" : "The unique identifier of the document for retrieving from API Gateway.", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the given document has been retrieved successfully from API Gateway.", + "schema" : { + "$ref" : "#/definitions/Document" + }, + "examples" : { + "application/json" : "{\r\n\t\"documents\": [{\r\n\t\t\"id\": \"c98c7290-bc68-4da3-a39e-545c714e75bc\",\r\n\t\t\"fileName\": \"SamplePowerpoint.pptx\",\r\n\t\t\"displayName\": \"How to upload documents to the store?\",\r\n\t\t\"fileContent\": \"data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,UEsDBBQABgAIAAAAIQD93q/s6gEAAFIPAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMl990JrRLqv6+ONgR6nB3mzU7T/S6zeFFiF7yGWlYgyJtgnR813PvL8QsEZ/QW5+BJw0oMXXv4aH5oxlxCPLnIolA8a5hyjt9KsZloQZYhki/OENKCucg0qojmgSOpU1V9qrRlQLtjiqvVkK62BtGvsTT/zw7D4Aydg3ku5PObCsWzs3TDNTxzwWIaKWuQcnvnrahleR9U26jd3PYPAAD//wMAUEsDBBQABgAIAAAAIQBL9T3svwAAADcBAAAgAAAAcHB0L3NsaWRlcy9fcmVscy9zbGlkZTIueG1sLnJlbHOEj8EKwjAQRO+C/xD2blI9iEhTLyIInkQ/YEm2bbBNQjaK/XtzrCB4nB3mzU59eI+DeFFiF7yGtaxAkDfBOt9puN9Oqx0IzugtDsGThokYDs1yUV9pwFxC3LvIolA8a+hzjnul2PQ0IssQyRenDWnEXGTqVETzwI7Upqq2Ks0Z0HwxxdlqSGe7BnGbYmn+zw5t6wwdg3mO5POPCsWDs3TBKTxzwWLqKGuQcn7nudjI8j6oplZfc5sPAAAA//8DAFBLAwQUAAYACAAAACEAS/U97L8AAAA3AQAAIAAAAHBwdC9zbGlkZXMvX3JlbHMvc2xpZGUzLnhtbC5yZWxzhI/BCsIwEETvgv8Q9m5SPYhIUy8iCJ5EP2BJtm2wTUI2iv17c6wgeJwd5s1OfXiPg3hRYhe8hrWsQJA3wTrfabjfTqsdCM7oLQ7Bk4aJGA7NclFfacBcQty7yKJQPGvoc457pdj0NCLLEMkXpw1pxFxk6lRE88CO1KaqtirNGdB8McXZakhnuwZxm2Jp/s8ObesMHYN5juTzjwrFg7N0wSk8c8Fi6ihrkHJ+57nYyPI+qKZWX3ObDwAAAP//AwBQSwMEFAAGAAgAAAAhAEv1Pey/AAAANwEAACAAAABwcHQvc2xpZGVzL19yZWxzL3NsaWRlNS54bWwucmVsc4SPwQrCMBBE74L/EPZuUj2ISFMvIgieRDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyVz06EMBDG7ya+A+ldCuw/NVv2Ykz2YGJ0fYAKAzSWtmnrKm9vw67Ibjb10nAhmaH95pePmWG9+W55tAdtmBQEpXGCIhCFLJmoCXrbPd7coshYKkrKpQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo\"\r\n\t}]\r\n}" + } + }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while retrieving the given document from API Gateway." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "operationId" : "updateDocumentContent", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "documentId", + "in" : "path", + "description" : "The unique identifier of the document to update", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "in" : "body", + "name" : "body", + "description" : "The request payload to update the document in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Document" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"displayName\": \"APIGatewayPortsInfoDocumentUpdated\",\r\n\t\"fileName\": \"APIGatewayPorts.json\",\r\n\t\"fileContent\": \"data:;base64,ew0KICAic3dhZ2dlciIgOiAiMi4wIiwNCiAgImluZm8iIDogew0KICAgICJkZXNjcmlwdGlvbiIgOiAiVGhpcyBzd2FnZ2VyIGRvYyBjb250YWlucyBBUEkgRGVmaW5pdGlvbiBvZiB0aGUgcG9ydHMgQ1JVRCBvcGVyYXRpb25zLiIsDQogICAgInZlcnNpb24iIDogIjEwLjEiLA0KICAgICJ0aXRsZSIgOiAiUG9ydHMgY29uZmlndXJhdGlvbnMuIg0KICB9LA0KICAiaG9zdCIgOiAibG9jYWxob3N0OjU1NTUiLA0KICAiYmFzZVBhdGgiIDogIi9yZXN0L2FwaWdhdGV3YXkiLA0KICAic2NoZW1lcyIgOiBbICJodHRwIiBdLA0KICAiY29uc3VtZXMiIDogWyAicGxhaW4vdGV4dCIgXSwNCiAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICJwYXRocyIgOiB7DQogICAgIi9wb3J0cyIgOiB7DQogICAgICAicG9zdCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiY3JlYXRlUG9ydCIsDQogICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQogICAgICAgICAgImluIiA6ICJib2R5IiwNCiAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQogICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJwb3J0IHBheWxvYWQiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJzY2hlbWEiIDogew0KICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydCINCiAgICAgICAgICB9DQogICAgICAgIH0gXSwNCiAgICAgICAgInJlc3BvbnNlcyIgOiB7DQogICAgICAgICAgIjIwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIkNyZWF0ZWQiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQmFkIHJlcXVlc3QiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAxIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQWNjZXNzIERlbmllZCINCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgICJzZWN1cml0eSIgOiBbIHsNCiAgICAgICAgICAiQmFzaWMiIDogWyBdDQogICAgICAgIH0gXQ0KICAgICAgfSwNCiAgICAgICJwdXQiIDogew0KICAgICAgICAib3BlcmF0aW9uSWQiIDogInVwZGF0ZVBvcnQiLA0KICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KICAgICAgICAgICJpbiIgOiAiYm9keSIsDQogICAgICAgICAgIm5hbWUiIDogImJvZHkiLA0KICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCiAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCiAgICAgICAgICAic2NoZW1hIiA6IHsNCiAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgfQ0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICIyMDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNTAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAic2VjdXJpdHkiIDogWyB7DQogICAgICAgICAgIkJhc2ljIiA6IFsgXQ0KICAgICAgICB9IF0NCiAgICAgIH0sDQogICAgICAiZGVsZXRlIiA6IHsNCiAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJkZWxldGVQb3J0IiwNCiAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCiAgICAgICAgICAibmFtZSIgOiAibGlzdGVuZXJLZXkiLA0KICAgICAgICAgICJpbiIgOiAicXVlcnkiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KICAgICAgICAgICJ4LWV4YW1wbGUiIDogIkhUVFBMaXN0ZW5lckA1NTU1Ig0KICAgICAgICB9LCB7DQogICAgICAgICAgIm5hbWUiIDogInBrZyIsDQogICAgICAgICAgImluIiA6ICJxdWVyeSIsDQogICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQogICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQogICAgICAgICAgIngtZXhhbXBsZSIgOiAiV21Sb290Ig0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICI0MDEiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiMjA0IiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwNCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgICJzZWN1cml0eSIgOiBbIHsNCiAgICAgICAgICAiQmFzaWMiIDogWyBdDQogICAgICAgIH0gXQ0KICAgICAgfQ0KICAgIH0sDQogICAgIi9wb3J0cy9lbmFibGUiIDogew0KICAgICAgInB1dCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiZW5hYmxlUG9ydCIsDQogICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQogICAgICAgICAgImluIiA6ICJib2R5IiwNCiAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQogICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJzY2hlbWEiIDogew0KICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydEVuYWJsZURpc2FibGUiDQogICAgICAgICAgfQ0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICIyMDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnRFbmFibGVEaXNhYmxlIg0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0sDQogICAgICAgICAgIjUwMCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDEiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgInNlY3VyaXR5IiA6IFsgew0KICAgICAgICAgICJCYXNpYyIgOiBbIF0NCiAgICAgICAgfSBdDQogICAgICB9DQogICAgfSwNCiAgICAiL3BvcnRzL2Rpc2FibGUiIDogew0KICAgICAgInB1dCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiZGRpc2FibGVQb3J0IiwNCiAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCiAgICAgICAgICAiaW4iIDogImJvZHkiLA0KICAgICAgICAgICJuYW1lIiA6ICJib2R5IiwNCiAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQogICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQogICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qb3J0RW5hYmxlRGlzYWJsZSINCiAgICAgICAgICB9DQogICAgICAgIH0gXSwNCiAgICAgICAgInJlc3BvbnNlcyIgOiB7DQogICAgICAgICAgIjIwMCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQogICAgICAgICAgICAic2NoZW1hIiA6IHsNCiAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydEVuYWJsZURpc2FibGUiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNTAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAic2VjdXJpdHkiIDogWyB7DQogICAgICAgICAgIkJhc2ljIiA6IFsgXQ0KICAgICAgICB9IF0NCiAgICAgIH0NCiAgICB9DQogIH0sDQogICJzZWN1cml0eURlZmluaXRpb25zIiA6IHsNCiAgICAiQmFzaWMiIDogew0KICAgICAgImRlc2NyaXB0aW9uIiA6ICJBUEkgR2F0ZXdheSBBZG1pbmlzdHJhdG9yIGFuZCBBUEkgR2F0ZXdheSBwcm92aWRlciIsDQogICAgICAidHlwZSIgOiAiYmFzaWMiDQogICAgfQ0KICB9LA0KICAiZGVmaW5pdGlvbnMiIDogew0KICAgICJQb3J0IiA6IHsNCiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KICAgICAgInByb3BlcnRpZXMiIDogew0KICAgICAgICAicG9ydCIgOiB7DQogICAgICAgICAgInR5cGUiIDogImludGVnZXIiLA0KICAgICAgICAgICJmb3JtYXQiIDogImludDMyIg0KICAgICAgICB9LA0KICAgICAgICAicHJvdG9jb2wiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwa2ciIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJlbmFibGVkIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAia2V5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAidW5pcXVlSUQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwb3J0QWxpYXMiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwb3J0RGVzY3JpcHRpb24iIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJmYWN0b3J5S2V5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiY29uZmlnVVJMIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAicHJvdmlkZXIiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJsaXN0ZW5lclR5cGUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJjbGllbnRBdXRoIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaWRQcm92aWRlciIgOiB7DQogICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCiAgICAgICAgfSwNCiAgICAgICAgInNzbCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgIm1heFF1ZXVlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAia2VlcEFsaXZlVGltZW91dCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInRocmVhZFBvb2wiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtaW5UaHJlYWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtYXhUaHJlYWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJ0aHJlYWRQcmlvcml0eSIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInVzZWRUaHJlYWRDb3VudCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImludGVybmFsUG9ydCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImN1ckRlbGF5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAic3RlcHNpemUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJzdXNwZW5kZWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJqc3NlRW5hYmxlZFByb3RvY29scyIgOiB7DQogICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCiAgICAgICAgfSwNCiAgICAgICAgInN0YXR1cyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImxpc3RlbmluZyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImFjY2Vzc01vZGUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJoYXNBY2Nlc3NMaXN0IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaXBBY2Nlc3NNb2RlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaGFzSVBBY2Nlc3NMaXN0IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGRlZmluZXMgdGhlIHZhcmlvdXMgZmllbGRzIHRoYXQgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgcG9ydC4iDQogICAgfSwNCiAgICAiUG9ydEVuYWJsZURpc2FibGUiIDogew0KICAgICAgInR5cGUiIDogIm9iamVjdCIsDQogICAgICAicHJvcGVydGllcyIgOiB7DQogICAgICAgICJsaXN0ZW5lcktleSIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInBrZyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInJlcXVlc3RTZXJ2aWNlU3RhdHVzIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiZ2V0JHJlc291cmNlSUQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtZXNzYWdlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICB9DQp9\"\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the given document has been updated successfully in API Gateway.", + "schema" : { + "$ref" : "#/definitions/DocumentResponse" + }, + "examples" : { + "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while updating the given document in API Gateway." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "Deletes the stored document from API Gateway", + "operationId" : "deleteDocument", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "documentId", + "in" : "path", + "description" : "Id of the document for deletion", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the given document has been deleted successfully from API Gateway." + }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while deleting the given document from API Gateway." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "patch" : { + "operationId" : "patchDocument", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "The request payload to patch the document in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Document" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"displayName\": \"APIGatewayPortsInfoDocument Updated\"\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the given document has been patched successfully in API Gateway.", + "schema" : { + "$ref" : "#/definitions/DocumentResponse" + }, + "examples" : { + "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while patching the given document in API Gateway." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/documents" : { + "post" : { + "operationId" : "storeDocument", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "The request payload to store the document in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Document" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"displayName\": \"APIGatewayPortsInfoDocument\",\r\n\t\"fileName\": \"APIGatewayPorts.json\",\r\n\t\"fileContent\": \"data:;base64,ew0KICAic3dhZ2dlciIgOiAiMi4wIiwNCiAgImluZm8iIDogew0KICAgICJkZXNjcmlwdGlvbiIgOiAiVGhpcyBzd2FnZ2VyIGRvYyBjb250YWlucyBBUEkgRGVmaW5pdGlvbiBvZiB0aGUgcG9ydHMgQ1JVRCBvcGVyYXRpb25zLiIsDQogICAgInZlcnNpb24iIDogIjEwLjEiLA0KICAgICJ0aXRsZSIgOiAiUG9ydHMgY29uZmlndXJhdGlvbnMuIg0KICB9LA0KICAiaG9zdCIgOiAibG9jYWxob3N0OjU1NTUiLA0KICAiYmFzZVBhdGgiIDogIi9yZXN0L2FwaWdhdGV3YXkiLA0KICAic2NoZW1lcyIgOiBbICJodHRwIiBdLA0KICAiY29uc3VtZXMiIDogWyAicGxhaW4vdGV4dCIgXSwNCiAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICJwYXRocyIgOiB7DQogICAgIi9wb3J0cyIgOiB7DQogICAgICAicG9zdCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiY3JlYXRlUG9ydCIsDQogICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQogICAgICAgICAgImluIiA6ICJib2R5IiwNCiAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQogICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJwb3J0IHBheWxvYWQiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJzY2hlbWEiIDogew0KICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydCINCiAgICAgICAgICB9DQogICAgICAgIH0gXSwNCiAgICAgICAgInJlc3BvbnNlcyIgOiB7DQogICAgICAgICAgIjIwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIkNyZWF0ZWQiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQmFkIHJlcXVlc3QiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAxIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQWNjZXNzIERlbmllZCINCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgICJzZWN1cml0eSIgOiBbIHsNCiAgICAgICAgICAiQmFzaWMiIDogWyBdDQogICAgICAgIH0gXQ0KICAgICAgfSwNCiAgICAgICJwdXQiIDogew0KICAgICAgICAib3BlcmF0aW9uSWQiIDogInVwZGF0ZVBvcnQiLA0KICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KICAgICAgICAgICJpbiIgOiAiYm9keSIsDQogICAgICAgICAgIm5hbWUiIDogImJvZHkiLA0KICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCiAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCiAgICAgICAgICAic2NoZW1hIiA6IHsNCiAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgfQ0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICIyMDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnQiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNTAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAic2VjdXJpdHkiIDogWyB7DQogICAgICAgICAgIkJhc2ljIiA6IFsgXQ0KICAgICAgICB9IF0NCiAgICAgIH0sDQogICAgICAiZGVsZXRlIiA6IHsNCiAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJkZWxldGVQb3J0IiwNCiAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCiAgICAgICAgICAibmFtZSIgOiAibGlzdGVuZXJLZXkiLA0KICAgICAgICAgICJpbiIgOiAicXVlcnkiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KICAgICAgICAgICJ4LWV4YW1wbGUiIDogIkhUVFBMaXN0ZW5lckA1NTU1Ig0KICAgICAgICB9LCB7DQogICAgICAgICAgIm5hbWUiIDogInBrZyIsDQogICAgICAgICAgImluIiA6ICJxdWVyeSIsDQogICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQogICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQogICAgICAgICAgIngtZXhhbXBsZSIgOiAiV21Sb290Ig0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICI0MDEiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiMjA0IiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwNCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgICJzZWN1cml0eSIgOiBbIHsNCiAgICAgICAgICAiQmFzaWMiIDogWyBdDQogICAgICAgIH0gXQ0KICAgICAgfQ0KICAgIH0sDQogICAgIi9wb3J0cy9lbmFibGUiIDogew0KICAgICAgInB1dCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiZW5hYmxlUG9ydCIsDQogICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQogICAgICAgICAgImluIiA6ICJib2R5IiwNCiAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQogICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KICAgICAgICAgICJzY2hlbWEiIDogew0KICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydEVuYWJsZURpc2FibGUiDQogICAgICAgICAgfQ0KICAgICAgICB9IF0sDQogICAgICAgICJyZXNwb25zZXMiIDogew0KICAgICAgICAgICIyMDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KICAgICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvcnRFbmFibGVEaXNhYmxlIg0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0sDQogICAgICAgICAgIjUwMCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDEiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfSwNCiAgICAgICAgICAiNDAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgInNlY3VyaXR5IiA6IFsgew0KICAgICAgICAgICJCYXNpYyIgOiBbIF0NCiAgICAgICAgfSBdDQogICAgICB9DQogICAgfSwNCiAgICAiL3BvcnRzL2Rpc2FibGUiIDogew0KICAgICAgInB1dCIgOiB7DQogICAgICAgICJvcGVyYXRpb25JZCIgOiAiZGRpc2FibGVQb3J0IiwNCiAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQogICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCiAgICAgICAgICAiaW4iIDogImJvZHkiLA0KICAgICAgICAgICJuYW1lIiA6ICJib2R5IiwNCiAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQogICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQogICAgICAgICAgInNjaGVtYSIgOiB7DQogICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qb3J0RW5hYmxlRGlzYWJsZSINCiAgICAgICAgICB9DQogICAgICAgIH0gXSwNCiAgICAgICAgInJlc3BvbnNlcyIgOiB7DQogICAgICAgICAgIjIwMCIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQogICAgICAgICAgICAic2NoZW1hIiA6IHsNCiAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUG9ydEVuYWJsZURpc2FibGUiDQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICAiNTAwIiA6IHsNCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIg0KICAgICAgICAgIH0sDQogICAgICAgICAgIjQwMSIgOiB7DQogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIiINCiAgICAgICAgICB9LA0KICAgICAgICAgICI0MDAiIDogew0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAic2VjdXJpdHkiIDogWyB7DQogICAgICAgICAgIkJhc2ljIiA6IFsgXQ0KICAgICAgICB9IF0NCiAgICAgIH0NCiAgICB9DQogIH0sDQogICJzZWN1cml0eURlZmluaXRpb25zIiA6IHsNCiAgICAiQmFzaWMiIDogew0KICAgICAgImRlc2NyaXB0aW9uIiA6ICJBUEkgR2F0ZXdheSBBZG1pbmlzdHJhdG9yIGFuZCBBUEkgR2F0ZXdheSBwcm92aWRlciIsDQogICAgICAidHlwZSIgOiAiYmFzaWMiDQogICAgfQ0KICB9LA0KICAiZGVmaW5pdGlvbnMiIDogew0KICAgICJQb3J0IiA6IHsNCiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KICAgICAgInByb3BlcnRpZXMiIDogew0KICAgICAgICAicG9ydCIgOiB7DQogICAgICAgICAgInR5cGUiIDogImludGVnZXIiLA0KICAgICAgICAgICJmb3JtYXQiIDogImludDMyIg0KICAgICAgICB9LA0KICAgICAgICAicHJvdG9jb2wiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwa2ciIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJlbmFibGVkIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAia2V5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAidW5pcXVlSUQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwb3J0QWxpYXMiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJwb3J0RGVzY3JpcHRpb24iIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJmYWN0b3J5S2V5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiY29uZmlnVVJMIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAicHJvdmlkZXIiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJsaXN0ZW5lclR5cGUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJjbGllbnRBdXRoIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaWRQcm92aWRlciIgOiB7DQogICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCiAgICAgICAgfSwNCiAgICAgICAgInNzbCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgIm1heFF1ZXVlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAia2VlcEFsaXZlVGltZW91dCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInRocmVhZFBvb2wiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtaW5UaHJlYWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtYXhUaHJlYWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJ0aHJlYWRQcmlvcml0eSIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInVzZWRUaHJlYWRDb3VudCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImludGVybmFsUG9ydCIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImN1ckRlbGF5IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAic3RlcHNpemUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJzdXNwZW5kZWQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJqc3NlRW5hYmxlZFByb3RvY29scyIgOiB7DQogICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCiAgICAgICAgfSwNCiAgICAgICAgInN0YXR1cyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImxpc3RlbmluZyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgImFjY2Vzc01vZGUiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJoYXNBY2Nlc3NMaXN0IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaXBBY2Nlc3NNb2RlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiaGFzSVBBY2Nlc3NMaXN0IiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGRlZmluZXMgdGhlIHZhcmlvdXMgZmllbGRzIHRoYXQgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgcG9ydC4iDQogICAgfSwNCiAgICAiUG9ydEVuYWJsZURpc2FibGUiIDogew0KICAgICAgInR5cGUiIDogIm9iamVjdCIsDQogICAgICAicHJvcGVydGllcyIgOiB7DQogICAgICAgICJsaXN0ZW5lcktleSIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInBrZyIgOiB7DQogICAgICAgICAgInR5cGUiIDogInN0cmluZyINCiAgICAgICAgfSwNCiAgICAgICAgInJlcXVlc3RTZXJ2aWNlU3RhdHVzIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9LA0KICAgICAgICAiZ2V0JHJlc291cmNlSUQiIDogew0KICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQogICAgICAgIH0sDQogICAgICAgICJtZXNzYWdlIiA6IHsNCiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICB9DQp9\"\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the given document has been stored successfully in API Gateway.", + "schema" : { + "$ref" : "#/definitions/DocumentResponse" + }, + "examples" : { + "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicates invalid request or bad input." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "404" : { + "description" : "This status code indicates that the requested resource is not found." + }, + "405" : { + "description" : "This status code indicates that the requested HTTP method is not supported for the resource." + }, + "500" : { + "description" : "This status code indicates an error occurred while storing the given document in API Gateway." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + } + }, + "securityDefinitions" : { + "Basic" : { + "description" : "API Gateway Administrator and API Gateway provider", + "type" : "basic" + } + }, + "definitions" : { + "Document" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "The unique identifier of the document as stored in API Gateway.", + "readOnly" : true + }, + "displayName" : { + "type" : "string", + "description" : "The display name of the attached document." + }, + "fileName" : { + "type" : "string", + "description" : "The original name of the file uploaded to API Gateway." + }, + "fileContent" : { + "type" : "string", + "description" : "The complete file content in data URL format." + } + }, + "description" : "This model is used to store any document in API Gateway." + }, + "DocumentResponse" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "The unique identifier of the document as stored in API Gateway.", + "readOnly" : true + } + }, + "description" : "This defines the response for documents." + } + } } \ No newline at end of file diff --git a/apigatewayservices/APIGatewayInternalService.json b/apigatewayservices/APIGatewayInternalService.json index e7cfba3..cc83c0b 100644 --- a/apigatewayservices/APIGatewayInternalService.json +++ b/apigatewayservices/APIGatewayInternalService.json @@ -2,7 +2,7 @@ "swagger" : "2.0", "info" : { "description" : "Services in this category work on identified application. API Gateway will first try to identify the application based on identifiers such as API Key, OAuth token, ip address etc (as defined in the Application) and then executes the API for that application.", - "version" : "10.7", + "version" : "10.3", "title" : "API Gateway Internal Service" }, "host" : "localhost:5555", @@ -32,11 +32,11 @@ "responses" : { "200" : { "description" : "This status code indicates that the access token has been successfully generated.", - "examples" : { - "application/json" : "{\n \"accessToken\": \"eyJraWQiOiJzc29zIiwiYWxnIjoiUlMyNTYifQ.eyJzY3AiOlsiaW52ZW50b3J5Il0sInVpZCI6IjExNDkyODAyNjk0ODQxOTM1NzgzNyIsInN1YiI6IjQwNzQwODcxODE5Mi5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6InRpbWV0cmF2ZWxzIiwiYXpwIjoiODAzYjdmMTYtNDVjNi00YjFjLWJlMjYtNGRhMDUzZDQwNjQwIiwiaXNzIjoidGVzdC1nYXRld2F5LWlzc3VlciIsImV4cCI6MTU0Mzk5NjExNCwiaWF0IjoxNTQzOTkyNTE1LCJqdGkiOiIzZGQ5M2FmOC0yMWVmLTQyMDYtYTBiNy01MTg2NDUxMTM0YWYifQ.Dty2iLk_DJRZLU0CYhb7Opp_sINP7yRVkgAvafYGrSzDEeWiOXDv_jSO93iQV4TCdU20R5WjypC0HY_xd05VkqozFP0I5irZGYqmVnm8rFonzLXmHBx6JZZdm4Xq-Bq2rTSe08QjOGhd5Xa00FlX2c8-SjYfx3p2wtbBjm2-wsgCqLNCc8m_42VRXpukcpuliZr8dRlrqBU7hUfPHpe-xbn6rsmYPhiS9c9Lau3VK83h2uaj6A6nwq1E2qbG23F9eboZrpjvrSg431ZlPE-jRVy9vNX6n7eIiSLruFwlNwyKnOSuTelzYz__m5mdILaEVTjwjidgI2e-ctdR-4jQWA\",\n \"expiresIn\": 3600,\n \"scopes\": \"inventory\",\n \"tokenType\": \"Bearer\"\n}" - }, "schema" : { "$ref" : "#/definitions/ServiceOutput" + }, + "examples" : { + "application/json" : "{\n \"accessToken\": \"eyJraWQiOiJzc29zIiwiYWxnIjoiUlMyNTYifQ.eyJzY3AiOlsiaW52ZW50b3J5Il0sInVpZCI6IjExNDkyODAyNjk0ODQxOTM1NzgzNyIsInN1YiI6IjQwNzQwODcxODE5Mi5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6InRpbWV0cmF2ZWxzIiwiYXpwIjoiODAzYjdmMTYtNDVjNi00YjFjLWJlMjYtNGRhMDUzZDQwNjQwIiwiaXNzIjoidGVzdC1nYXRld2F5LWlzc3VlciIsImV4cCI6MTU0Mzk5NjExNCwiaWF0IjoxNTQzOTkyNTE1LCJqdGkiOiIzZGQ5M2FmOC0yMWVmLTQyMDYtYTBiNy01MTg2NDUxMTM0YWYifQ.Dty2iLk_DJRZLU0CYhb7Opp_sINP7yRVkgAvafYGrSzDEeWiOXDv_jSO93iQV4TCdU20R5WjypC0HY_xd05VkqozFP0I5irZGYqmVnm8rFonzLXmHBx6JZZdm4Xq-Bq2rTSe08QjOGhd5Xa00FlX2c8-SjYfx3p2wtbBjm2-wsgCqLNCc8m_42VRXpukcpuliZr8dRlrqBU7hUfPHpe-xbn6rsmYPhiS9c9Lau3VK83h2uaj6A6nwq1E2qbG23F9eboZrpjvrSg431ZlPE-jRVy9vNX6n7eIiSLruFwlNwyKnOSuTelzYz__m5mdILaEVTjwjidgI2e-ctdR-4jQWA\",\n \"expiresIn\": 3600,\n \"scopes\": \"inventory\",\n \"tokenType\": \"Bearer\"\n}" } }, "400" : { @@ -50,7 +50,7 @@ }, "/security/getJsonWebToken" : { "post" : { - "description" : "Generate JWT token with custom claims supplied in the request", + "description" : "This method can be used to generate JWT with the given claims for the identified application. API Gateway will first try to identify the application based on identifiers such as API Key, OAuth token, ip address etc (as defined in the Application) and then generates a JWT token for that application with the claims (custom) submitted in the request. This method is different from /jwt/getJsonWebToken service. With /pub/apigateway/jwt/getJsonWebToken, API Gateway generates JWT token for the authenticated user with default claims", "operationId" : "getJsonWebToken-New", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], @@ -69,11 +69,11 @@ "responses" : { "200" : { "description" : "This status code indicates that a JWT has been successfully created.", - "examples" : { - "application/json" : "{\n \"expiresIn\": 600,\n \"tokenType\": \"Bearer\",\n \"accessToken\": \"eyJraWQiOiJzc29zIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI4MDNiN2YxNi00NWM2LTRiMWMtYmUyNi00ZGEwNTNkNDA2NDAiLCJhdWQiOiJzd2FnZ2VyLWRvYy1hcHAiLCJpc3MiOiJ0ZXN0LWdhdGV3YXktaXNzdWVyIiwiaXNBZG1pbiI6dHJ1ZSwiZXhwIjoxNTQzOTkyMDQ1LCJmaXJzdF9uYW1lIjoiQm9iIiwiaWF0IjoxNTQzOTkxNDQ1fQ.FfV4XxEbsrCgpJCZ1GOLbnRYilvCkFfsLMcm00Xxt4ujNcNY7j-_dUjQSxgn7B1njnQ3obEVe-5UkgYBT8cnnrrJtEjjjfSiY40VECrdqm1QopCx04I71hz2qWhxKphSgk6KkZVioyqme0U5LO9JAu-kw1s1IBPmRWa3iBobWAbugnw8tz5J6T3LiwWVj32dvVtJmc9boq3fkndHmRTcQuk9V6uwArUXxU78v5P92SVjZOyQRGex46FOGqPjNauCkAOno8a3oA5qjIGeFJcQ6eOddFdPc1iZ6SwCCBpAbR_qF1LbPHtG0EXE8buI_rTS2zJBn2_d9cjFkLvL3HBYxQ\"\n}" - }, "schema" : { "$ref" : "#/definitions/JWTServiceOutput" + }, + "examples" : { + "application/json" : "{\n \"expiresIn\": 600,\n \"tokenType\": \"Bearer\",\n \"accessToken\": \"eyJraWQiOiJzc29zIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI4MDNiN2YxNi00NWM2LTRiMWMtYmUyNi00ZGEwNTNkNDA2NDAiLCJhdWQiOiJzd2FnZ2VyLWRvYy1hcHAiLCJpc3MiOiJ0ZXN0LWdhdGV3YXktaXNzdWVyIiwiaXNBZG1pbiI6dHJ1ZSwiZXhwIjoxNTQzOTkyMDQ1LCJmaXJzdF9uYW1lIjoiQm9iIiwiaWF0IjoxNTQzOTkxNDQ1fQ.FfV4XxEbsrCgpJCZ1GOLbnRYilvCkFfsLMcm00Xxt4ujNcNY7j-_dUjQSxgn7B1njnQ3obEVe-5UkgYBT8cnnrrJtEjjjfSiY40VECrdqm1QopCx04I71hz2qWhxKphSgk6KkZVioyqme0U5LO9JAu-kw1s1IBPmRWa3iBobWAbugnw8tz5J6T3LiwWVj32dvVtJmc9boq3fkndHmRTcQuk9V6uwArUXxU78v5P92SVjZOyQRGex46FOGqPjNauCkAOno8a3oA5qjIGeFJcQ6eOddFdPc1iZ6SwCCBpAbR_qF1LbPHtG0EXE8buI_rTS2zJBn2_d9cjFkLvL3HBYxQ\"\n}" } }, "400" : { diff --git a/apigatewayservices/APIGatewayPolicyManagement.json b/apigatewayservices/APIGatewayPolicyManagement.json index 5a7936c..af84dce 100644 --- a/apigatewayservices/APIGatewayPolicyManagement.json +++ b/apigatewayservices/APIGatewayPolicyManagement.json @@ -1,2183 +1,2854 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "Policies are the set of rules that gets enforced on the APIs (or even at finer levels like operations/methods) for every invocation of the API. In API Gateway, a policy is made up of a set of policy actions. During an invocation of an API, API Gateway executes every policy action in the policy in a sequential manner. Policy action defines the rule along with its parameters that is applied on the resources/operation of an API. Every policy action will belong to either one or more policy stages. A policy stage is a logical grouping of the policy actions. A policy is divided into different stages that depict the execution order of the policy actions. A stage might contain one or more policy action. \n\nUse this method to get a list of all the policy stages\n\nThe policies can be categorized into Service level policies, Scope level policies, Package level policies, Policy Templates and Global policies. \n\nA service level policy is applicable for all resources/operation inside that API. \n\nA scope level policy is applicable for all resources/operation inside that scope. It will override or add the runtime enforcements based on the enforcement type. \n\nA Global Policy is applicable to all APIs matching the scope defined inside the policy. Global policy will take precedence over scope and service level policy. \n\nPackage level policies are created as part of the creation of packages and plans. A package level policy will be applied over global, scope and service level policies. \n\nIf one needs to apply the same set of policy actions to different APIs with just changes to the policy parameter values, then he/she can create a Policy template and can be apply it to the APIs whenever needed. While applying policy template on APIs user need to clone policy template and attach to the corresponding API. It will avoid recreating the policies. \n\n Any user with the 'Manage APIs' functional privilege can manage the service level polices. In order to manage Global policies, Threat protection policies etc, users need additional functional privileges. By default, the users who are part of API-Gateway-Administrators group will have all privileges.\n\nThis swagger doc also contains API Definition for managing Denied IP addresses. Only Administrator can invoke the API methods. Denied IPs are the IPs that violated the threat protection rules configured. Using this API you can retrieve the list of IPs denied and you can exclude the IPs from the list of denied IPs using the delete HTTP method. \n\n API Gateway uses WS-Security to protect the SOAP services at the message level. By default, API Gateway supports a number of security policies for the SOAP services like WSS UserName, SAML, Kerberos, Encryption etc. In addition to this, API Gateway also provides an extension using custom policy assertions that allows the API providers to extend and provide additional security policies which are not supported by API Gateway. In WS Security, Policy assertions can be used in defining individual security requirements or constraints. These individual policy assertions can be combined to create security policies that can be used to secure messages exchanged between a Web service and a client. ", - "version" : "10.7", - "title" : "API Gateway Policy Management Service" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "paths" : { - "/policies" : { - "get" : { - "description" : "This REST request is used to retrieve list of all policies from API Gateway. This can also be used to retrieve details for particular set of policies by specifying the policy ids in the query string.", - "operationId" : "getPolicies", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyIds", - "in" : "query", - "description" : "This query parameter is used to retrieve policy details of particular set of policies. The policy IDs need to be separated using ',' to specify more than one policy id", - "required" : false, - "type" : "string", - "x-example" : "policyIds=1807d561-e0a1-4d06-bfbf-49bff4c5dfae,d7672248-7d25-444e-a9b6-853e1d95d1c6" - }, { - "name" : "stage", - "in" : "query", - "description" : "This query parameter is used to retrieve the Threat Protection policies created in API Gateway. The value of this query parameter should be threat protection, if other values specified it wont respect that value and return all the policies in the API Gateway", - "required" : false, - "type" : "string", - "x-example" : "stage=threatprotection", - "enum" : [ "threatprotection" ] - }, { - "name" : "policyType", - "in" : "query", - "description" : "This query parameter is used to retrieve policy details for a list of policies of a particular policy type. The policy type can be template or global. If the policy type is template then policy details of all the policy templates is returned. If the policy type is global then the policy details of global policies is returned.If any other policy type is specified all policies are returned", - "required" : false, - "type" : "string", - "x-example" : "policyType=global", - "enum" : [ "template", "global" ] - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the policy details are available and policy details of the policies will be sent as response. This example shows the policy details of list of global policies.", - "examples" : { - "application/json" : "{\r\n \"policy\": [\r\n {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": true,\r\n \"systemPolicy\": false\r\n },\r\n {\r\n \"id\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n },\r\n {\r\n \"id\": \"GlobalLogInvocationPolicy\",\r\n \"names\": [\r\n {\r\n \"value\": \"Transaction logging\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"This is a system policy, which has log invocation policy and filters associated to log request or response payloads to a specified destination. These transactions are monitored and logged across all APIs in API Gateway\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"GlobalLogInvocationPolicyAction\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"LMT\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": true\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Policy" - } - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the policy details." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "This REST request is used to create a policy in API Gateway. The body of this request should contain the payload of the policy. Using this request we can create Policies of different type.\n To create a service, scope, package and template level policy we can add the policy payload and set the corresponding policy scope. \nTo create a Global policy user should have API Gateway Administrator access. Other users cannot create global policies. To Create Global policy send the policy payload along with scope details and policy scope set to global. Similarly, to create a threat protection policy user have to send the policy along with the policy enforcement id of Threat protection policy actions. The policy actions needs to be created before adding the enforcement id of policy actions to policy. Threat protection rules are another type of global level policies which are applied to all requests and responses. The threat protection policy enforcement cannot be used in any other policies and other policy enforcement cannot be used in threat protection policies.\n Using this request we can also clone a policy. To clone a policy user have to set the appropriate query parameters.\n The effective policy calculation for policy(Service and scope level policy) is not calculated till it is referred in the API. But for a global policy the effective policy is calculated while creating the policy itself. Policy with template as policy scope cannot be referred from any API or scope. User needs to clone the policy templates and set the policy scope to either service or scope or global before referring it from the API. Policy should have only one occurrence of any stage. Multiple policy enforcements can be added to the applicable stages. To know about the list of stages and applicable policy enforcements on that stage please refer /policyStages resource.", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Policy" - }, - "x-examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Global Policy for all employee APIs. IT will make sure the request are authenticated before sent to native service\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"31c729f9-4f1c-4074-acba-6975c0668433\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" - } - }, { - "name" : "action", - "in" : "query", - "description" : " This query parameter represents the action user want to perform. Currently user can only clone the policy. Hence the allowed value for this parameter would be \"clone\". Cloning is duplication of one or more policies in to a single policy. All the policy actions specified inside the policies are also be duplicated while creating the duplicate policy.The effective policy is not calculated for this until this policy is referred from the API.", - "required" : false, - "type" : "string", - "x-example" : "action=clone", - "enum" : [ "clone" ] - }, { - "name" : "policyIds", - "in" : "query", - "description" : "This query parameter represents the list of policies from which the new clone policy is created. If you specify list of policies then the newly created policy has all the policy action from all the policies.", - "required" : false, - "type" : "string", - "x-example" : "policyIds=id1,id2,id3" - }, { - "name" : "policyScope", - "in" : "query", - "description" : "This query parameter represents the policy scope of cloned policy. We can clone policy from one policy scope to another policy scope. Allowed policy scope values are global,service,template & scope", - "required" : false, - "type" : "string", - "x-example" : "policyScope=global", - "enum" : [ "global", "service", "template", "scope" ] - } ], - "responses" : { - "201" : { - "description" : " This status code indicates the policy is created/cloned successfully. The response body will contain the policy details of newly created/cloned policy", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Global Policy for all employee APIs. IT will make sure the request are authenticated before sent to native service\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"31c729f9-4f1c-4074-acba-6975c0668433\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to create or clone policy. If the policy scope is GLOBAL and if user gets this status code then the user might not have API Gateway Administrator access." - }, - "400" : { - "description" : "This status code indicates that request body is not correct.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of key and payload.\"\r\n}" - } - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error during the creation of the policy. For example if it is a global policy we cannot create policy with out scope and the examples show a message of such scenario ", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" With out Setting scope, policy actions cannot be added. Please select the applicable Service Type in scope before adding Policy Action.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}" : { - "get" : { - "description" : "This REST request is used to retrieve the policy details for a specified policy in API Gateway. If policy id is available then the policy details is sent in response.", - "operationId" : "getPolicyById", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the policy id for which the policy details needs to be retrieved", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "The policy detail of the specified policy is sent in response body. This sample contains policy details of a global policy.", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the policy details." - }, - "404" : { - "description" : "This status code indicates that the policy id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This REST request is used to update the policy details for a specific policy. For Global policy user should have API Gateway administrator access to update global policy", - "operationId" : "updatePolicyByID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the policy id that needs to be updated.", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - }, { - "in" : "body", - "name" : "body", - "description" : "", - "required" : false, - "schema" : { - "$ref" : "#/definitions/Policy" - }, - "x-examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\" : \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Global Policy for all employee APIs. IT will make sure the request are authenticated before sent to native service\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified policy has been updated successfully and the updated policy details will be available in response body", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Global Policy for all employee APIs. IT will make sure the request are authenticated before sent to native service\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "500" : { - "description" : "This status code indicates that server has encountered an error during the update the of policy. This sample shows the global policy update failed due to conflict cases.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Conflict between global Policy for API - EMP_POJO_WSDL, Operation - updateEmployee - An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"reason\": [\r\n {\r\n \"apiId\": \"421eb4bf-b2d0-40a4-900f-ad5fd0a2484e\",\r\n \"apiName\": \"EMP_POJO_WSDL\",\r\n \"apiType\": \"SOAP\",\r\n \"errorOnResource\": [\r\n {\r\n \"conflictingPolicies\": {\r\n \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\": {\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\"\r\n ],\r\n \"policyId\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"updateEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\": {\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\"\r\n ],\r\n \"policyId\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"addEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\": {\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\"\r\n ],\r\n \"policyId\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"deleteEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\": {\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\"\r\n ],\r\n \"policyId\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"getEmployee\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" - } - }, - "404" : { - "description" : "This status code indicates that the specified policy id is not available in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to update the policy details.If global policy is specified then user should have API Gateway administrator access to update the policy details." - }, - "400" : { - "description" : "This status code indicates that the specified policy does not have proper request. The sample shows the error when tried to update a global policy with any scope defined for the global policy.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" With out Setting scope, policy actions cannot be added. Please select the applicable Service Type in scope before adding Policy Action.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "This REST request is used to delete the policy from API gateway. This request will automatically delete the associated policy action for this policy", - "operationId" : "deletePolicyByID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the policy id that needs to be deleted. If the policy id specified is global policy then it needs to be in inactive state to delete. Active global policy and global policy with systemPolicy property set to true cannot be deleted.", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "204" : { - "description" : "This status code indicates that the specified policy is successfully deleted" - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API gateway provider access to delete the policy. If the specified policy is global then user should have API Administrator access to delete the global policy" - }, - "404" : { - "description" : "This status code indicates that the policy id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - }, - "500" : { - "description" : "This status code indicates that error has occurred during the deletion of policy. The sample shows that the policy cannot be delete since the global policy is in active state.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Policy [Employee Global Policy] is in active state, hence cannot be deleted. Please deactivate the policy to delete\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}/apis" : { - "get" : { - "description" : "This REST request is used to get the list of applicable APIs for a global policy. An API become applicable API for a global policy only if it satisfies the scope specified in the global policy. By default it will return the basic API details of all the applicable APIs either if the API is active or inactive for a global policy. User can use the query parameter \"active\" to retrieve all active APIs for a global policy or all applicable APIs regardless of its status for a global policy.", - "operationId" : "getApplicableAPIsForGlobalPolicyByID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the global policy id for which we need the list of applicable APIs", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - }, { - "name" : "active", - "in" : "query", - "description" : "This is a query parameter. It is used to retrieve the list of applicable APIs for a global policy. If the value for this parameter is 'false' then it will return all the APIs whether it is active or not for the specified global policy. If the value for this flag is 'true' then it will return only the list of applicable active APIs alone for the specified global policy", - "required" : false, - "type" : "string", - "x-example" : "active=false" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the specified global policy is valid and in the response it will contain the list of applicable APIs based on the parameters specified in the request. ", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": [\r\n {\r\n \"api\": {\r\n \"apiName\": \"API Gateway \",\r\n \"apiVersion\": \"10.0\",\r\n \"apiDescription\": \"This swagger doc contain API Definition for API Gateway APIs. It contains swagger definition for all APIs in API Gateway.\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"4869049b-4cef-4c76-b678-14d4970c5241\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n },\r\n {\r\n \"api\": {\r\n \"apiName\": \"EMP\",\r\n \"apiVersion\": \"1.0\",\r\n \"isActive\": true,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"e60d6fe9-3612-469f-b33a-fb4c97c72b3b\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n },\r\n {\r\n \"api\": {\r\n \"apiName\": \"EMP_POJO_WSDL\",\r\n \"apiVersion\": \"1\",\r\n \"isActive\": true,\r\n \"type\": \"SOAP\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"421eb4bf-b2d0-40a4-900f-ad5fd0a2484e\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n },\r\n {\r\n \"api\": {\r\n \"apiName\": \"EMP_REST_SWAGGER\",\r\n \"apiVersion\": \"1.0.0\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"260c11e1-b3eb-4714-aa73-7cd95fc91abb\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/APIResponseDelete" - } - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API gateway provider access to get the list of applicable APIs for the specified global policy." - }, - "404" : { - "description" : "This status code indicates that the specified global policy is not available in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - }, - "400" : { - "description" : "This status code indicate the specified policy is not a global policy.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"5e04581b-a583-495b-83b3-411f9c067054 is not a global policy.\"\r\n}" - } - }, - "500" : { - "description" : "This is status code indicates that server has encounted an while getting applicable APIs for the specified policy" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}/conflicts" : { - "get" : { - "description" : "This REST Request is used to get the conflicts for a global policy. Conflicts between the policies/APIs can arise if the policies contain the conflicting policy actions. For example, a global policy that contains the Identity and Access Policy with \"API Key\" will conflict with another global policy that contains the Identity and Access Policy with \"OAuth2\". If an API satisfy more than one global policy, then all the policy actions of all applicable global policy will be added for effective policy calculation. If any policy validation error occurred it will be reported as conflict.\n\nThis REST request doesn't require request body. By Default it will return the conflicts for all applicable APIs and conflicts between the specified global policy and other active global policies. Additionally, we can use the query parameter to get the conflicts for active or all applicable APIs. \n\nIf there is conflict, status 500 is returned along with the details on conflicting scenarios and if there is no conflict then status 200 is returned", - "operationId" : "checkConflictForGlobalPolicy", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the global policy id to which we need to conflicting case for a global policy", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - }, { - "name" : "active", - "in" : "query", - "description" : "This is a query parameter. It is used to get conflicting case for a global policy. If the value for this parameter is 'false' then it will return conflicting scenario for all the APIs whether it is active or not for the specified global policy. If the value for this flag is 'true' then it will return conflicting case only for the list of applicable active APIs alone", - "required" : false, - "type" : "string", - "x-example" : "active=false" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that there are no conflicting cases for the specified global policy and the response will have the policy details of the global policy", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "401" : { - "description" : "This status code indicate either user didn't provide any user credential or user doesn't have API Gateway Administrator or API gateway provider access to get conflicting cases for the specified global policy." - }, - "404" : { - "description" : "This status code indicates that the specified global policy is not available in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - }, - "500" : { - "description" : "This status code indicates that there are some conflicting cases for the specified global policy. The sample shows one such conflicting case. The specified global policy and another active global policy have conflicting scenario on a common active API", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Conflict between global Policy for API - EMP_POJO_WSDL, Operation - updateEmployee - An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"reason\": [\r\n {\r\n \"apiId\": \"421eb4bf-b2d0-40a4-900f-ad5fd0a2484e\",\r\n \"apiName\": \"EMP_POJO_WSDL\",\r\n \"apiType\": \"SOAP\",\r\n \"errorOnResource\": [\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"updateEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"addEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"deleteEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"getEmployee\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/EnforcementValidationMessage" - } - }, - "400" : { - "description" : "This status code indicate the specified policy is not a global policy.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"5e04581b-a583-495b-83b3-411f9c067054 is not a global policy.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}/enable" : { - "put" : { - "description" : "This REST request is used to enable the Threat protection rule created in API Gateway. This request does not require any request body. If the threat protection policy is enabled successfully then the policy details of specified policy is sent as response", - "operationId" : "enableThreatProtectionRuleByPolicyID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the policy id of the threat protection policy which needs to be enabled", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the threat protection policy is enabled and the policy details of the Threat protection will be in response with active flag set to true", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7b2cd4a6-49f3-480d-8965-a77971605fb7\",\r\n \"names\": [\r\n {\r\n \"value\": \"Message_size_filter\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"customErrorMessage\",\r\n \"values\": [\r\n \"Message size limit exceeded\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"action\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"enableRule\",\r\n \"values\": [\r\n \"Disable\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"rule\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleDescription\",\r\n \"values\": [\r\n \"This threat protection rule is used to filter request based on size\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleName\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleType\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isEnterpriseGatewayLicensed\",\r\n \"values\": [\r\n \"true\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOption\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"alertInterval\",\r\n \"values\": [\r\n \"60\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOnEvery\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertType\",\r\n \"values\": [\r\n \"None\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"emailTo\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"flowServiceName\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"runAsUser\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isRuleEnabled\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n }\r\n ],\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"b9cfc355-0d11-4ea2-aae9-54df71c80a6d\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"adea4954-158c-40c6-8d11-b5912349a5f2\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"d62d9c00-f1ae-4bf8-979a-326171efb772\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"72a712bb-7134-4328-9701-43fb06fbfeb9\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"bc5e15ef-0a50-4876-ae98-11ce30e7a285\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"895f963f-8297-41b9-a4b4-002b7bb71870\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"96568d84-7f85-4a7d-8c82-c8f90a75a212\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"ecd4669e-ddce-4b23-af6c-79315d4fae95\",\r\n \"order\": \"\"\r\n }\r\n ],\r\n \"stageKey\": \"threatProtection\"\r\n }\r\n ],\r\n \"global\": true,\r\n \"active\": true,\r\n \"systemPolicy\": false,\r\n \"policyActionTemplateKeys\": [\r\n \"MsgSizeLimitFilter\"\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error while enabling the threat protection policy" - }, - "404" : { - "description" : "This status code indicates that the threat protection policy id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 7b2cd4a6-49f3-480d-8965-a77971605fb71\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates either user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to enable the threat protection policy." - }, - "400" : { - "description" : "This status code indicates that the policy id specified is not a threat protection policy", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"Enable action supported only for Threat protection policies\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}/disable" : { - "put" : { - "description" : "This REST request is used to disable the Threat protection rule created in API Gateway. This request does not require any request body. If the threat protection policy is disabled successfully then the policy details of specified policy will be sent as response.", - "operationId" : "disableThreatProtectionRuleByPolicyID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the policy id of the threat protection policy which needs to be disabled", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the threat protection policy is disabled and the policy details of the Threat protection will be in response with active flag set to false", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7b2cd4a6-49f3-480d-8965-a77971605fb7\",\r\n \"names\": [\r\n {\r\n \"value\": \"Message_size_filter\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"customErrorMessage\",\r\n \"values\": [\r\n \"Message size limit exceeded\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"action\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"enableRule\",\r\n \"values\": [\r\n \"Disable\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"rule\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleDescription\",\r\n \"values\": [\r\n \"This threat protection rule is used to filter request based on size\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleName\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleType\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isEnterpriseGatewayLicensed\",\r\n \"values\": [\r\n \"true\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOption\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"alertInterval\",\r\n \"values\": [\r\n \"60\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOnEvery\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertType\",\r\n \"values\": [\r\n \"None\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"emailTo\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"flowServiceName\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"runAsUser\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isRuleEnabled\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n }\r\n ],\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"b9cfc355-0d11-4ea2-aae9-54df71c80a6d\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"adea4954-158c-40c6-8d11-b5912349a5f2\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"d62d9c00-f1ae-4bf8-979a-326171efb772\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"72a712bb-7134-4328-9701-43fb06fbfeb9\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"bc5e15ef-0a50-4876-ae98-11ce30e7a285\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"895f963f-8297-41b9-a4b4-002b7bb71870\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"96568d84-7f85-4a7d-8c82-c8f90a75a212\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"ecd4669e-ddce-4b23-af6c-79315d4fae95\",\r\n \"order\": \"\"\r\n }\r\n ],\r\n \"stageKey\": \"threatProtection\"\r\n }\r\n ],\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false,\r\n \"policyActionTemplateKeys\": [\r\n \"MsgSizeLimitFilter\"\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error while disabling the threat protection policy" - }, - "404" : { - "description" : "This status code indicates that the threat protection policy id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 0dfa92ee-fa5e-4c4e-88b2-653048659e8c1\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to disable the threat protection policy." - }, - "400" : { - "description" : "This status code indicates that the policy id specified is not a threat protection policy", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"Disable action supported only for Threat protection policies\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}/movedown" : { - "put" : { - "description" : "This REST request is used to move down the execution order of the Threat protection rule created in API Gateway. This request does not require any request body. If the threat protection policy execution order is changed successfully then the policy details of specified policy will be sent as response.", - "operationId" : "moveDownThreatProtectionRuleByPolicyID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the policy id of the threat protection whose execution order needs to be moved down ", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "This status indicates that the threat protection policy execution order has been changed successfully and policy details of the Threat protection will be in response", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7b2cd4a6-49f3-480d-8965-a77971605fb7\",\r\n \"names\": [\r\n {\r\n \"value\": \"Message_size_filter\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"customErrorMessage\",\r\n \"values\": [\r\n \"Message size limit exceeded\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"action\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"enableRule\",\r\n \"values\": [\r\n \"Disable\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"rule\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleDescription\",\r\n \"values\": [\r\n \"This threat protection rule is used to filter request based on size\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleName\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleType\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isEnterpriseGatewayLicensed\",\r\n \"values\": [\r\n \"true\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOption\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"alertInterval\",\r\n \"values\": [\r\n \"60\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOnEvery\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertType\",\r\n \"values\": [\r\n \"None\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"emailTo\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"flowServiceName\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"runAsUser\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isRuleEnabled\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n }\r\n ],\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"b9cfc355-0d11-4ea2-aae9-54df71c80a6d\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"adea4954-158c-40c6-8d11-b5912349a5f2\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"d62d9c00-f1ae-4bf8-979a-326171efb772\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"72a712bb-7134-4328-9701-43fb06fbfeb9\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"bc5e15ef-0a50-4876-ae98-11ce30e7a285\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"895f963f-8297-41b9-a4b4-002b7bb71870\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"96568d84-7f85-4a7d-8c82-c8f90a75a212\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"ecd4669e-ddce-4b23-af6c-79315d4fae95\",\r\n \"order\": \"\"\r\n }\r\n ],\r\n \"stageKey\": \"threatProtection\"\r\n }\r\n ],\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false,\r\n \"policyActionTemplateKeys\": [\r\n \"MsgSizeLimitFilter\"\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error while changing the execution order of the threat protection policy" - }, - "404" : { - "description" : "This status code indicates that the threat protection policy id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 0dfa92ee-fa5e-4c4e-88b2-653048659e8c1\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to change order of the threat protection policy." - }, - "400" : { - "description" : "This status code indicates that the policy id specified is not a threat protection policy", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"Move down action supported only for Threat protection policies\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}/moveup" : { - "put" : { - "description" : "This REST request is used to move up the execution order of the Threat protection rule created in API Gateway. This request does not require any request body. This request does not require any request body. If the threat protection policy execution order is changed successfully then the policy details of specified policy will be sent as response.", - "operationId" : "moveUpThreatProtectionRuleByPolicyID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "This path parameter is used to specify the policy id of the threat protection whose execution order needs to be moved up ", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "This status indicates that the threat protection policy execution order has been changed successfully and policy details of the Threat protection will be in response", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7b2cd4a6-49f3-480d-8965-a77971605fb7\",\r\n \"names\": [\r\n {\r\n \"value\": \"Message_size_filter\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"customErrorMessage\",\r\n \"values\": [\r\n \"Message size limit exceeded\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"action\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"enableRule\",\r\n \"values\": [\r\n \"Disable\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"rule\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleDescription\",\r\n \"values\": [\r\n \"This threat protection rule is used to filter request based on size\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleName\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleType\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isEnterpriseGatewayLicensed\",\r\n \"values\": [\r\n \"true\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOption\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"alertInterval\",\r\n \"values\": [\r\n \"60\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOnEvery\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertType\",\r\n \"values\": [\r\n \"None\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"emailTo\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"flowServiceName\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"runAsUser\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isRuleEnabled\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n }\r\n ],\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"b9cfc355-0d11-4ea2-aae9-54df71c80a6d\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"adea4954-158c-40c6-8d11-b5912349a5f2\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"d62d9c00-f1ae-4bf8-979a-326171efb772\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"72a712bb-7134-4328-9701-43fb06fbfeb9\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"bc5e15ef-0a50-4876-ae98-11ce30e7a285\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"895f963f-8297-41b9-a4b4-002b7bb71870\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"96568d84-7f85-4a7d-8c82-c8f90a75a212\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"ecd4669e-ddce-4b23-af6c-79315d4fae95\",\r\n \"order\": \"\"\r\n }\r\n ],\r\n \"stageKey\": \"threatProtection\"\r\n }\r\n ],\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false,\r\n \"policyActionTemplateKeys\": [\r\n \"MsgSizeLimitFilter\"\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error while changing the execution order of the threat protection policy" - }, - "404" : { - "description" : "This status code indicates that the threat protection policy id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 0dfa92ee-fa5e-4c4e-88b2-653048659e8c1\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to change order of the threat protection policy." - }, - "400" : { - "description" : "This status code indicates that policy id specified is not a threat protection policy", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"Move up action supported only for Threat protection policies\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}/activate" : { - "put" : { - "description" : "This REST request is used to activate a global policy and this request doesn't require any request body. This request will try to activate the global policy and if any error occurs during activation it will be reported as response or if the global policy is activated then its policy details active flag set to true will be sent as response. If the global policy have any conflicts then it cannot be activated the conflicts are manually resolved.", - "operationId" : "activateGlobalPolicyByPolicyID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "The path parameter should be the policy id of global policy that needs to be activated. If the policy id is not belongs to a global policy then error will be reported", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the global policy id specified is activated successfully", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": true,\r\n \"systemPolicy\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error during the activation of global policy. The sample shows the error is due to a conflict between two global policies on the common applicable APIs. The conflict is between this global policy and other active global policy. This happens when an API satisfies the scope of one or more global policy and during the effective policy calculation you might get policy validation error message. The detailed structure of the error is reported for any conflicts that happen during the process activation ", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Conflict between global Policy for API - EMP_POJO_WSDL, Operation - updateEmployee - An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"reason\": [\r\n {\r\n \"apiId\": \"421eb4bf-b2d0-40a4-900f-ad5fd0a2484e\",\r\n \"apiName\": \"EMP_POJO_WSDL\",\r\n \"apiType\": \"SOAP\",\r\n \"errorOnResource\": [\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"updateEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"addEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"deleteEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"getEmployee\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" - } - }, - "404" : { - "description" : "This status code indicates that the policy id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to activate global policy." - }, - "400" : { - "description" : "This status code indicates that the request is not correct. It can be either due to incorrect policy type or trying to activate already active policy. The sample shows that the policy is specified is not a global policy id.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Policy [PT1] is not a global policy. Cannot be activated/deactivated.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policies/{policyId}/deactivate" : { - "put" : { - "description" : "This REST request is used to deactivate a global policy and it doesn't require any request body. This request tries to deactivate the global policy and if any error occurs during deactivation will be reported as response or if the global policy deactivated the policy details of a global policy with active flag set to false is sent as response. An active global policy cannot have conflicts with other active global policy and hence the deactivation fails only when the conflict occurs between active global policy that is specified and one or more applicable active APIs. This can happen when the applicable active API policy action might depend on one or more policy action from the specified global policy. If you deactivate this policy, it would cause the active API to have an unstable state. Hence the deactivation is reported as failed in this case.", - "operationId" : "deactivateGlobalPolicyByPolicyID", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyId", - "in" : "path", - "description" : "The path parameter should be the policy id of global policy that needs to be deactivated. If the policy id is not belongs to a global policy then error will be reported", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the global policy id specified is deactivated successfully", - "examples" : { - "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Policy" - } - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error during the deactivation of global policy. The sample shows the error due to policy dependencies between an active API and the global policy specified", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Conflict between global Policy for API - EMP, Path - /employee/{id}, Method - get - Policy action Throttling Traffic Optimization is dependent to policy action(s) [Identify & Authorize Application]\",\r\n \"reason\": [\r\n {\r\n \"apiId\": \"e60d6fe9-3612-469f-b33a-fb4c97c72b3b\",\r\n \"apiName\": \"EMP\",\r\n \"apiType\": \"REST\",\r\n \"errorOnResource\": [\r\n {\r\n \"error\": {\r\n \"errorType\": \"occurence\",\r\n \"missingDependency\": [\r\n \"evaluatePolicy\"\r\n ],\r\n \"policyActionName\": \"[Throttling Traffic Optimization]\",\r\n \"templateId\": \"throttle\"\r\n },\r\n \"errorMessage\": \" Policy action Throttling Traffic Optimization is dependent to policy action(s) [Identify & Authorize Application]\",\r\n \"method\": \"get\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Default Policy for API EMP\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"9adf1ff1-efdc-4c41-8998-794d316eaced\"\r\n ],\r\n \"policyId\": \"d7672248-7d25-444e-a9b6-853e1d95d1c6\",\r\n \"policyScope\": \"SERVICE\",\r\n \"stageKey\": \"LMT\"\r\n },\r\n \"resource\": \"/employee/{id}\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" - } - }, - "404" : { - "description" : "This status code indicates that the policy id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to deactivate global policy." - }, - "400" : { - "description" : "This status code indicates that the request is not correct. It can be either due to incorrect policy type or trying to deactivate already inactive policy. The sample shows that the policy is specified is not a global policy id.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Policy [PT1] is not a global policy. Cannot be activated/deactivated.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/denialofservice/deniedIP" : { - "get" : { - "description" : "This GET method is used to retrieve the list of IPs are denied ( IPs that violated the threat protection rules configured).", - "operationId" : "getDeniedIPs", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the denied IPs successfully returned. The response contains the list of Denied IPs.", - "examples" : { - "application/json" : "{\r\n \"deniedIPList\": [\r\n \"10.60.37.99\"\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to get denied IPs list." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "This DELETE method is used to remove the IP from Denied IPs list. Once removed the request from IP will be processed.", - "operationId" : "deleteDeniedIPs", - "parameters" : [ { - "name" : "IP", - "in" : "query", - "required" : true, - "type" : "string", - "x-example" : "IP=127.0.0.1" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the denied IPs successfully removed from the denied IPs list." - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to delete IP from denied IPs list." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policyActionTemplates/{policyActionTemplateId}" : { - "get" : { - "description" : "This REST Request is used to get the template details of a policy action.. To retrieve the policy action template for a particular policy action, specify the policy action template name as a path parameter ", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyActionTemplateId", - "in" : "path", - "description" : "This is a path parameter. It will be used to fetch policy action template of a particular template.", - "required" : true, - "type" : "string", - "x-example" : "entryProtocolPolicy" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the policy action template details." - }, - "404" : { - "description" : "This status code indicates that the policy action template specified is not found", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: nonExisitingProtocol\"\r\n}" - } - }, - "200" : { - "description" : "This status code indicates policy action template is available and the response body will contain the policy action template details", - "examples" : { - "application/json" : "{\r\n \"policyActionTemplates\": {\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Encapsulates the access protocol (HTTP and/or HTTPS) which will be used by client for communicating to the API-Gateway.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"parameterTemplatesReference\": [],\r\n \"parameterTemplates\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"names\": [\r\n {\r\n \"value\": \"Protocol\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Access protocol for bridging between the client and API-Gateway.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": true,\r\n \"isRequired\": true,\r\n \"canRender\": true,\r\n \"defaultValues\": [\r\n \"http\"\r\n ],\r\n \"possibleValues\": [\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"HTTP\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"http\"\r\n },\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"https\"\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP version\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Supported SOAP Version.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": false,\r\n \"isRequired\": false,\r\n \"canRender\": true,\r\n \"defaultValues\": [\r\n \"soap\"\r\n ],\r\n \"possibleValues\": [\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP 1.1\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"soap\"\r\n },\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP 1.2\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"soap12\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"SOAP\"\r\n ]\r\n }\r\n ],\r\n \"occurence\": \"once\",\r\n \"stageSpecific\": null,\r\n \"dependentActions\": null,\r\n \"dependentActionsConnector\": null,\r\n \"mutuallyExclusiveActions\": null,\r\n \"order\": {\r\n \"sequence\": [\r\n \"insequence\"\r\n ],\r\n \"orderPosition\": \"first\",\r\n \"isCustomOrderSupported\": false,\r\n \"policyTemplateIDs\": null\r\n },\r\n \"requiredParametersKeys\": [\r\n \"protocol\"\r\n ],\r\n \"canAppliedAtResourceMethodLevel\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PolicyActionTemplate" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policyActionTemplates" : { - "get" : { - "description" : "This REST Request is used to get the template detail for list of policy action.", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyActionTemplates", - "in" : "query", - "description" : "This is a query parameter. It will be used to fetch policy action templates for list of policy action.", - "required" : false, - "type" : "string", - "x-example" : "policyActionTemplates=setMediaType,entryProtocolPolicy" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get policy action template." - }, - "200" : { - "description" : "This status code indicates the server has processed the request. The response body will contain the policy action templates for valid policy actions. If any of the policy action template specified is invalid, it will ommit that policy action template and return the response with remaining valid policy action template.", - "examples" : { - "application/json" : "{\r\n \"policyActionTemplates\": [\r\n {\r\n \"templateKey\": \"setMediaType\",\r\n \"names\": [\r\n {\r\n \"value\": \"Set Media Type\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"This policy is used to configure the default media type values for Content-Type and Accept headers. These values shall be used as the Content-Type or Accept-Header respectively, if no Content-Type or Accept-Header is specified in the run-time invoke request.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"REST\"\r\n ],\r\n \"parameterTemplatesReference\": [],\r\n \"parameterTemplates\": [\r\n {\r\n \"templateKey\": \"defaultContentType\",\r\n \"names\": [\r\n {\r\n \"value\": \"Default Content-Type\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"The Media Type value configured in this parameter will be sent as the Content-Type if no Content-Type is specified in the run-time invoke request.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": false,\r\n \"isRequired\": false,\r\n \"canRender\": true\r\n },\r\n {\r\n \"templateKey\": \"defaultAccept\",\r\n \"names\": [\r\n {\r\n \"value\": \"Default Accept Header\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"The Media Type value configured in this parameter will be used as the Accept header if no Accept header is specified in the run-time invoke request.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": false,\r\n \"isRequired\": false,\r\n \"canRender\": true\r\n }\r\n ],\r\n \"occurence\": \"once\",\r\n \"stageSpecific\": null,\r\n \"dependentActions\": [],\r\n \"dependentActionsConnector\": null,\r\n \"mutuallyExclusiveActions\": null,\r\n \"order\": {\r\n \"sequence\": [\r\n \"insequence\"\r\n ],\r\n \"orderPosition\": \"last\",\r\n \"isCustomOrderSupported\": false,\r\n \"policyTemplateIDs\": null\r\n },\r\n \"requiredParametersKeys\": [],\r\n \"canAppliedAtResourceMethodLevel\": false\r\n },\r\n {\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Encapsulates the access protocol (HTTP and/or HTTPS) which will be used by client for communicating to the API-Gateway.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"parameterTemplatesReference\": [],\r\n \"parameterTemplates\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"names\": [\r\n {\r\n \"value\": \"Protocol\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Access protocol for bridging between the client and API-Gateway.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": true,\r\n \"isRequired\": true,\r\n \"canRender\": true,\r\n \"defaultValues\": [\r\n \"http\"\r\n ],\r\n \"possibleValues\": [\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"HTTP\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"http\"\r\n },\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"https\"\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP version\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Supported SOAP Version.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": false,\r\n \"isRequired\": false,\r\n \"canRender\": true,\r\n \"defaultValues\": [\r\n \"soap\"\r\n ],\r\n \"possibleValues\": [\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP 1.1\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"soap\"\r\n },\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP 1.2\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"soap12\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"SOAP\"\r\n ]\r\n }\r\n ],\r\n \"occurence\": \"once\",\r\n \"stageSpecific\": null,\r\n \"dependentActions\": null,\r\n \"dependentActionsConnector\": null,\r\n \"mutuallyExclusiveActions\": null,\r\n \"order\": {\r\n \"sequence\": [\r\n \"insequence\"\r\n ],\r\n \"orderPosition\": \"first\",\r\n \"isCustomOrderSupported\": false,\r\n \"policyTemplateIDs\": null\r\n },\r\n \"requiredParametersKeys\": [\r\n \"protocol\"\r\n ],\r\n \"canAppliedAtResourceMethodLevel\": false\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PolicyActionTemplate" - } - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policyStages" : { - "get" : { - "description" : "This REST Request is used to get the list of policy stages available in API gateway. It will also show the list of policies (template key of each policy) associated with each stage. ", - "operationId" : "getPolicyStages", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "The response body contains list of all stages and policy associated with the stages. Also the response body contains the sequence where the policies corresponding to a stage will be executed", - "examples" : { - "application/json" : "{\r\n \"stages\": [\r\n {\r\n \"stageKey\": \"threatProtection\",\r\n \"names\": [\r\n {\r\n \"value\": \"Threat Protection\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"globalipdos\",\r\n \"ipdos\",\r\n \"egviolationalert\",\r\n \"MsgSizeLimitFilter\",\r\n \"OAuthFilter\",\r\n \"mobileAppProtectionFilter\",\r\n \"sqlInjectionFilter\",\r\n \"antiVirusFilter\",\r\n \"jsonThreatProtectionFilter\",\r\n \"xmlThreatProtectionFilter\",\r\n \"customFilter\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"transport\",\r\n \"names\": [\r\n {\r\n \"value\": \"Transport\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"entryProtocolPolicy\",\r\n \"setMediaType\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"IAM\",\r\n \"names\": [\r\n {\r\n \"value\": \"Identity and Access Management\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"inboundAuthTransport\",\r\n \"webServiceSecurityPolicy\",\r\n \"authorizeUser\",\r\n \"evaluatePolicy\"\r\n ],\r\n \"sequence\": null\r\n },\r\n {\r\n \"stageKey\": \"requestPayloadProcessing\",\r\n \"names\": [\r\n {\r\n \"value\": \"Request Payload Processing\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"invokeESB\",\r\n \"xsltTransformation\",\r\n \"validateSchema\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"routing\",\r\n \"names\": [\r\n {\r\n \"value\": \"Routing Policies\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"contentBasedRouting\",\r\n \"contextBasedRouting\",\r\n \"dynamicRouting\",\r\n \"loadBalancerRouting\",\r\n \"straightThroughRouting\",\r\n \"customHttpHeaders\",\r\n \"outboundTransportAuthentication\",\r\n \"outboundMessageAuthentication\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"LMT\",\r\n \"names\": [\r\n {\r\n \"value\": \"Logging, Monitoring and Traffic Optimization\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"logInvocation\",\r\n \"monitorServicePerformance\",\r\n \"monitorSLA\",\r\n \"throttle\",\r\n \"serviceResultCache\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"responseProcessing\",\r\n \"names\": [\r\n {\r\n \"value\": \"Response Processing\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"invokeESB\",\r\n \"xsltTransformation\",\r\n \"validateSchema\"\r\n ],\r\n \"sequence\": \"outsequence\"\r\n },\r\n {\r\n \"stageKey\": \"responseFaultProcessing\",\r\n \"names\": [\r\n {\r\n \"value\": \"Error Handling\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"conditionalErrorProcessing\"\r\n ],\r\n \"sequence\": \"faultsequence\"\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PolicyEnforcementStage" - } - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the policy stage." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policyActions/{policyActionId}" : { - "get" : { - "description" : "This request will return policy action details of the policy action based on the id specified in path", - "operationId" : "getPolicyAction", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyActionId", - "in" : "path", - "description" : "This path parameter is used to specify the policy action id which policy action details needs to retrieved.", - "required" : true, - "type" : "string", - "x-example" : "685e99ee-0e1b-4afa-8ff3-4322cf296566" - } ], - "responses" : { - "200" : { - "description" : "The details of policy action will be available in response body", - "examples" : { - "application/json" : "{\r\n \"policyAction\": {\r\n \"id\": \"685e99ee-0e1b-4afa-8ff3-4322cf296566\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"values\": [\r\n \"soap\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PolicyAction" - } - }, - "404" : { - "description" : "This status code indicates that the policy action specified does not exists", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the details of a policy action." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This put request is used to update policy action based on the policy action id which is specified in path", - "operationId" : "updatePolicyAction", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyActionId", - "in" : "path", - "description" : "This path parameter is used to specify the policy action id which needs to be updated.", - "required" : true, - "type" : "string", - "x-example" : "685e99ee-0e1b-4afa-8ff3-4322cf296566" - }, { - "in" : "body", - "name" : "body", - "description" : "Contains the policy action details which needs to be updated.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/PolicyAction" - }, - "x-examples" : { - "application/json" : "{\r\n \"policyAction\": {\r\n \"id\": \"685e99ee-0e1b-4afa-8ff3-4322cf296566\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"values\": [\r\n \"soap\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that API Gateway has successfully updated the specified policy action and the updated policy action details can be found in the response body", - "examples" : { - "application/json" : "{\r\n \"policyAction\": {\r\n \"id\": \"685e99ee-0e1b-4afa-8ff3-4322cf296566\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"values\": [\r\n \"soap\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PolicyAction" - } - }, - "500" : { - "description" : "This status code indicates the processing error occurred during the update of policy action and the corresponding details can be seen in the response body", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to process the PUT request for APIs. An error occurred while processing the payload. Error message:\\n Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to update the policy action." - }, - "400" : { - "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to process the PUT request for APIs. An error occurred while processing the payload. Error message:\\n Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of key and payload.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "This delete request will delete the policy action based on the policy action id which is specified in path", - "operationId" : "deletePolicyAction", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyActionId", - "in" : "path", - "description" : "Policy Action ID", - "required" : true, - "type" : "string", - "x-example" : "685e99ee-0e1b-4afa-8ff3-4322cf296566" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to delete the policy action." - }, - "204" : { - "description" : "This status code indicates that the specified policy action successfully deleted" - }, - "404" : { - "description" : "This status code indicates that the corresponding policy action id does not exist", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/policyActions" : { - "get" : { - "description" : "This request will return all the policy actions from API Gateway", - "operationId" : "getAllPolicyActions", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "policyActionIds", - "in" : "query", - "description" : "This is a query parameter. Provide comma separated Policy Action ids to get the policy action details for specified policy action ids", - "required" : false, - "type" : "string", - "x-example" : "685e99ee-0e1b-4afa-8ff3-4322cf296566,78c0f92e-c85d-44c2-b7d5-e7a11fda8a57" - } ], - "responses" : { - "200" : { - "description" : "The list of policy actions will be available in the response body. The list can be all or specific set of policy action ids specified in query string. If any of the policy action id specified in query parameter is not available then it will omit that id and fetch result for other valid ids", - "examples" : { - "application/json" : "{\r\n \"policyAction\": [\r\n {\r\n \"id\": \"50c705f0-28d9-4a1a-a20b-6c84a0f4a837\",\r\n \"names\": [\r\n {\r\n \"value\": \"Straight Through Routing\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"templateKey\": \"straightThroughRouting\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"endpointUri\",\r\n \"values\": [\r\n \"http://localhost:8080/employee_service/${sys:resource_path}\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n },\r\n {\r\n \"id\": \"09219ca1-9bd7-4d62-8baf-167d29e3390e\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PolicyAction" - } - } - }, - "401" : { - "description" : "This status code indicates shows either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to get the policy actions." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "This REST request is used to create policy action. The result of this request is a policy action payload and is available in the response. To know about the policy action template and to create it you can use the policyActionTemplates/{templateKey} to get the template structure of a policy action. The template key will be available in policyStage resource.", - "operationId" : "createPolicyAction", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "Contains the policy action details of the newly created policy action", - "required" : true, - "schema" : { - "$ref" : "#/definitions/PolicyAction" - }, - "x-examples" : { - "application/json" : "{\r\n \"policyAction\": {\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ] \r\n },\r\n\t{\r\n\t\t\"templateKey\": \"soapVersion\",\r\n\t\t\"values\": [\r\n\t\t\"soap\"\r\n\t\t]\r\n\t}\r\n ]\r\n }\r\n}" - } - } ], - "responses" : { - "201" : { - "description" : "This status code indicates that the policy action is created successfully and the created policy action can be seen in the response body", - "examples" : { - "application/json" : "{\r\n \"policyAction\": {\r\n \"id\": \"685e99ee-0e1b-4afa-8ff3-4322cf296566\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"values\": [\r\n \"soap\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/PolicyAction" - } - }, - "400" : { - "description" : "This status code indicates that the request payload is not correct and corresponding error details can be seen in the response body", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of key and payload.\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to create policy actions." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/configurations/mobileApp" : { - "get" : { - "description" : "You can use API Gateway to disable access for certain mobile application versions on a predefined set of mobile platforms. By registering the required devices and applications and disabling access to these versions, you ensure that all users use the latest versions of the applications and take advantage of the latest security and functional updates.", - "operationId" : "getMobileApplicationConfigurations", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the Mobile Applications configurations are retrieved successfully. ", - "examples" : { - "application/json" : "{\r\n \"mobileApplications\": [\r\n \"MyApp\",\r\n \"HelloApplication\"\r\n ],\r\n \"mobileAppDeviceTypes\": [\r\n \"Android\",\r\n \"ios\"\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/MobileApplicationConfiguration" - } - }, - "400" : { - "description" : "This status code indicates that the mobileApp not mentioned in API access uri path.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \"Missing mandatory field configId in request.\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Mobile Applications configuration." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "The method is used to update the details of the Mobile Applications configuration in API Gateway.You can use API Gateway to disable access for certain mobile application versions on a predefined set of mobile platforms. By registering the required devices and applications and disabling access to these versions, you ensure that all users use the latest versions of the applications and take advantage of the latest security and functional updates.", - "operationId" : "saveMobileApplicationConfigurations", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/MobileApplicationConfiguration" - }, - "x-examples" : { - "application/json" : "{\r\n \"mobileApplications\": [\r\n \"MyApp\",\r\n \"HelloApplication\"\r\n ],\r\n \"mobileAppDeviceTypes\": [\r\n \"Android\",\r\n \"ios\"\r\n ]\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the Mobile Applications configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"mobileApplications\": [\r\n \"MyApp\",\r\n \"HelloApplication\"\r\n ],\r\n \"mobileAppDeviceTypes\": [\r\n \"Android\",\r\n \"ios\"\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/MobileApplicationConfiguration" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Threat Protection\" functional privilege to access this API." - }, - "405" : { - "description" : "This status code indicates that the specified HTTP method is not allowed for the requested Mobile Applications in API Gateway.", - "examples" : { - "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Mobile Applications configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: loadBalancer\"\r\n}" - } - }, - "400" : { - "description" : "This status code indicates that the request body is invalid.", - "examples" : { - "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/serviceResultCache/{apiId}" : { - "get" : { - "description" : "This REST Request is used to get the Service Result cache size for the API using apiID. An alternative REST API call for /serviceResultCache. Instead of specifying name and version, if you know API id you can directly use that id to get the number of cached responses for that API", - "operationId" : "getCacheDetailsByapiId", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "The id of API for which the cached response size is requested", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the request for Service Result Cache size is successfully returned. The response will have number of cache elements (A cached element is nothing but a single response) for the given API id, so it infers that the number of responses are actually cached for this API ", - "examples" : { - "application/json" : "{\r\n\t\"Cache size\": 2\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access" - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error while fetching the Service Result Cache for the API" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "This REST Request is used to request for deletion of Service Result Cache for the API using api id", - "operationId" : "deleteCacheDetailsbyAPIId", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "The id of API for which the Service Result Cache deletion is requested", - "required" : true, - "type" : "string", - "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" - } ], - "responses" : { - "204" : { - "description" : "This status code indicates that Service Result Cache has been deleted for the API and no data is returned in response " - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to delete the Service Result cache of the specified API." - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error while deleting the Service Result Cache for the API" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/serviceResultCache" : { - "get" : { - "description" : "You can enable API caching in API Gateway to cache your native service's response. With caching, you can reduce the number of calls made to your endpoint and also improve the latency of the requests to your API. When you enable caching for a stage, API Gateway caches responses from your endpoint for a specified time to live period. API Gateway then responds to the request by looking up the endpoint response from the cache instead of making a request to your endpoint. \n\nService Result cache can be configured for a API or Resource/method or Operation. \n\nThis REST Request is used to get the Service Result cache size for an API using apiName and apiVersion.", - "operationId" : "getCacheDetailsByapiNameAndVersion", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiName", - "in" : "query", - "description" : "This query parameter is used to specify the API name for which the service result cache element size needs to be fetched.", - "required" : true, - "type" : "string", - "x-example" : "apiName=WIKI-SearchData" - }, { - "name" : "apiVersion", - "in" : "query", - "description" : "The version of the apiName parameter specified", - "required" : true, - "type" : "string", - "x-example" : "apiVersion=1.0" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the request for Service Result Cache size has been successfully returned. The response will have number of cache elements (A cached element is nothing but a single response) for the given API name and version, so it infers that the number of responses are actually cached for this API", - "examples" : { - "application/json" : "{\r\n\t\"Cache size\": 2\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access." - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error while fetching the Service Result cache for the API" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "This REST Request is used to request for deletion of Service Result cache for the API using apiName and apiVersion", - "operationId" : "deleteCacheDetailsByapiNameAndVersion", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiName", - "in" : "query", - "description" : "This query parameter is used to specify the API name for which the service result cache deletion is requsted.", - "required" : true, - "type" : "string", - "x-example" : "apiName=WIKI-SearchData" - }, { - "name" : "apiVersion", - "in" : "query", - "description" : "The version of the apiName parameter specified", - "required" : true, - "type" : "string", - "x-example" : "apiVersion=1.0" - } ], - "responses" : { - "204" : { - "description" : "This status code indicates that Service Result Cache has been deleted for the specified API and no data is returned in response" - }, - "401" : { - "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to delete the Service Result Cache of the specified API." - }, - "500" : { - "description" : "This status code indicates that the server has encountered an error while deleting the Service Result cache for the API" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/assertions/{assertionId}" : { - "get" : { - "description" : "This request will return assertion element", - "operationId" : "getAssertion", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "assertionId", - "in" : "path", - "description" : "This path parameter is used to specify the assertion id which assertion details needs to retrieved.", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Details of the assertion will be available in response body", - "examples" : { - "application/json" : "{\r\n \"assertionConfiguration\": {\r\n \"configurationId\": \"be463644-25a6-42af-840d-0b2d43be41ec\",\r\n \"configurationName\": \"CustomBindingAssertion1\",\r\n \"configurationElement\": \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n \\n\\t\\t \\n \\n \",\r\n \"assertionType\": \"bindingAssertion\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AssertionConfiguration" - } - }, - "404" : { - "description" : "This status code indicates that the assertion id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This REST service is used to update the assertion", - "operationId" : "updateAssertion", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "assertionId", - "in" : "path", - "description" : "This path parameter is used to specify the assertion id which assertion details needs to updated.", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "in" : "body", - "name" : "body", - "description" : "assertion request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/AssertionConfiguration" - }, - "x-examples" : { - "application/json" : "{\r\n \"assertionConfiguration\": {\r\n \"configurationId\": \"be463644-25a6-42af-840d-0b2d43be41ec\",\r\n \"configurationName\": \"CustomBindingAssertion1\",\r\n \"configurationElement\": \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n \\n\\t\\t \\n \\n \",\r\n \"assertionType\": \"bindingAssertion\"\r\n }\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that API Gateway has successfully updated the specified assertion and the updated assertion details can be found in the response body", - "examples" : { - "application/json" : "{\r\n \"assertionConfiguration\": {\r\n \"configurationId\": \"0882293d-e773-4242-8bf5-c22e693f8413\",\r\n \"configurationName\": \"token_04\",\r\n \"configurationElement\": \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n \\r\\n\\t\\t \\r\\n \\r\\n \"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AssertionConfiguration" - } - }, - "400" : { - "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to process the PUT request for APIs. An error occurred while processing the payload. Error message:\\n Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of payload.\"\r\n}" - } - }, - "404" : { - "description" : "This status code indicates that the assertion id specified is not found in API Gateway", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "This delete request will delete the assertion based on the assertion id which is specified in path", - "operationId" : "deleteAssertion", - "parameters" : [ { - "name" : "assertionId", - "in" : "path", - "description" : "This path parameter is used to specify the assertion id for which assertion needs to deleted.", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "204" : { - "description" : "This status code indicates that the specified assertion is successfully deleted" - }, - "401" : { - "description" : "This status code indicates either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to delete the assertion." - }, - "404" : { - "description" : "This status code indicates that the corresponding assertion id does not exist", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/assertions" : { - "get" : { - "description" : "This request will return all the assertions from API Gateway", - "operationId" : "getAllAssertions", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "Retrieves a list of available assertions in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"assertionConfigurations\": [\r\n {\r\n \"configurationId\": \"be463644-25a6-42af-840d-0b2d43be41ec\",\r\n \"configurationName\": \"CustomBindingAssertion1\",\r\n \"configurationElement\": \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n \\n\\t\\t \\n \\n \",\r\n \"assertionType\": \"bindingAssertion\"\r\n },\r\n {\r\n \"configurationId\": \"9bfbd5ea-86eb-4990-8f7a-fdfef8f16f86\",\r\n \"configurationName\": \"tokenAssertion01\",\r\n \"configurationElement\": \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n \\r\\n\\t\\t \\r\\n \\r\\n \",\r\n \"assertionType\": \"tokenAssertion\"\r\n }\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AssertionConfiguration" - } - }, - "401" : { - "description" : "This status code indicates that authorization has been refused for this HTTP request. This is possibly because, the user has not specified the required credentials (username and password), or has specified invalid credentials, or the user is not authenticated as an API Gateway Administrator to retrieve assertions in API Gateway." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "Custom assertions allow the API providers to extend and provide additional security policies that are not available by default in API Gateway. In WS-Security, custom assertions are used for expressing individual security requirements, constraints, or both. The individual policy assertions can be combined to create security policies that ensure secure and reliable exchanges of SOAP messages between a client and a SOAP API. This REST service is used to create a assertion. Below are the request payloads for different types of assertions.\r\nbindingAssertion: "{\r\n\t"configurationElement": "<sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">\r\n\t\t\t\t\t\t<sp:InitiatorToken>\r\n\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never">\r\n\t\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t\t<sp:WssX509V3Token10/>\r\n\t\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t\t</sp:X509Token>\r\n\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t</sp:InitiatorToken>\r\n\t\t\t\t\t\t<sp:RecipientToken>\r\n\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never">\r\n\t\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t\t<sp:WssX509V3Token10/>\r\n\t\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t\t</sp:X509Token>\r\n\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t</sp:RecipientToken>\r\n\t\t\t\t\t\t<sp:AlgorithmSuite>\r\n\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t<sp:Basic256 />\r\n\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t</sp:AlgorithmSuite>\r\n\t\t\t\t\t\t<sp:Layout>\r\n\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t<sp:LaxTimestampFirst/>\r\n\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t</sp:Layout>\r\n\t\t\t\t\t\t<sp:ProtectTokens/>\r\n\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t</sp:AsymmetricBinding>",\r\n\t"configurationName":"CustomBindingAssertion1",\r\n\t"assertionType":"bindingAssertion"}"\r\n\r\ntokenAssertion: "{\r\n\t"configurationElement": "<sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">\r\n\t\t\t\t\t\t<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"/>\r\n\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t</sp:SupportingTokens>",\r\n\t"configurationName":"UsernameToken",\r\n\t"assertionType":"tokenAssertion"}"\r\n\t\r\npolicyAssertion: "{\r\n\t"configurationElement": "<wsp:Policy wsu:Id="CustomBinding_IWSTrust13Async_policy"\r\n\t\t\txmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"\r\n\t\t\txmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" \r\n\t\t\txmlns:wsaw="http://www.w3.org/2006/02/addressing/wsdl"\r\n\t\t\txmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">\r\n\t\t\t<wsp:ExactlyOne>\r\n\t\t\t\t<wsp:All>\r\n\t\t\t\t\t<sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t<sp:TransportToken>\r\n\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t<sp:HttpsToken/>\r\n\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t</sp:TransportToken>\r\n\t\t\t\t\t\t\t<sp:AlgorithmSuite>\r\n\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t<sp:Basic128/>\r\n\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t</sp:AlgorithmSuite>\r\n\t\t\t\t\t\t\t<sp:Layout>\r\n\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t<sp:Strict/>\r\n\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t</sp:Layout>\r\n\t\t\t\t\t\t\t<sp:IncludeTimestamp/>\r\n\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t</sp:TransportBinding>\r\n\t\t\t\t\t<sp:EndorsingSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t<sp:KerberosToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Once">\r\n\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t<sp:WssGssKerberosV5ApReqToken11/>\r\n\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t</sp:KerberosToken>\r\n\t\t\t\t\t\t\t<sp:KeyValueToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never" wsp:Optional="true"/>\r\n\t\t\t\t\t\t\t<!-- \r\n\t\t\t\t\t\t\t<sp:SignedParts>\r\n\t\t\t\t\t\t\t\t<sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>\r\n\t\t\t\t\t\t\t</sp:SignedParts>\r\n\t\t\t\t\t\t\t-->\r\n\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t</sp:EndorsingSupportingTokens>\r\n\t\t\t\t\t<sp:Wss11 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t<sp:MustSupportRefKeyIdentifier/>\r\n\t\t\t\t\t\t\t<sp:MustSupportRefIssuerSerial/>\r\n\t\t\t\t\t\t\t<sp:MustSupportRefThumbprint/>\r\n\t\t\t\t\t\t\t<sp:MustSupportRefEncryptedKey/>\r\n\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t</sp:Wss11>\r\n\t\t\t\t\t<sp:Trust13 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t<sp:MustSupportIssuedTokens/>\r\n\t\t\t\t\t\t\t<sp:RequireClientEntropy/>\r\n\t\t\t\t\t\t\t<sp:RequireServerEntropy/>\r\n\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t</sp:Trust13>\r\n\t\t\t\t\t<wsaw:UsingAddressing/>\r\n\t\t\t\t</wsp:All>\r\n\t\t\t</wsp:ExactlyOne>\r\n\t\t</wsp:Policy>"\r\n\t"configurationName":"KerberosOverTransport",\r\n\t"assertionType":"policyAssertion"}"", - "operationId" : "createAssertion", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "assertion request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/AssertionConfiguration" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"configurationElement\": \"\r\n\t\r\n\t\t\r\n\t\r\n\",\r\n\t\"configurationName\": \"UsernameToken\",\r\n\t\"assertionType\": \"tokenAssertion\"\r\n}" - } - } ], - "responses" : { - "201" : { - "description" : "Assertion successfully created in API Gateway", - "examples" : { - "application/json" : "{\r\n \"assertionConfiguration\": {\r\n \"configurationId\": \"0882293d-e773-4242-8bf5-c22e693f8413\",\r\n \"configurationName\": \"token_04\",\r\n \"configurationElement\": \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n \\r\\n\\t\\t \\r\\n \\r\\n \"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AssertionConfiguration" - } - }, - "400" : { - "description" : "This status code indicates that the request payload is not correct and corresponding error details can be seen in the response body", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of payload.\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "Attribute" : { - "type" : "object", - "required" : [ "attributeName", "operation", "value" ], - "properties" : { - "attributeName" : { - "type" : "string", - "description" : "The field name on which needs to be satisfied by the APIs.", - "enum" : [ "API_NAME", "API_DESCRIPTION", "API_VERSION", "TAGS", "GET", "PUT", "POST", "DELETE", "PATCH" ] - }, - "operation" : { - "type" : "string", - "description" : "Operation that needs to performed on the field specified.", - "enum" : [ "EQUALS", "CONTAINS", "NOT_CONTAINS", "STARTS_WITH", "NOT_STARTS_WITH", "LESS_THAN", "GREATER_THAN", "ENDS_WITH", "NOT_EQUALS" ] - }, - "value" : { - "type" : "string", - "description" : "Value the needs to processed on the field and operation specified." - } - }, - "description" : "An Attribute contains the field of the an API or resource or operation and the value to be processed on the fields based on the operation specified. If attribute specifies any Http Method then operation wont have any significance." - }, - "Enforcement" : { - "type" : "object", - "properties" : { - "enforcementObjectId" : { - "type" : "string", - "description" : "Policy enforcement id" - }, - "order" : { - "type" : "string", - "description" : "enforcement order" - }, - "parentPolicyId" : { - "type" : "string" - } - }, - "description" : "Model contains a policy enforcement id and its order" - }, - "ExtendedProperties" : { - "type" : "object", - "properties" : { - "key" : { - "type" : "string" - }, - "value" : { - "type" : "string" - } - } - }, - "InternationalizedString" : { - "type" : "object", - "properties" : { - "value" : { - "type" : "string", - "description" : "This property will hold the actual string" - }, - "locale" : { - "type" : "string", - "description" : "This property will have the localization information of the property 'value'." - } - }, - "description" : "This model is used to store a string with its corresponding locale" - }, - "Policy" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "Policy ID", - "readOnly" : true - }, - "names" : { - "type" : "array", - "description" : "This contains list of names for the policy with corresponding locale information.", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "descriptions" : { - "type" : "array", - "description" : "This contains list of description for the policy with corresponding locale information.", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "parameters" : { - "type" : "array", - "description" : "This basic details of a threat protection rule such as rule name, description, rule action, custom error message etc.will be stored in this property.", - "items" : { - "$ref" : "#/definitions/PolicyActionParameter" - } - }, - "scope" : { - "$ref" : "#/definitions/Scope" - }, - "policyEnforcements" : { - "type" : "array", - "description" : "This property contains list of policy (runtime) enforcement id grouped based on the stages.", - "items" : { - "$ref" : "#/definitions/PolicyEnforcements" - } - }, - "policyScope" : { - "type" : "string", - "description" : "This property is used to refer the scope of the policy.", - "enum" : [ "GLOBAL", "METHOD", "OPERATION", "RESOURCE", "SERVICE", "PACKAGE", "TEMPLATE", "SCOPE" ] - }, - "active" : { - "type" : "boolean" - }, - "global" : { - "type" : "boolean" - }, - "systemPolicy" : { - "type" : "boolean" - } - }, - "description" : "A policy is nothing but a group of policy (runtime) enforcements. It contains the list of policy enforcement ids by stage wise. A stage in a policy belongs execution order of a policy enforcement. Each policy enforcement belong to only one of the stage. For more details about policy stage please refer policyStages resource in API Gateway Policy Management service. The policy can be Service/scope/package/global/template." - }, - "PolicyActionParameter" : { - "type" : "object", - "required" : [ "templateKey" ], - "properties" : { - "templateKey" : { - "type" : "string", - "description" : "parameter template key." - }, - "values" : { - "type" : "array", - "description" : "array of values for this parameter template key", - "items" : { - "type" : "string" - } - }, - "parameters" : { - "type" : "array", - "description" : "If this policy action parameter is complex type then array of policy action parameter will be the value for this parameter template key", - "items" : { - "$ref" : "#/definitions/PolicyActionParameter" - } - }, - "extendedProperties" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ExtendedProperties" - } - }, - "type" : { - "type" : "string" - } - }, - "description" : "This model represent the values needed for a policy action to execute. This can be either primitive type or complex structure that in turn refer to another PolicyActionParameter" - }, - "PolicyEnforcements" : { - "type" : "object", - "properties" : { - "enforcements" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Enforcement" - } - }, - "stageKey" : { - "type" : "string", - "description" : "Policy stage. User can refer resource /policyStages to get the list stages can be added here" - } - }, - "description" : "This model contains the list of policy action id specific to a stage." - }, - "Scope" : { - "type" : "object", - "required" : [ "applicableAPITypes", "logicalConnector" ], - "properties" : { - "applicableAPITypes" : { - "type" : "array", - "description" : "This contains the list of API types on which the global policy can be applied. For now only REST and SOAP API types are allowed.", - "items" : { - "type" : "string", - "enum" : [ "SOAP", "REST", "ODATA", "WEBSOCKET" ] - } - }, - "scopeConditions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ScopeCondition" - } - }, - "logicalConnector" : { - "type" : "string", - "description" : "The field is used to perform the logical operation between the scope condition. It will be valid only if we specify scope condition. The default value for this field is AND", - "enum" : [ "AND", "OR" ] - } - }, - "description" : "A scope is used to define the filtering criteria for Global policy. Using scope we can specify the APIs or Resources or opertaion on which the policy enforcements needs to be applied." - }, - "ScopeCondition" : { - "type" : "object", - "required" : [ "attributes", "filterType" ], - "properties" : { - "filterType" : { - "type" : "string", - "description" : "This property is used to define the type of filter we will be using to define attributes. The allowed values are apis, httpMethod, tags. If API type is specified we can specify the fields of API such as apiName, apiDescription, apiVersion. If httpMethod specified we can specify the httpMethods(GET/POST/PUT/DELETE/POST) of the resource to filter the resource. This filter type is used for REST APIs only. If tag type is specified we can specify the field tags in API to filter api using tags. This is also only applicable for REST APIs.", - "enum" : [ "API", "HTTP_METHOD", "TAGS" ] - }, - "attributes" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Attribute" - } - } - }, - "description" : "For each scope we can define set of scope condition. A scope condition will have set of attributes that needs to be satisfied by the APIs or Resource or Operation for applying the policy on that API or Resource or Operation. The logical operator between the attributes is always AND." - }, - "APIResponseDelete" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "API Id" - }, - "apiName" : { - "type" : "string", - "description" : "API Name" - }, - "apiVersion" : { - "type" : "string", - "description" : "API Version" - }, - "type" : { - "type" : "string", - "description" : "API Type" - }, - "publishedPortals" : { - "type" : "array", - "description" : "Published portals of an API", - "items" : { - "type" : "string" - } - }, - "systemVersion" : { - "type" : "integer", - "format" : "int32", - "description" : "System version of an API" - }, - "teams" : { - "type" : "array", - "description" : "Contains teams belonging to an API.", - "items" : { - "$ref" : "#/definitions/Team" - } - }, - "active" : { - "type" : "boolean" - }, - "apiId" : { - "type" : "string" - }, - "responseStatus" : { - "type" : "string", - "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] - }, - "errorReason" : { - "type" : "string" - } - }, - "description" : "This model contains the basics details of an API." - }, - "Team" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "Team id" - }, - "name" : { - "type" : "string", - "description" : "Team name" - }, - "source" : { - "type" : "string", - "description" : "The value is to identify whether the team is created from global team assignment or from user or by system", - "enum" : [ "USER", "GLOBAL_ASSIGNMENT", "SYSTEM" ] - } - } - }, - "EnforcementValidationError" : { - "type" : "object", - "properties" : { - "allowedOccurrence" : { - "type" : "string", - "description" : "This value will be populated when the error occurred due to occurrence of policy enforcement", - "enum" : [ "once", "multiple" ] - }, - "conflictingTemplateId" : { - "type" : "string", - "description" : "This value will be populated when the error occurred due to mutually exclusive policy enforcement are available at the runtime enforcement of an API" - }, - "errorType" : { - "type" : "string", - "description" : "The type of the policy enforcement validation error", - "enum" : [ "dependencyMissing", "mutuallyExclusive", "occurrence" ] - }, - "missingDependency" : { - "type" : "array", - "description" : "The value of the list of missed policy enforcement which are dependent for this policy enforcement. This will be populated when the policy enforcement validation error occurred due to dependency missing", - "items" : { - "type" : "string" - } - }, - "policyActionName" : { - "type" : "string", - "description" : "The name of the policy enforcement which is having the validation error" - }, - "templateId" : { - "type" : "string", - "description" : "The template Id of the policy enforcement which is having the validation error" - } - }, - "description" : "This model is used to represent the type of policy enforcement validation error" - }, - "EnforcementValidationMessage" : { - "type" : "object", - "properties" : { - "apiId" : { - "type" : "string", - "description" : "ID of the API which is having the policy enforcement violation" - }, - "apiName" : { - "type" : "string", - "description" : "Name of the API which is having the policy enforcement violation" - }, - "apiType" : { - "type" : "string", - "description" : "Type of the API which is having the policy enforcement violation" - }, - "apiVersion" : { - "type" : "string", - "description" : "Version of the API which is having the policy enforcement violation" - }, - "errorOnResource" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ResourcePolicyValidationError" - } - } - }, - "description" : "This model is used to give the details about conflicts between the policy enforcements. The conflicts may arise due to dependent policy action enforcement missing or due to occurrence or due to mutually exclusive policy enforcements. These happen during the below scenarios \n1. When a policy is attached to an API, the enforcement validation will happen on policy.\n2. When a global policy is getting activated, it will validate the policy enforcement of the corresponding global policy and the runtime policy enforcements on the applicable APIs for any violation." - }, - "PolicyDetails" : { - "type" : "object", - "properties" : { - "names" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "policyActionsIds" : { - "type" : "array", - "description" : "List of IDs of conflicting policy enforcement of this policy", - "items" : { - "type" : "string" - } - }, - "policyId" : { - "type" : "string", - "description" : "Id of the conflicting policy." - }, - "PolicyScope" : { - "type" : "string", - "description" : "Policy Scope of the conflicting policy.", - "enum" : [ "GLOBAL", "METHOD", "OPERATION", "RESOURCE", "SERVICE", "PACKAGE", "TEMPLATE", "SCOPE" ] - }, - "stageKey" : { - "type" : "string", - "description" : "Stage key of the conflicting policy enforcement of this policy" - } - }, - "description" : "Details of the conflicting policies and policy enforcement of the respective policy" - }, - "ResourcePolicyValidationError" : { - "type" : "object", - "properties" : { - "conflictingPolicies" : { - "type" : "object", - "description" : "Map of conflicting policy ids and its respective details", - "additionalProperties" : { - "$ref" : "#/definitions/PolicyDetails" - } - }, - "error" : { - "$ref" : "#/definitions/EnforcementValidationError" - }, - "errorMessage" : { - "type" : "string", - "description" : "Policy enforcement validation error message" - }, - "method" : { - "type" : "string", - "description" : "Applicable for REST Services only. This will contain the HTTP method of the resource which is having policy enforcement validation error" - }, - "policyDetails" : { - "$ref" : "#/definitions/PolicyDetails" - }, - "resource" : { - "type" : "string", - "description" : "Resource/Operation name which is having the policy enforcement validation error" - } - }, - "description" : "This model contains the resource level details for policy enforcement validation errors. For each resource or operation it will have the details of the list of conflicting policies and the policy enforcements" - }, - "PolicyActionOrder" : { - "type" : "object", - "properties" : { - "sequence" : { - "type" : "array", - "description" : "Sequence of the policy enforcement.\n 1. insequence - Stages or policies marked with this sequence will be executed when the request comes to API Gateway and before the request dispatched to native service. \n 2. outsequence - Stages or policies marked with this sequence will be executed when the request goes out of API Gateway to the invoker. \n 3. faultsequence - Stages or policies marked with this sequence will be executed when native service return any error", - "items" : { - "type" : "string", - "enum" : [ "insequence", "outsequence", "faultsequence" ] - } - }, - "orderPosition" : { - "type" : "string", - "description" : "Order of the policy enforcement. \n 1. First - policy enforcement needs to be added in its respective stage. \n 2. Last - policy enforcement needs to be added as last in its respective stage. \n 3. Before First occurrence - Policy needs to be added before the first occurrence of policyTemplateIds specified. \n 4. After last occurrence - Policy needs to be added after last occurrence of policyTemplateIds specified", - "enum" : [ "first", "last", "beforeFirstOccurence", "afterLastOccurence" ] - }, - "isCustomOrderSupported" : { - "type" : "boolean" - }, - "policyTemplateIDs" : { - "type" : "array", - "description" : "List of policy template ids needed to process the order before first occurrence and after last occurrence", - "items" : { - "type" : "string" - } - } - }, - "description" : "PolicyActionOrder is used to specify the policy enforcement order in its respective stage" - }, - "PolicyActionParameterTemplate" : { - "type" : "object", - "properties" : { - "templateKey" : { - "type" : "string", - "description" : "Unique id for policy action parameter" - }, - "names" : { - "type" : "array", - "description" : "Policy action parameter template name", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "descriptions" : { - "type" : "array", - "description" : "Policy action parameter template description", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "type" : { - "type" : "string", - "description" : "Policy Action parameter data type.", - "enum" : [ "STRING", "TEXT", "INT", "LONG", "DOUBLE", "BOOLEAN", "XPATH", "FILE", "ESB", "OBJECT", "SECURESTRING" ] - }, - "isArray" : { - "type" : "boolean", - "description" : "This property infers whether this policy action parameter can be an array" - }, - "isRequired" : { - "type" : "boolean", - "description" : "This property infers if it is added to a policy enforcement then it is mandate to provide value for this policy action parameter" - }, - "canRender" : { - "type" : "boolean", - "description" : "UI specific property. This property infer it can be rendered on UI" - }, - "defaultValues" : { - "type" : "array", - "description" : "This contains the list of default values for this policy action parameter", - "items" : { - "type" : "object" - } - }, - "possibleValues" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PossibleValue" - } - }, - "policyParaeterTemplates" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PolicyActionParameterTemplate" - } - }, - "parameterTemplatesReference" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "requiredChildParameterKeys" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "applicableServiceTypes" : { - "type" : "array", - "description" : "List of Service type applicable for this policy action parameter", - "items" : { - "type" : "string" - } - } - }, - "description" : "A policy action parameter template defines the schema for a policy enforcement parameter. A policy enforcement can have one or more policy action parameters." - }, - "PolicyActionTemplate" : { - "type" : "object", - "properties" : { - "templateKey" : { - "type" : "string", - "description" : "A unique id for this policy enforcement", - "readOnly" : true - }, - "names" : { - "type" : "array", - "description" : "Name of the policy enforcement along with the corresponding locale information", - "readOnly" : true, - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "descriptions" : { - "type" : "array", - "description" : "Description for the policy enforcement", - "readOnly" : true, - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "applicableServiceTypes" : { - "type" : "array", - "description" : "Policy enforcement only applicable for the list of service type specified here", - "items" : { - "type" : "string" - } - }, - "parameterTemplates" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PolicyActionParameterTemplate" - } - }, - "occurrence" : { - "type" : "string", - "description" : "Allowed occurrence for the respective policy enforcement. \n 1. Once - Policy enforcement can be added only once on the respective stage. \n 2. Multiple - Policy enforcement can be added multiple times on the respective stage.", - "enum" : [ "once", "multiple" ] - }, - "stageSpecific" : { - "type" : "string", - "description" : "Some policy enforcement can be added in multiple stages. This property specify it needs to be processed based on the stage it added." - }, - "dependentActions" : { - "type" : "array", - "description" : "Dependent list of policy enforcements. This policy enforcement can't be added with out the specified list of policy enforcement templates", - "items" : { - "type" : "string" - } - }, - "dependentActionsConnector" : { - "type" : "string" - }, - "mutuallyExclusiveActions" : { - "type" : "array", - "description" : "The list contains the mutually exclusive policy enforcements with this policy enforcement", - "items" : { - "type" : "string" - } - }, - "order" : { - "$ref" : "#/definitions/PolicyActionOrder" - }, - "requiredParametersKeys" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "canAppliedAtResourceMethodLevel" : { - "type" : "boolean", - "description" : "This property infers that the policy action can be applied at resource/operation or method level." - } - }, - "description" : "A policy action template represents the schema for a policy enforcement. " - }, - "PossibleValue" : { - "type" : "object", - "properties" : { - "names" : { - "type" : "array", - "description" : "Descriptive name for the value", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "value" : { - "type" : "string", - "description" : "value that need to be used when providing value for the respective policy action parameter" - } - }, - "description" : "For policy action parameter we can define the list of possible values." - }, - "PolicyEnforcementStage" : { - "type" : "object", - "properties" : { - "stageKey" : { - "type" : "string", - "description" : "The unique key for the stage." - }, - "names" : { - "type" : "array", - "description" : "Stage name with corresponding locale", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "descriptions" : { - "type" : "array", - "description" : "Stage description with corresponding locale", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "policyActionTempaltes" : { - "type" : "array", - "description" : "The list of policy enforcements can be applied on the respective stage.", - "items" : { - "type" : "string" - } - }, - "sequence" : { - "type" : "string", - "description" : "Sequence of the stage.\n 1. insequence - Stages or policies marked with this sequence will be executed when the request comes to API Gateway and before the request dispatched to native service. \n 2. outsequence - Stages or policies marked with this sequence will be executed when the request goes out of API Gateway to the invoker. \n 3. faultsequence - Stages or policies marked with this sequence will be executed when native service return any error.", - "enum" : [ "insequence", "outsequence", "faultsequence" ] - } - }, - "description" : "Each Policy Stage contains one or more policies. It provide you a the list of policy enforcement associated with each stage and its sequence either in, out or fault." - }, - "PolicyAction" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "Policy Action ID" - }, - "names" : { - "type" : "array", - "description" : "List of policy action names with corresponding locale information", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "descriptions" : { - "type" : "array", - "description" : "List of policy action description with corresponding locale information", - "items" : { - "$ref" : "#/definitions/InternationalizedString" - } - }, - "templateKey" : { - "type" : "string", - "description" : "Template key of the policy actions" - }, - "parameters" : { - "type" : "array", - "description" : "This is the list of values that are configured for this policy actions", - "items" : { - "$ref" : "#/definitions/PolicyActionParameter" - } - }, - "stageKey" : { - "type" : "string" - }, - "active" : { - "type" : "boolean" - } - }, - "description" : "This model contains details about a policy action in API Gateway" - }, - "MobileApplicationConfiguration" : { - "type" : "object", - "properties" : { - "mobileApplications" : { - "type" : "array", - "description" : "Configure Mobile Application names to be filtered when Threat protection 'Mobile App Filter' Rule enforced", - "items" : { - "type" : "string" - } - }, - "mobileAppDeviceTypes" : { - "type" : "array", - "description" : "Configure Device Types to be filtered when Threat protection 'Mobile App Filter' Rule enforced", - "items" : { - "type" : "string" - } - } - }, - "description" : "Configured values are used in Threat protection Rules 'Mobile App filter'" - }, - "AssertionConfiguration" : { - "type" : "object", - "properties" : { - "assertionId" : { - "type" : "string", - "description" : "A unique ID for the assertion", - "readOnly" : true - }, - "Assertion name" : { - "type" : "string", - "description" : "Name of the assertion" - }, - "Assertion element" : { - "type" : "string", - "description" : "XML element which represents the assertion" - }, - "Assertion type" : { - "type" : "string", - "description" : "Type of assertion(tokenAssertion/bindingAssertion)", - "enum" : [ "tokenAssertion", "bindingAssertion", "policyAssertion" ] - } - } - } - } +{ + "swagger" : "2.0", + "info" : { + "description" : "Policies are the set of rules that gets enforced on the APIs (or even at finer levels like operations/methods) for every invocation of the API. In API Gateway, a policy is made up of a set of policy actions. During an invocation of an API, API Gateway executes every policy action in the policy in a sequential manner. Policy action defines the rule along with its parameters that is applied on the resources/operation of an API. Every policy action will belong to either one or more policy stages. A policy stage is a logical grouping of the policy actions. A policy is divided into different stages that depict the execution order of the policy actions. A stage might contain one or more policy action. \n\nUse this method to get a list of all the policy stages\n\nThe policies can be categorized into Service level policies, Scope level policies, Package level policies, Policy Templates and Global policies. \n\nA service level policy is applicable for all resources/operation inside that API. \n\nA scope level policy is applicable for all resources/operation inside that scope. It will override or add the runtime enforcements based on the enforcement type. \n\nA Global Policy is applicable to all APIs matching the scope defined inside the policy. Global policy will take precedence over scope and service level policy. \n\nPackage level policies are created as part of the creation of packages and plans. A package level policy will be applied over global, scope and service level policies. \n\nIf one needs to apply the same set of policy actions to different APIs with just changes to the policy parameter values, then he/she can create a Policy template and can be apply it to the APIs whenever needed. While applying policy template on APIs user need to clone policy template and attach to the corresponding API. It will avoid recreating the policies. \n\n Any user with the 'Manage APIs' functional privilege can manage the service level polices. In order to manage Global policies, Threat protection policies etc, users need additional functional privileges. By default, the users who are part of API-Gateway-Administrators group will have all privileges.\n\nThis swagger doc also contains API Definition for managing Denied IP addresses. Only Administrator can invoke the API methods. Denied IPs are the IPs that violated the threat protection rules configured. Using this API you can retrieve the list of IPs denied and you can exclude the IPs from the list of denied IPs using the delete HTTP method. \n\n API Gateway uses WS-Security to protect the SOAP services at the message level. By default, API Gateway supports a number of security policies for the SOAP services like WSS UserName, SAML, Kerberos, Encryption etc. In addition to this, API Gateway also provides an extension using custom policy assertions that allows the API providers to extend and provide additional security policies which are not supported by API Gateway. In WS Security, Policy assertions can be used in defining individual security requirements or constraints. These individual policy assertions can be combined to create security policies that can be used to secure messages exchanged between a Web service and a client. ", + "version" : "10.3", + "title" : "API Gateway Policy Management Service" + }, + "host" : "localhost:5555", + "basePath" : "/rest/apigateway", + "schemes" : [ "http" ], + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "paths" : { + "/serviceResultCache/{apiId}" : { + "get" : { + "description" : "This REST Request is used to get the Service Result cache size for the API using apiID. An alternative REST API call for /serviceResultCache. Instead of specifying name and version, if you know API id you can directly use that id to get the number of cached responses for that API", + "operationId" : "getCacheDetailsByapiId", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "The id of API for which the cached response size is requested", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the request for Service Result Cache size is successfully returned. The response will have number of cache elements (A cached element is nothing but a single response) for the given API id, so it infers that the number of responses are actually cached for this API ", + "examples" : { + "application/json" : "{\r\n\t\"Cache size\": 2\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access" + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error while fetching the Service Result Cache for the API" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This REST Request is used to request for deletion of Service Result Cache for the API using api id", + "operationId" : "deleteCacheDetailsbyAPIId", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "The id of API for which the Service Result Cache deletion is requested", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "204" : { + "description" : "This status code indicates that Service Result Cache has been deleted for the API and no data is returned in response " + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to delete the Service Result cache of the specified API." + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error while deleting the Service Result Cache for the API" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/serviceResultCache" : { + "get" : { + "description" : "You can enable API caching in API Gateway to cache your native service's response. With caching, you can reduce the number of calls made to your endpoint and also improve the latency of the requests to your API. When you enable caching for a stage, API Gateway caches responses from your endpoint for a specified time to live period. API Gateway then responds to the request by looking up the endpoint response from the cache instead of making a request to your endpoint. \n\nService Result cache can be configured for a API or Resource/method or Operation. \n\nThis REST Request is used to get the Service Result cache size for an API using apiName and apiVersion.", + "operationId" : "getCacheDetailsByapiNameAndVersion", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiName", + "in" : "query", + "description" : "This query parameter is used to specify the API name for which the service result cache element size needs to be fetched.", + "required" : true, + "type" : "string", + "x-example" : "apiName=WIKI-SearchData" + }, { + "name" : "apiVersion", + "in" : "query", + "description" : "The version of the apiName parameter specified", + "required" : true, + "type" : "string", + "x-example" : "apiVersion=1.0" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the request for Service Result Cache size has been successfully returned. The response will have number of cache elements (A cached element is nothing but a single response) for the given API name and version, so it infers that the number of responses are actually cached for this API", + "examples" : { + "application/json" : "{\r\n\t\"Cache size\": 2\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access." + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error while fetching the Service Result cache for the API" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This REST Request is used to request for deletion of Service Result cache for the API using apiName and apiVersion", + "operationId" : "deleteCacheDetailsByapiNameAndVersion", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiName", + "in" : "query", + "description" : "This query parameter is used to specify the API name for which the service result cache deletion is requsted.", + "required" : true, + "type" : "string", + "x-example" : "apiName=WIKI-SearchData" + }, { + "name" : "apiVersion", + "in" : "query", + "description" : "The version of the apiName parameter specified", + "required" : true, + "type" : "string", + "x-example" : "apiVersion=1.0" + } ], + "responses" : { + "204" : { + "description" : "This status code indicates that Service Result Cache has been deleted for the specified API and no data is returned in response" + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to delete the Service Result Cache of the specified API." + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error while deleting the Service Result cache for the API" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policyActions/{policyActionId}" : { + "get" : { + "description" : "This request will return policy action details of the policy action based on the id specified in path", + "operationId" : "getPolicyAction", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyActionId", + "in" : "path", + "description" : "This path parameter is used to specify the policy action id which policy action details needs to retrieved.", + "required" : true, + "type" : "string", + "x-example" : "685e99ee-0e1b-4afa-8ff3-4322cf296566" + } ], + "responses" : { + "200" : { + "description" : "The details of policy action will be available in response body", + "schema" : { + "$ref" : "#/definitions/PolicyAction" + }, + "examples" : { + "application/json" : "{\r\n \"policyAction\": {\r\n \"id\": \"685e99ee-0e1b-4afa-8ff3-4322cf296566\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"values\": [\r\n \"soap\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the policy action specified does not exists", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the details of a policy action." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "This put request is used to update policy action based on the policy action id which is specified in path", + "operationId" : "updatePolicyAction", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyActionId", + "in" : "path", + "description" : "This path parameter is used to specify the policy action id which needs to be updated.", + "required" : true, + "type" : "string", + "x-example" : "685e99ee-0e1b-4afa-8ff3-4322cf296566" + }, { + "in" : "body", + "name" : "body", + "description" : "Contains the policy action details which needs to be updated.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/PolicyAction" + }, + "x-examples" : { + "application/json" : "{\r\n \"policyAction\": {\r\n \"id\": \"685e99ee-0e1b-4afa-8ff3-4322cf296566\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"values\": [\r\n \"soap\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that API Gateway has successfully updated the specified policy action and the updated policy action details can be found in the response body", + "schema" : { + "$ref" : "#/definitions/PolicyAction" + }, + "examples" : { + "application/json" : "{\r\n \"policyAction\": {\r\n \"id\": \"685e99ee-0e1b-4afa-8ff3-4322cf296566\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"values\": [\r\n \"soap\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n}" + } + }, + "500" : { + "description" : "This status code indicates the processing error occurred during the update of policy action and the corresponding details can be seen in the response body", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to process the PUT request for APIs. An error occurred while processing the payload. Error message:\\n Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to update the policy action." + }, + "400" : { + "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to process the PUT request for APIs. An error occurred while processing the payload. Error message:\\n Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of key and payload.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This delete request will delete the policy action based on the policy action id which is specified in path", + "operationId" : "deletePolicyAction", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyActionId", + "in" : "path", + "description" : "Policy Action ID", + "required" : true, + "type" : "string", + "x-example" : "685e99ee-0e1b-4afa-8ff3-4322cf296566" + } ], + "responses" : { + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to delete the policy action." + }, + "204" : { + "description" : "This status code indicates that the specified policy action successfully deleted" + }, + "404" : { + "description" : "This status code indicates that the corresponding policy action id does not exist", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policyActions" : { + "get" : { + "description" : "This request will return all the policy actions from API Gateway", + "operationId" : "getAllPolicyActions", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyActionIds", + "in" : "query", + "description" : "This is a query parameter. Provide comma separated Policy Action ids to get the policy action details for specified policy action ids", + "required" : false, + "type" : "string", + "x-example" : "685e99ee-0e1b-4afa-8ff3-4322cf296566,78c0f92e-c85d-44c2-b7d5-e7a11fda8a57" + } ], + "responses" : { + "200" : { + "description" : "The list of policy actions will be available in the response body. The list can be all or specific set of policy action ids specified in query string. If any of the policy action id specified in query parameter is not available then it will omit that id and fetch result for other valid ids", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/PolicyAction" + } + }, + "examples" : { + "application/json" : "{\r\n \"policyAction\": [\r\n {\r\n \"id\": \"50c705f0-28d9-4a1a-a20b-6c84a0f4a837\",\r\n \"names\": [\r\n {\r\n \"value\": \"Straight Through Routing\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"templateKey\": \"straightThroughRouting\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"endpointUri\",\r\n \"values\": [\r\n \"http://localhost:8080/employee_service/${sys:resource_path}\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n },\r\n {\r\n \"id\": \"09219ca1-9bd7-4d62-8baf-167d29e3390e\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates shows either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to get the policy actions." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "This REST request is used to create policy action. The result of this request is a policy action payload and is available in the response. To know about the policy action template and to create it you can use the policyActionTemplates/{templateKey} to get the template structure of a policy action. The template key will be available in policyStage resource.", + "operationId" : "createPolicyAction", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "Contains the policy action details of the newly created policy action", + "required" : true, + "schema" : { + "$ref" : "#/definitions/PolicyAction" + }, + "x-examples" : { + "application/json" : "{\r\n \"policyAction\": {\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ] \r\n },\r\n\t{\r\n\t\t\"templateKey\": \"soapVersion\",\r\n\t\t\"values\": [\r\n\t\t\"soap\"\r\n\t\t]\r\n\t}\r\n ]\r\n }\r\n}" + } + } ], + "responses" : { + "201" : { + "description" : "This status code indicates that the policy action is created successfully and the created policy action can be seen in the response body", + "schema" : { + "$ref" : "#/definitions/PolicyAction" + }, + "examples" : { + "application/json" : "{\r\n \"policyAction\": {\r\n \"id\": \"685e99ee-0e1b-4afa-8ff3-4322cf296566\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"values\": [\r\n \"http\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"values\": [\r\n \"soap\"\r\n ]\r\n }\r\n ],\r\n \"active\": false\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that the request payload is not correct and corresponding error details can be seen in the response body", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of key and payload.\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to create policy actions." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/configurations/mobileApp" : { + "get" : { + "description" : "You can use API Gateway to disable access for certain mobile application versions on a predefined set of mobile platforms. By registering the required devices and applications and disabling access to these versions, you ensure that all users use the latest versions of the applications and take advantage of the latest security and functional updates.", + "operationId" : "getMobileApplicationConfigurations", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This status code indicates that the Mobile Applications configurations are retrieved successfully. ", + "schema" : { + "$ref" : "#/definitions/MobileApplicationConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"mobileApplications\": [\r\n \"MyApp\",\r\n \"HelloApplication\"\r\n ],\r\n \"mobileAppDeviceTypes\": [\r\n \"Android\",\r\n \"ios\"\r\n ]\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that the mobileApp not mentioned in API access uri path.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"Missing mandatory field configId in request.\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user is not a valid API Gateway user for retrieving the Mobile Applications configuration." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "The method is used to update the details of the Mobile Applications configuration in API Gateway.You can use API Gateway to disable access for certain mobile application versions on a predefined set of mobile platforms. By registering the required devices and applications and disabling access to these versions, you ensure that all users use the latest versions of the applications and take advantage of the latest security and functional updates.", + "operationId" : "saveMobileApplicationConfigurations", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "", + "required" : true, + "schema" : { + "$ref" : "#/definitions/MobileApplicationConfiguration" + }, + "x-examples" : { + "application/json" : "{\r\n \"mobileApplications\": [\r\n \"MyApp\",\r\n \"HelloApplication\"\r\n ],\r\n \"mobileAppDeviceTypes\": [\r\n \"Android\",\r\n \"ios\"\r\n ]\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the Mobile Applications configuration has been successfully updated in API Gateway, and the updated configuration is available in the response body.", + "schema" : { + "$ref" : "#/definitions/MobileApplicationConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"mobileApplications\": [\r\n \"MyApp\",\r\n \"HelloApplication\"\r\n ],\r\n \"mobileAppDeviceTypes\": [\r\n \"Android\",\r\n \"ios\"\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have \"Manage Threat Protection\" functional privilege to access this API." + }, + "405" : { + "description" : "This status code indicates that the specified HTTP method is not allowed for the requested Mobile Applications in API Gateway.", + "examples" : { + "application/json" : "{\r\n\t\"errorDetails\": \" Unable to process the PUT request for Mobile Applications configuration. Error occurred while processing the payload. Error Message: Method: PUT is not allowed on resource: loadBalancer\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that the request body is invalid.", + "examples" : { + "application/json" : "{\r\n\"errorDetails\": \" Invalid property key found in request payload.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/assertions/{assertionId}" : { + "get" : { + "description" : "This request will return assertion element", + "operationId" : "getAssertion", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "assertionId", + "in" : "path", + "description" : "This path parameter is used to specify the assertion id which assertion details needs to retrieved.", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Details of the assertion will be available in response body", + "schema" : { + "$ref" : "#/definitions/AssertionConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"assertionConfiguration\": {\r\n \"configurationId\": \"be463644-25a6-42af-840d-0b2d43be41ec\",\r\n \"configurationName\": \"CustomBindingAssertion1\",\r\n \"configurationElement\": \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n \\n\\t\\t \\n \\n \",\r\n \"assertionType\": \"bindingAssertion\"\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the assertion id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "This REST service is used to update the assertion", + "operationId" : "updateAssertion", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "assertionId", + "in" : "path", + "description" : "This path parameter is used to specify the assertion id which assertion details needs to updated.", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "in" : "body", + "name" : "body", + "description" : "assertion request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/AssertionConfiguration" + }, + "x-examples" : { + "application/json" : "{\r\n \"assertionConfiguration\": {\r\n \"configurationId\": \"be463644-25a6-42af-840d-0b2d43be41ec\",\r\n \"configurationName\": \"CustomBindingAssertion1\",\r\n \"configurationElement\": \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n \\n\\t\\t \\n \\n \",\r\n \"assertionType\": \"bindingAssertion\"\r\n }\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that API Gateway has successfully updated the specified assertion and the updated assertion details can be found in the response body", + "schema" : { + "$ref" : "#/definitions/AssertionConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"assertionConfiguration\": {\r\n \"configurationId\": \"0882293d-e773-4242-8bf5-c22e693f8413\",\r\n \"configurationName\": \"token_04\",\r\n \"configurationElement\": \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n \\r\\n\\t\\t \\r\\n \\r\\n \"\r\n }\r\n}" + } + }, + "400" : { + "description" : "Tis status code indicates the request payload is not correct and corresponding error details can be seen in the response body", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to process the PUT request for APIs. An error occurred while processing the payload. Error message:\\n Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of payload.\"\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the assertion id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This delete request will delete the assertion based on the assertion id which is specified in path", + "operationId" : "deleteAssertion", + "parameters" : [ { + "name" : "assertionId", + "in" : "path", + "description" : "This path parameter is used to specify the assertion id for which assertion needs to deleted.", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "204" : { + "description" : "This status code indicates that the specified assertion is successfully deleted" + }, + "401" : { + "description" : "This status code indicates either user didn't provide any user credential or user doesn't have API Gateway Administrator or API Gateway provider access to delete the assertion." + }, + "404" : { + "description" : "This status code indicates that the corresponding assertion id does not exist", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 685e99ee-0e1b-4afa-8ff3-4322cf2965661\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/assertions" : { + "get" : { + "description" : "This request will return all the assertions from API Gateway", + "operationId" : "getAllAssertions", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "Retrieves a list of available assertions in API Gateway.", + "schema" : { + "$ref" : "#/definitions/AssertionConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"assertionConfigurations\": [\r\n {\r\n \"configurationId\": \"be463644-25a6-42af-840d-0b2d43be41ec\",\r\n \"configurationName\": \"CustomBindingAssertion1\",\r\n \"configurationElement\": \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n \\n\\t\\t \\n \\n \",\r\n \"assertionType\": \"bindingAssertion\"\r\n },\r\n {\r\n \"configurationId\": \"9bfbd5ea-86eb-4990-8f7a-fdfef8f16f86\",\r\n \"configurationName\": \"tokenAssertion01\",\r\n \"configurationElement\": \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n \\r\\n\\t\\t \\r\\n \\r\\n \",\r\n \"assertionType\": \"tokenAssertion\"\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that authorization has been refused for this HTTP request. This is possibly because, the user has not specified the required credentials (username and password), or has specified invalid credentials, or the user is not authenticated as an API Gateway Administrator to retrieve assertions in API Gateway." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "Custom assertions allow the API providers to extend and provide additional security policies that are not available by default in API Gateway. In WS-Security, custom assertions are used for expressing individual security requirements, constraints, or both. The individual policy assertions can be combined to create security policies that ensure secure and reliable exchanges of SOAP messages between a client and a SOAP API. This REST service is used to create a assertion. Below are the request payloads for different types of assertions.\r\nbindingAssertion: "{\r\n\t"configurationElement": "<sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">\r\n\t\t\t\t\t\t<sp:InitiatorToken>\r\n\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never">\r\n\t\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t\t<sp:WssX509V3Token10/>\r\n\t\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t\t</sp:X509Token>\r\n\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t</sp:InitiatorToken>\r\n\t\t\t\t\t\t<sp:RecipientToken>\r\n\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never">\r\n\t\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t\t<sp:WssX509V3Token10/>\r\n\t\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t\t</sp:X509Token>\r\n\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t</sp:RecipientToken>\r\n\t\t\t\t\t\t<sp:AlgorithmSuite>\r\n\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t<sp:Basic256 />\r\n\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t</sp:AlgorithmSuite>\r\n\t\t\t\t\t\t<sp:Layout>\r\n\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t<sp:LaxTimestampFirst/>\r\n\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t</sp:Layout>\r\n\t\t\t\t\t\t<sp:ProtectTokens/>\r\n\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t</sp:AsymmetricBinding>",\r\n\t"configurationName":"CustomBindingAssertion1",\r\n\t"assertionType":"bindingAssertion"}"\r\n\r\ntokenAssertion: "{\r\n\t"configurationElement": "<sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">\r\n\t\t\t\t\t\t<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"/>\r\n\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t</sp:SupportingTokens>",\r\n\t"configurationName":"UsernameToken",\r\n\t"assertionType":"tokenAssertion"}"\r\n\t\r\npolicyAssertion: "{\r\n\t"configurationElement": "<wsp:Policy wsu:Id="CustomBinding_IWSTrust13Async_policy"\r\n\t\t\txmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"\r\n\t\t\txmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" \r\n\t\t\txmlns:wsaw="http://www.w3.org/2006/02/addressing/wsdl"\r\n\t\t\txmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">\r\n\t\t\t<wsp:ExactlyOne>\r\n\t\t\t\t<wsp:All>\r\n\t\t\t\t\t<sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t<sp:TransportToken>\r\n\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t<sp:HttpsToken/>\r\n\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t</sp:TransportToken>\r\n\t\t\t\t\t\t\t<sp:AlgorithmSuite>\r\n\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t<sp:Basic128/>\r\n\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t</sp:AlgorithmSuite>\r\n\t\t\t\t\t\t\t<sp:Layout>\r\n\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t<sp:Strict/>\r\n\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t</sp:Layout>\r\n\t\t\t\t\t\t\t<sp:IncludeTimestamp/>\r\n\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t</sp:TransportBinding>\r\n\t\t\t\t\t<sp:EndorsingSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t<sp:KerberosToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Once">\r\n\t\t\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t\t\t<sp:WssGssKerberosV5ApReqToken11/>\r\n\t\t\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t\t\t</sp:KerberosToken>\r\n\t\t\t\t\t\t\t<sp:KeyValueToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never" wsp:Optional="true"/>\r\n\t\t\t\t\t\t\t<!-- \r\n\t\t\t\t\t\t\t<sp:SignedParts>\r\n\t\t\t\t\t\t\t\t<sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>\r\n\t\t\t\t\t\t\t</sp:SignedParts>\r\n\t\t\t\t\t\t\t-->\r\n\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t</sp:EndorsingSupportingTokens>\r\n\t\t\t\t\t<sp:Wss11 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t<sp:MustSupportRefKeyIdentifier/>\r\n\t\t\t\t\t\t\t<sp:MustSupportRefIssuerSerial/>\r\n\t\t\t\t\t\t\t<sp:MustSupportRefThumbprint/>\r\n\t\t\t\t\t\t\t<sp:MustSupportRefEncryptedKey/>\r\n\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t</sp:Wss11>\r\n\t\t\t\t\t<sp:Trust13 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">\r\n\t\t\t\t\t\t<wsp:Policy>\r\n\t\t\t\t\t\t\t<sp:MustSupportIssuedTokens/>\r\n\t\t\t\t\t\t\t<sp:RequireClientEntropy/>\r\n\t\t\t\t\t\t\t<sp:RequireServerEntropy/>\r\n\t\t\t\t\t\t</wsp:Policy>\r\n\t\t\t\t\t</sp:Trust13>\r\n\t\t\t\t\t<wsaw:UsingAddressing/>\r\n\t\t\t\t</wsp:All>\r\n\t\t\t</wsp:ExactlyOne>\r\n\t\t</wsp:Policy>"\r\n\t"configurationName":"KerberosOverTransport",\r\n\t"assertionType":"policyAssertion"}"", + "operationId" : "createAssertion", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "assertion request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/AssertionConfiguration" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"configurationElement\": \"\r\n\t\r\n\t\t\r\n\t\r\n\",\r\n\t\"configurationName\": \"UsernameToken\",\r\n\t\"assertionType\": \"tokenAssertion\"\r\n}" + } + } ], + "responses" : { + "201" : { + "description" : "Assertion successfully created in API Gateway", + "schema" : { + "$ref" : "#/definitions/AssertionConfiguration" + }, + "examples" : { + "application/json" : "{\r\n \"assertionConfiguration\": {\r\n \"configurationId\": \"0882293d-e773-4242-8bf5-c22e693f8413\",\r\n \"configurationName\": \"token_04\",\r\n \"configurationElement\": \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n \\r\\n\\t\\t \\r\\n \\r\\n \"\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that the request payload is not correct and corresponding error details can be seen in the response body", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of payload.\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policyStages" : { + "get" : { + "description" : "This REST Request is used to get the list of policy stages available in API gateway. It will also show the list of policies (template key of each policy) associated with each stage. ", + "operationId" : "getPolicyStages", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "The response body contains list of all stages and policy associated with the stages. Also the response body contains the sequence where the policies corresponding to a stage will be executed", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/PolicyEnforcementStage" + } + }, + "examples" : { + "application/json" : "{\r\n \"stages\": [\r\n {\r\n \"stageKey\": \"threatProtection\",\r\n \"names\": [\r\n {\r\n \"value\": \"Threat Protection\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"globalipdos\",\r\n \"ipdos\",\r\n \"egviolationalert\",\r\n \"MsgSizeLimitFilter\",\r\n \"OAuthFilter\",\r\n \"mobileAppProtectionFilter\",\r\n \"sqlInjectionFilter\",\r\n \"antiVirusFilter\",\r\n \"jsonThreatProtectionFilter\",\r\n \"xmlThreatProtectionFilter\",\r\n \"customFilter\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"transport\",\r\n \"names\": [\r\n {\r\n \"value\": \"Transport\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"entryProtocolPolicy\",\r\n \"setMediaType\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"IAM\",\r\n \"names\": [\r\n {\r\n \"value\": \"Identity and Access Management\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"inboundAuthTransport\",\r\n \"webServiceSecurityPolicy\",\r\n \"authorizeUser\",\r\n \"evaluatePolicy\"\r\n ],\r\n \"sequence\": null\r\n },\r\n {\r\n \"stageKey\": \"requestPayloadProcessing\",\r\n \"names\": [\r\n {\r\n \"value\": \"Request Payload Processing\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"invokeESB\",\r\n \"xsltTransformation\",\r\n \"validateSchema\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"routing\",\r\n \"names\": [\r\n {\r\n \"value\": \"Routing Policies\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"contentBasedRouting\",\r\n \"contextBasedRouting\",\r\n \"dynamicRouting\",\r\n \"loadBalancerRouting\",\r\n \"straightThroughRouting\",\r\n \"customHttpHeaders\",\r\n \"outboundTransportAuthentication\",\r\n \"outboundMessageAuthentication\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"LMT\",\r\n \"names\": [\r\n {\r\n \"value\": \"Logging, Monitoring and Traffic Optimization\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"logInvocation\",\r\n \"monitorServicePerformance\",\r\n \"monitorSLA\",\r\n \"throttle\",\r\n \"serviceResultCache\"\r\n ],\r\n \"sequence\": \"insequence\"\r\n },\r\n {\r\n \"stageKey\": \"responseProcessing\",\r\n \"names\": [\r\n {\r\n \"value\": \"Response Processing\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"invokeESB\",\r\n \"xsltTransformation\",\r\n \"validateSchema\"\r\n ],\r\n \"sequence\": \"outsequence\"\r\n },\r\n {\r\n \"stageKey\": \"responseFaultProcessing\",\r\n \"names\": [\r\n {\r\n \"value\": \"Error Handling\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [],\r\n \"policyActionTemplates\": [\r\n \"conditionalErrorProcessing\"\r\n ],\r\n \"sequence\": \"faultsequence\"\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the policy stage." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies" : { + "get" : { + "description" : "This REST request is used to retrieve list of all policies from API Gateway. This can also be used to retrieve details for particular set of policies by specifying the policy ids in the query string.", + "operationId" : "getPolicies", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyIds", + "in" : "query", + "description" : "This query parameter is used to retrieve policy details of particular set of policies. The policy IDs need to be separated using ',' to specify more than one policy id", + "required" : false, + "type" : "string", + "x-example" : "policyIds=1807d561-e0a1-4d06-bfbf-49bff4c5dfae,d7672248-7d25-444e-a9b6-853e1d95d1c6" + }, { + "name" : "stage", + "in" : "query", + "description" : "This query parameter is used to retrieve the Threat Protection policies created in API Gateway. The value of this query parameter should be threat protection, if other values specified it wont respect that value and return all the policies in the API Gateway", + "required" : false, + "type" : "string", + "x-example" : "stage=threatprotection", + "enum" : [ "threatprotection" ] + }, { + "name" : "policyType", + "in" : "query", + "description" : "This query parameter is used to retrieve policy details for a list of policies of a particular policy type. The policy type can be template or global. If the policy type is template then policy details of all the policy templates is returned. If the policy type is global then the policy details of global policies is returned.If any other policy type is specified all policies are returned", + "required" : false, + "type" : "string", + "x-example" : "policyType=global", + "enum" : [ "template", "global" ] + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the policy details are available and policy details of the policies will be sent as response. This example shows the policy details of list of global policies.", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Policy" + } + }, + "examples" : { + "application/json" : "{\r\n \"policy\": [\r\n {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": true,\r\n \"systemPolicy\": false\r\n },\r\n {\r\n \"id\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n },\r\n {\r\n \"id\": \"GlobalLogInvocationPolicy\",\r\n \"names\": [\r\n {\r\n \"value\": \"Transaction logging\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"This is a system policy, which has log invocation policy and filters associated to log request or response payloads to a specified destination. These transactions are monitored and logged across all APIs in API Gateway\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"GlobalLogInvocationPolicyAction\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"LMT\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": true\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the policy details." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "This REST request is used to create a policy in API Gateway. The body of this request should contain the payload of the policy. Using this request we can create Policies of different type.\n To create a service, scope, package and template level policy we can add the policy payload and set the corresponding policy scope. \nTo create a Global policy user should have API Gateway Administrator access. Other users cannot create global policies. To Create Global policy send the policy payload along with scope details and policy scope set to global. Similarly, to create a threat protection policy user have to send the policy along with the policy enforcement id of Threat protection policy actions. The policy actions needs to be created before adding the enforcement id of policy actions to policy. Threat protection rules are another type of global level policies which are applied to all requests and responses. The threat protection policy enforcement cannot be used in any other policies and other policy enforcement cannot be used in threat protection policies.\n Using this request we can also clone a policy. To clone a policy user have to set the appropriate query parameters.\n The effective policy calculation for policy(Service and scope level policy) is not calculated till it is referred in the API. But for a global policy the effective policy is calculated while creating the policy itself. Policy with template as policy scope cannot be referred from any API or scope. User needs to clone the policy templates and set the policy scope to either service or scope or global before referring it from the API. Policy should have only one occurrence of any stage. Multiple policy enforcements can be added to the applicable stages. To know about the list of stages and applicable policy enforcements on that stage please refer /policyStages resource.", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "x-examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Global Policy for all employee APIs. IT will make sure the request are authenticated before sent to native service\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"31c729f9-4f1c-4074-acba-6975c0668433\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" + } + }, { + "name" : "action", + "in" : "query", + "description" : " This query parameter represents the action user want to perform. Currently user can only clone the policy. Hence the allowed value for this parameter would be \"clone\". Cloning is duplication of one or more policies in to a single policy. All the policy actions specified inside the policies are also be duplicated while creating the duplicate policy.The effective policy is not calculated for this until this policy is referred from the API.", + "required" : false, + "type" : "string", + "x-example" : "action=clone", + "enum" : [ "clone" ] + }, { + "name" : "policyIds", + "in" : "query", + "description" : "This query parameter represents the list of policies from which the new clone policy is created. If you specify list of policies then the newly created policy has all the policy action from all the policies.", + "required" : false, + "type" : "string", + "x-example" : "policyIds=id1,id2,id3" + }, { + "name" : "policyScope", + "in" : "query", + "description" : "This query parameter represents the policy scope of cloned policy. We can clone policy from one policy scope to another policy scope. Allowed policy scope values are global,service,template & scope", + "required" : false, + "type" : "string", + "x-example" : "policyScope=global", + "enum" : [ "global", "service", "template", "scope" ] + } ], + "responses" : { + "201" : { + "description" : " This status code indicates the policy is created/cloned successfully. The response body will contain the policy details of newly created/cloned policy", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Global Policy for all employee APIs. IT will make sure the request are authenticated before sent to native service\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"31c729f9-4f1c-4074-acba-6975c0668433\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to create or clone policy. If the policy scope is GLOBAL and if user gets this status code then the user might not have API Gateway Administrator access." + }, + "400" : { + "description" : "This status code indicates that request body is not correct.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to create the resource. Error in processing the payload null. Error Message . Check the correctness of key and payload.\"\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error during the creation of the policy. For example if it is a global policy we cannot create policy with out scope and the examples show a message of such scenario ", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" With out Setting scope, policy actions cannot be added. Please select the applicable Service Type in scope before adding Policy Action.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}" : { + "get" : { + "description" : "This REST request is used to retrieve the policy details for a specified policy in API Gateway. If policy id is available then the policy details is sent in response.", + "operationId" : "getPolicyById", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the policy id for which the policy details needs to be retrieved", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "The policy detail of the specified policy is sent in response body. This sample contains policy details of a global policy.", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the policy details." + }, + "404" : { + "description" : "This status code indicates that the policy id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "This REST request is used to update the policy details for a specific policy. For Global policy user should have API Gateway administrator access to update global policy", + "operationId" : "updatePolicyByID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the policy id that needs to be updated.", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + }, { + "in" : "body", + "name" : "body", + "description" : "", + "required" : false, + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "x-examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\" : \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Global Policy for all employee APIs. IT will make sure the request are authenticated before sent to native service\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the specified policy has been updated successfully and the updated policy details will be available in response body", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Global Policy for all employee APIs. IT will make sure the request are authenticated before sent to native service\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that server has encountered an error during the update the of policy. This sample shows the global policy update failed due to conflict cases.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Conflict between global Policy for API - EMP_POJO_WSDL, Operation - updateEmployee - An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"reason\": [\r\n {\r\n \"apiId\": \"421eb4bf-b2d0-40a4-900f-ad5fd0a2484e\",\r\n \"apiName\": \"EMP_POJO_WSDL\",\r\n \"apiType\": \"SOAP\",\r\n \"errorOnResource\": [\r\n {\r\n \"conflictingPolicies\": {\r\n \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\": {\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\"\r\n ],\r\n \"policyId\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"updateEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\": {\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\"\r\n ],\r\n \"policyId\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"addEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\": {\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\"\r\n ],\r\n \"policyId\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"deleteEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\": {\r\n \"names\": [\r\n {\r\n \"value\": \"b\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"121a6048-08bd-4aeb-8a07-a6d1aeae2710\"\r\n ],\r\n \"policyId\": \"7f009e40-dcbb-4dfc-b653-2e33ecf7f608\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"c9e32bec-7185-44b4-9565-f0b17da8b8eb\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"getEmployee\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the specified policy id is not available in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to update the policy details.If global policy is specified then user should have API Gateway administrator access to update the policy details." + }, + "400" : { + "description" : "This status code indicates that the specified policy does not have proper request. The sample shows the error when tried to update a global policy with any scope defined for the global policy.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" With out Setting scope, policy actions cannot be added. Please select the applicable Service Type in scope before adding Policy Action.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This REST request is used to delete the policy from API gateway. This request will automatically delete the associated policy action for this policy", + "operationId" : "deletePolicyByID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the policy id that needs to be deleted. If the policy id specified is global policy then it needs to be in inactive state to delete. Active global policy and global policy with systemPolicy property set to true cannot be deleted.", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "204" : { + "description" : "This status code indicates that the specified policy is successfully deleted" + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API gateway provider access to delete the policy. If the specified policy is global then user should have API Administrator access to delete the global policy" + }, + "404" : { + "description" : "This status code indicates that the policy id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that error has occurred during the deletion of policy. The sample shows that the policy cannot be delete since the global policy is in active state.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Policy [Employee Global Policy] is in active state, hence cannot be deleted. Please deactivate the policy to delete\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/apis" : { + "get" : { + "description" : "This REST request is used to get the list of applicable APIs for a global policy. An API become applicable API for a global policy only if it satisfies the scope specified in the global policy. By default it will return the basic API details of all the applicable APIs either if the API is active or inactive for a global policy. User can use the query parameter \"active\" to retrieve all active APIs for a global policy or all applicable APIs regardless of its status for a global policy.", + "operationId" : "getApplicableAPIsForGlobalPolicyByID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the global policy id for which we need the list of applicable APIs", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + }, { + "name" : "active", + "in" : "query", + "description" : "This is a query parameter. It is used to retrieve the list of applicable APIs for a global policy. If the value for this parameter is 'false' then it will return all the APIs whether it is active or not for the specified global policy. If the value for this flag is 'true' then it will return only the list of applicable active APIs alone for the specified global policy", + "required" : false, + "type" : "string", + "x-example" : "active=false" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the specified global policy is valid and in the response it will contain the list of applicable APIs based on the parameters specified in the request. ", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/APIResponseDelete" + } + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": [\r\n {\r\n \"api\": {\r\n \"apiName\": \"API Gateway \",\r\n \"apiVersion\": \"10.0\",\r\n \"apiDescription\": \"This swagger doc contain API Definition for API Gateway APIs. It contains swagger definition for all APIs in API Gateway.\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"4869049b-4cef-4c76-b678-14d4970c5241\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n },\r\n {\r\n \"api\": {\r\n \"apiName\": \"EMP\",\r\n \"apiVersion\": \"1.0\",\r\n \"isActive\": true,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"e60d6fe9-3612-469f-b33a-fb4c97c72b3b\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n },\r\n {\r\n \"api\": {\r\n \"apiName\": \"EMP_POJO_WSDL\",\r\n \"apiVersion\": \"1\",\r\n \"isActive\": true,\r\n \"type\": \"SOAP\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"421eb4bf-b2d0-40a4-900f-ad5fd0a2484e\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n },\r\n {\r\n \"api\": {\r\n \"apiName\": \"EMP_REST_SWAGGER\",\r\n \"apiVersion\": \"1.0.0\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"260c11e1-b3eb-4714-aa73-7cd95fc91abb\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API gateway provider access to get the list of applicable APIs for the specified global policy." + }, + "404" : { + "description" : "This status code indicates that the specified global policy is not available in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "400" : { + "description" : "This status code indicate the specified policy is not a global policy.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"5e04581b-a583-495b-83b3-411f9c067054 is not a global policy.\"\r\n}" + } + }, + "500" : { + "description" : "This is status code indicates that server has encounted an while getting applicable APIs for the specified policy" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/conflicts" : { + "get" : { + "description" : "This REST Request is used to get the conflicts for a global policy. Conflicts between the policies/APIs can arise if the policies contain the conflicting policy actions. For example, a global policy that contains the Identity and Access Policy with \"API Key\" will conflict with another global policy that contains the Identity and Access Policy with \"OAuth2\". If an API satisfy more than one global policy, then all the policy actions of all applicable global policy will be added for effective policy calculation. If any policy validation error occurred it will be reported as conflict.\n\nThis REST request doesn't require request body. By Default it will return the conflicts for all applicable APIs and conflicts between the specified global policy and other active global policies. Additionally, we can use the query parameter to get the conflicts for active or all applicable APIs. \n\nIf there is conflict, status 500 is returned along with the details on conflicting scenarios and if there is no conflict then status 200 is returned", + "operationId" : "checkConflictForGlobalPolicy", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the global policy id to which we need to conflicting case for a global policy", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + }, { + "name" : "active", + "in" : "query", + "description" : "This is a query parameter. It is used to get conflicting case for a global policy. If the value for this parameter is 'false' then it will return conflicting scenario for all the APIs whether it is active or not for the specified global policy. If the value for this flag is 'true' then it will return conflicting case only for the list of applicable active APIs alone", + "required" : false, + "type" : "string", + "x-example" : "active=false" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that there are no conflicting cases for the specified global policy and the response will have the policy details of the global policy", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" + } + }, + "401" : { + "description" : "This status code indicate either user didn't provide any user credential or user doesn't have API Gateway Administrator or API gateway provider access to get conflicting cases for the specified global policy." + }, + "404" : { + "description" : "This status code indicates that the specified global policy is not available in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that there are some conflicting cases for the specified global policy. The sample shows one such conflicting case. The specified global policy and another active global policy have conflicting scenario on a common active API", + "schema" : { + "$ref" : "#/definitions/EnforcementValidationMessage" + }, + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Conflict between global Policy for API - EMP_POJO_WSDL, Operation - updateEmployee - An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"reason\": [\r\n {\r\n \"apiId\": \"421eb4bf-b2d0-40a4-900f-ad5fd0a2484e\",\r\n \"apiName\": \"EMP_POJO_WSDL\",\r\n \"apiType\": \"SOAP\",\r\n \"errorOnResource\": [\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"updateEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"addEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"deleteEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"getEmployee\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "400" : { + "description" : "This status code indicate the specified policy is not a global policy.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"5e04581b-a583-495b-83b3-411f9c067054 is not a global policy.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/aliases" : { + "get" : { + "description" : "This REST request retrieves the list of aliases which are referenced by a given policy. The referenced aliases can also be retrieved for global policies", + "operationId" : "getAliasByPolicyId", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter specifies the policy id for which the list of aliases is requested", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the details of the alias are successfully retrieved.", + "schema" : { + "$ref" : "#/definitions/Alias" + }, + "examples" : { + "application/json" : "{\r\n \"alias}\": [\r\n {\r\n \"type\": \"endpoint\",\r\n \"id\": \"590d543c-761f-11e9-9f05-f83db12a3b48\",\r\n \"name\": \"SampleEndpointAlias\",\r\n \"description\": \"My SampleEndpointAlias\",\r\n \"owner\": \"Administrator\",\r\n \"endPointURI\": \"http://myserver/myendpoint\",\r\n \"connectionTimeout\": 0,\r\n \"readTimeout\": 0,\r\n \"suspendDurationOnFailure\": 0,\r\n \"passSecurityHeaders\": false\r\n }\r\n ]\r\n }" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API gateway provider access to get the list of aliases for the specified policy." + }, + "404" : { + "description" : "This status code indicates that the specified policy is not available in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "500" : { + "description" : "This is status code indicates that server has encountered an error while getting aliases for the specified policy", + "schema" : { + "$ref" : "#/definitions/EnforcementValidationMessage" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/enable" : { + "put" : { + "description" : "This REST request is used to enable the Threat protection rule created in API Gateway. This request does not require any request body. If the threat protection policy is enabled successfully then the policy details of specified policy is sent as response", + "operationId" : "enableThreatProtectionRuleByPolicyID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the policy id of the threat protection policy which needs to be enabled", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the threat protection policy is enabled and the policy details of the Threat protection will be in response with active flag set to true", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7b2cd4a6-49f3-480d-8965-a77971605fb7\",\r\n \"names\": [\r\n {\r\n \"value\": \"Message_size_filter\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"customErrorMessage\",\r\n \"values\": [\r\n \"Message size limit exceeded\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"action\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"enableRule\",\r\n \"values\": [\r\n \"Disable\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"rule\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleDescription\",\r\n \"values\": [\r\n \"This threat protection rule is used to filter request based on size\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleName\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleType\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isEnterpriseGatewayLicensed\",\r\n \"values\": [\r\n \"true\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOption\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"alertInterval\",\r\n \"values\": [\r\n \"60\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOnEvery\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertType\",\r\n \"values\": [\r\n \"None\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"emailTo\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"flowServiceName\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"runAsUser\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isRuleEnabled\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n }\r\n ],\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"b9cfc355-0d11-4ea2-aae9-54df71c80a6d\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"adea4954-158c-40c6-8d11-b5912349a5f2\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"d62d9c00-f1ae-4bf8-979a-326171efb772\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"72a712bb-7134-4328-9701-43fb06fbfeb9\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"bc5e15ef-0a50-4876-ae98-11ce30e7a285\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"895f963f-8297-41b9-a4b4-002b7bb71870\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"96568d84-7f85-4a7d-8c82-c8f90a75a212\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"ecd4669e-ddce-4b23-af6c-79315d4fae95\",\r\n \"order\": \"\"\r\n }\r\n ],\r\n \"stageKey\": \"threatProtection\"\r\n }\r\n ],\r\n \"global\": true,\r\n \"active\": true,\r\n \"systemPolicy\": false,\r\n \"policyActionTemplateKeys\": [\r\n \"MsgSizeLimitFilter\"\r\n ]\r\n }\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error while enabling the threat protection policy" + }, + "404" : { + "description" : "This status code indicates that the threat protection policy id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 7b2cd4a6-49f3-480d-8965-a77971605fb71\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates either user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to enable the threat protection policy." + }, + "400" : { + "description" : "This status code indicates that the policy id specified is not a threat protection policy", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"Enable action supported only for Threat protection policies\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/disable" : { + "put" : { + "description" : "This REST request is used to disable the Threat protection rule created in API Gateway. This request does not require any request body. If the threat protection policy is disabled successfully then the policy details of specified policy will be sent as response.", + "operationId" : "disableThreatProtectionRuleByPolicyID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the policy id of the threat protection policy which needs to be disabled", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the threat protection policy is disabled and the policy details of the Threat protection will be in response with active flag set to false", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7b2cd4a6-49f3-480d-8965-a77971605fb7\",\r\n \"names\": [\r\n {\r\n \"value\": \"Message_size_filter\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"customErrorMessage\",\r\n \"values\": [\r\n \"Message size limit exceeded\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"action\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"enableRule\",\r\n \"values\": [\r\n \"Disable\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"rule\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleDescription\",\r\n \"values\": [\r\n \"This threat protection rule is used to filter request based on size\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleName\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleType\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isEnterpriseGatewayLicensed\",\r\n \"values\": [\r\n \"true\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOption\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"alertInterval\",\r\n \"values\": [\r\n \"60\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOnEvery\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertType\",\r\n \"values\": [\r\n \"None\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"emailTo\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"flowServiceName\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"runAsUser\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isRuleEnabled\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n }\r\n ],\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"b9cfc355-0d11-4ea2-aae9-54df71c80a6d\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"adea4954-158c-40c6-8d11-b5912349a5f2\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"d62d9c00-f1ae-4bf8-979a-326171efb772\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"72a712bb-7134-4328-9701-43fb06fbfeb9\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"bc5e15ef-0a50-4876-ae98-11ce30e7a285\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"895f963f-8297-41b9-a4b4-002b7bb71870\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"96568d84-7f85-4a7d-8c82-c8f90a75a212\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"ecd4669e-ddce-4b23-af6c-79315d4fae95\",\r\n \"order\": \"\"\r\n }\r\n ],\r\n \"stageKey\": \"threatProtection\"\r\n }\r\n ],\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false,\r\n \"policyActionTemplateKeys\": [\r\n \"MsgSizeLimitFilter\"\r\n ]\r\n }\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error while disabling the threat protection policy" + }, + "404" : { + "description" : "This status code indicates that the threat protection policy id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 0dfa92ee-fa5e-4c4e-88b2-653048659e8c1\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to disable the threat protection policy." + }, + "400" : { + "description" : "This status code indicates that the policy id specified is not a threat protection policy", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"Disable action supported only for Threat protection policies\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/movedown" : { + "put" : { + "description" : "This REST request is used to move down the execution order of the Threat protection rule created in API Gateway. This request does not require any request body. If the threat protection policy execution order is changed successfully then the policy details of specified policy will be sent as response.", + "operationId" : "moveDownThreatProtectionRuleByPolicyID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the policy id of the threat protection whose execution order needs to be moved down ", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "This status indicates that the threat protection policy execution order has been changed successfully and policy details of the Threat protection will be in response", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7b2cd4a6-49f3-480d-8965-a77971605fb7\",\r\n \"names\": [\r\n {\r\n \"value\": \"Message_size_filter\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"customErrorMessage\",\r\n \"values\": [\r\n \"Message size limit exceeded\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"action\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"enableRule\",\r\n \"values\": [\r\n \"Disable\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"rule\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleDescription\",\r\n \"values\": [\r\n \"This threat protection rule is used to filter request based on size\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleName\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleType\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isEnterpriseGatewayLicensed\",\r\n \"values\": [\r\n \"true\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOption\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"alertInterval\",\r\n \"values\": [\r\n \"60\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOnEvery\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertType\",\r\n \"values\": [\r\n \"None\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"emailTo\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"flowServiceName\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"runAsUser\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isRuleEnabled\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n }\r\n ],\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"b9cfc355-0d11-4ea2-aae9-54df71c80a6d\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"adea4954-158c-40c6-8d11-b5912349a5f2\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"d62d9c00-f1ae-4bf8-979a-326171efb772\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"72a712bb-7134-4328-9701-43fb06fbfeb9\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"bc5e15ef-0a50-4876-ae98-11ce30e7a285\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"895f963f-8297-41b9-a4b4-002b7bb71870\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"96568d84-7f85-4a7d-8c82-c8f90a75a212\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"ecd4669e-ddce-4b23-af6c-79315d4fae95\",\r\n \"order\": \"\"\r\n }\r\n ],\r\n \"stageKey\": \"threatProtection\"\r\n }\r\n ],\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false,\r\n \"policyActionTemplateKeys\": [\r\n \"MsgSizeLimitFilter\"\r\n ]\r\n }\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error while changing the execution order of the threat protection policy" + }, + "404" : { + "description" : "This status code indicates that the threat protection policy id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 0dfa92ee-fa5e-4c4e-88b2-653048659e8c1\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to change order of the threat protection policy." + }, + "400" : { + "description" : "This status code indicates that the policy id specified is not a threat protection policy", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"Move down action supported only for Threat protection policies\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/moveup" : { + "put" : { + "description" : "This REST request is used to move up the execution order of the Threat protection rule created in API Gateway. This request does not require any request body. This request does not require any request body. If the threat protection policy execution order is changed successfully then the policy details of specified policy will be sent as response.", + "operationId" : "moveUpThreatProtectionRuleByPolicyID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "This path parameter is used to specify the policy id of the threat protection whose execution order needs to be moved up ", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "This status indicates that the threat protection policy execution order has been changed successfully and policy details of the Threat protection will be in response", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"7b2cd4a6-49f3-480d-8965-a77971605fb7\",\r\n \"names\": [\r\n {\r\n \"value\": \"Message_size_filter\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"customErrorMessage\",\r\n \"values\": [\r\n \"Message size limit exceeded\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"action\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"enableRule\",\r\n \"values\": [\r\n \"Disable\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"rule\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleDescription\",\r\n \"values\": [\r\n \"This threat protection rule is used to filter request based on size\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleName\",\r\n \"values\": [\r\n \"Message_size_filter\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"ruleType\",\r\n \"values\": [\r\n \"DENY\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isEnterpriseGatewayLicensed\",\r\n \"values\": [\r\n \"true\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOption\",\r\n \"parameters\": [\r\n {\r\n \"templateKey\": \"alertInterval\",\r\n \"values\": [\r\n \"60\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertOnEvery\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"alertType\",\r\n \"values\": [\r\n \"None\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"emailTo\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"flowServiceName\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"runAsUser\",\r\n \"values\": [\r\n \"\"\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"isRuleEnabled\",\r\n \"values\": [\r\n \"false\"\r\n ]\r\n }\r\n ],\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"b9cfc355-0d11-4ea2-aae9-54df71c80a6d\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"adea4954-158c-40c6-8d11-b5912349a5f2\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"d62d9c00-f1ae-4bf8-979a-326171efb772\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"72a712bb-7134-4328-9701-43fb06fbfeb9\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"bc5e15ef-0a50-4876-ae98-11ce30e7a285\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"895f963f-8297-41b9-a4b4-002b7bb71870\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"96568d84-7f85-4a7d-8c82-c8f90a75a212\",\r\n \"order\": \"\"\r\n },\r\n {\r\n \"enforcementObjectId\": \"ecd4669e-ddce-4b23-af6c-79315d4fae95\",\r\n \"order\": \"\"\r\n }\r\n ],\r\n \"stageKey\": \"threatProtection\"\r\n }\r\n ],\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false,\r\n \"policyActionTemplateKeys\": [\r\n \"MsgSizeLimitFilter\"\r\n ]\r\n }\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error while changing the execution order of the threat protection policy" + }, + "404" : { + "description" : "This status code indicates that the threat protection policy id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 0dfa92ee-fa5e-4c4e-88b2-653048659e8c1\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to change order of the threat protection policy." + }, + "400" : { + "description" : "This status code indicates that policy id specified is not a threat protection policy", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \"Move up action supported only for Threat protection policies\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/activate" : { + "put" : { + "description" : "This REST request is used to activate a global policy and this request doesn't require any request body. This request will try to activate the global policy and if any error occurs during activation it will be reported as response or if the global policy is activated then its policy details active flag set to true will be sent as response. If the global policy have any conflicts then it cannot be activated the conflicts are manually resolved.", + "operationId" : "activateGlobalPolicyByPolicyID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "The path parameter should be the policy id of global policy that needs to be activated. If the policy id is not belongs to a global policy then error will be reported", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the global policy id specified is activated successfully", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": true,\r\n \"systemPolicy\": false\r\n }\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error during the activation of global policy. The sample shows the error is due to a conflict between two global policies on the common applicable APIs. The conflict is between this global policy and other active global policy. This happens when an API satisfies the scope of one or more global policy and during the effective policy calculation you might get policy validation error message. The detailed structure of the error is reported for any conflicts that happen during the process activation ", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Conflict between global Policy for API - EMP_POJO_WSDL, Operation - updateEmployee - An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"reason\": [\r\n {\r\n \"apiId\": \"421eb4bf-b2d0-40a4-900f-ad5fd0a2484e\",\r\n \"apiName\": \"EMP_POJO_WSDL\",\r\n \"apiType\": \"SOAP\",\r\n \"errorOnResource\": [\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"updateEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"addEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"deleteEmployee\"\r\n },\r\n {\r\n \"conflictingPolicies\": {\r\n \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\": {\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\"\r\n ],\r\n \"policyId\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n }\r\n },\r\n \"error\": {\r\n \"allowedOccurence\": \"once\",\r\n \"errorType\": \"occurence\",\r\n \"policyActionName\": \"[Identify & Authorize Application]\",\r\n \"templateId\": \"evaluatePolicy\"\r\n },\r\n \"errorMessage\": \" An API can be associated with only one policy action with template id Identify & Authorize Application\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Employee Global Policy\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"31c729f9-4f1c-4074-acba-6975c0668433\"\r\n ],\r\n \"policyId\": \"7a16baec-7925-4579-966b-bfe58265853d\",\r\n \"policyScope\": \"GLOBAL\",\r\n \"stageKey\": \"IAM\"\r\n },\r\n \"resource\": \"getEmployee\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the policy id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to activate global policy." + }, + "400" : { + "description" : "This status code indicates that the request is not correct. It can be either due to incorrect policy type or trying to activate already active policy. The sample shows that the policy is specified is not a global policy id.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Policy [PT1] is not a global policy. Cannot be activated/deactivated.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policies/{policyId}/deactivate" : { + "put" : { + "description" : "This REST request is used to deactivate a global policy and it doesn't require any request body. This request tries to deactivate the global policy and if any error occurs during deactivation will be reported as response or if the global policy deactivated the policy details of a global policy with active flag set to false is sent as response. An active global policy cannot have conflicts with other active global policy and hence the deactivation fails only when the conflict occurs between active global policy that is specified and one or more applicable active APIs. This can happen when the applicable active API policy action might depend on one or more policy action from the specified global policy. If you deactivate this policy, it would cause the active API to have an unstable state. Hence the deactivation is reported as failed in this case.", + "operationId" : "deactivateGlobalPolicyByPolicyID", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyId", + "in" : "path", + "description" : "The path parameter should be the policy id of global policy that needs to be deactivated. If the policy id is not belongs to a global policy then error will be reported", + "required" : true, + "type" : "string", + "x-example" : "732c4526-db9a-4ef9-9782-edda1a6aa9bc" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the global policy id specified is deactivated successfully", + "schema" : { + "$ref" : "#/definitions/Policy" + }, + "examples" : { + "application/json" : "{\r\n \"policy\": {\r\n \"id\": \"732c4526-db9a-4ef9-9782-edda1a6aa9bc\",\r\n \"names\": [\r\n {\r\n \"value\": \"a\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"scope\": {\r\n \"applicableAPITypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"result\": {},\r\n \"scopeConditions\": [],\r\n \"logicalConnector\": \"AND\"\r\n },\r\n \"policyEnforcements\": [\r\n {\r\n \"enforcements\": [\r\n {\r\n \"enforcementObjectId\": \"2e63b365-5fb8-4c8c-b2b3-404045b583f7\",\r\n \"order\": null\r\n }\r\n ],\r\n \"stageKey\": \"IAM\"\r\n }\r\n ],\r\n \"policyScope\": \"GLOBAL\",\r\n \"global\": true,\r\n \"active\": false,\r\n \"systemPolicy\": false\r\n }\r\n}" + } + }, + "500" : { + "description" : "This status code indicates that the server has encountered an error during the deactivation of global policy. The sample shows the error due to policy dependencies between an active API and the global policy specified", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Conflict between global Policy for API - EMP, Path - /employee/{id}, Method - get - Policy action Throttling Traffic Optimization is dependent to policy action(s) [Identify & Authorize Application]\",\r\n \"reason\": [\r\n {\r\n \"apiId\": \"e60d6fe9-3612-469f-b33a-fb4c97c72b3b\",\r\n \"apiName\": \"EMP\",\r\n \"apiType\": \"REST\",\r\n \"errorOnResource\": [\r\n {\r\n \"error\": {\r\n \"errorType\": \"occurence\",\r\n \"missingDependency\": [\r\n \"evaluatePolicy\"\r\n ],\r\n \"policyActionName\": \"[Throttling Traffic Optimization]\",\r\n \"templateId\": \"throttle\"\r\n },\r\n \"errorMessage\": \" Policy action Throttling Traffic Optimization is dependent to policy action(s) [Identify & Authorize Application]\",\r\n \"method\": \"get\",\r\n \"policyDetails\": {\r\n \"names\": [\r\n {\r\n \"value\": \"Default Policy for API EMP\",\r\n \"locale\": \"English\"\r\n }\r\n ],\r\n \"policyActionsIds\": [\r\n \"9adf1ff1-efdc-4c41-8998-794d316eaced\"\r\n ],\r\n \"policyId\": \"d7672248-7d25-444e-a9b6-853e1d95d1c6\",\r\n \"policyScope\": \"SERVICE\",\r\n \"stageKey\": \"LMT\"\r\n },\r\n \"resource\": \"/employee/{id}\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the policy id specified is not found in API Gateway", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: 732c4526-db9a-4ef9-9782-edda1a6aa9bc1\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to deactivate global policy." + }, + "400" : { + "description" : "This status code indicates that the request is not correct. It can be either due to incorrect policy type or trying to deactivate already inactive policy. The sample shows that the policy is specified is not a global policy id.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Policy [PT1] is not a global policy. Cannot be activated/deactivated.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/denialofservice/deniedIP" : { + "get" : { + "description" : "This GET method is used to retrieve the list of IPs are denied ( IPs that violated the threat protection rules configured).", + "operationId" : "getDeniedIPs", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This status code indicates that the denied IPs successfully returned. The response contains the list of Denied IPs.", + "schema" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "examples" : { + "application/json" : "{\r\n \"deniedIPList\": [\r\n \"10.60.37.99\"\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to get denied IPs list." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "This DELETE method is used to remove the IP from Denied IPs list. Once removed the request from IP will be processed.", + "operationId" : "deleteDeniedIPs", + "parameters" : [ { + "name" : "IP", + "in" : "query", + "required" : true, + "type" : "string", + "x-example" : "IP=127.0.0.1" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the denied IPs successfully removed from the denied IPs list." + }, + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator access to delete IP from denied IPs list." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policyActionTemplates/{policyActionTemplateId}" : { + "get" : { + "description" : "This REST Request is used to get the template details of a policy action.. To retrieve the policy action template for a particular policy action, specify the policy action template name as a path parameter ", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyActionTemplateId", + "in" : "path", + "description" : "This is a path parameter. It will be used to fetch policy action template of a particular template.", + "required" : true, + "type" : "string", + "x-example" : "entryProtocolPolicy" + } ], + "responses" : { + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get the policy action template details." + }, + "404" : { + "description" : "This status code indicates that the policy action template specified is not found", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Unable to find the resource: nonExisitingProtocol\"\r\n}" + } + }, + "200" : { + "description" : "This status code indicates policy action template is available and the response body will contain the policy action template details", + "schema" : { + "$ref" : "#/definitions/PolicyActionTemplate" + }, + "examples" : { + "application/json" : "{\r\n \"policyActionTemplates\": {\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Encapsulates the access protocol (HTTP and/or HTTPS) which will be used by client for communicating to the API-Gateway.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"parameterTemplatesReference\": [],\r\n \"parameterTemplates\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"names\": [\r\n {\r\n \"value\": \"Protocol\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Access protocol for bridging between the client and API-Gateway.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": true,\r\n \"isRequired\": true,\r\n \"canRender\": true,\r\n \"defaultValues\": [\r\n \"http\"\r\n ],\r\n \"possibleValues\": [\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"HTTP\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"http\"\r\n },\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"https\"\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP version\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Supported SOAP Version.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": false,\r\n \"isRequired\": false,\r\n \"canRender\": true,\r\n \"defaultValues\": [\r\n \"soap\"\r\n ],\r\n \"possibleValues\": [\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP 1.1\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"soap\"\r\n },\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP 1.2\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"soap12\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"SOAP\"\r\n ]\r\n }\r\n ],\r\n \"occurence\": \"once\",\r\n \"stageSpecific\": null,\r\n \"dependentActions\": null,\r\n \"dependentActionsConnector\": null,\r\n \"mutuallyExclusiveActions\": null,\r\n \"order\": {\r\n \"sequence\": [\r\n \"insequence\"\r\n ],\r\n \"orderPosition\": \"first\",\r\n \"isCustomOrderSupported\": false,\r\n \"policyTemplateIDs\": null\r\n },\r\n \"requiredParametersKeys\": [\r\n \"protocol\"\r\n ],\r\n \"canAppliedAtResourceMethodLevel\": false\r\n }\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/policyActionTemplates" : { + "get" : { + "description" : "This REST Request is used to get the template detail for list of policy action.", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "policyActionTemplates", + "in" : "query", + "description" : "This is a query parameter. It will be used to fetch policy action templates for list of policy action.", + "required" : false, + "type" : "string", + "x-example" : "policyActionTemplates=setMediaType,entryProtocolPolicy" + } ], + "responses" : { + "401" : { + "description" : "This status code indicates that the user did not provide any user credential or user does not have API Gateway Administrator or API Gateway provider access to get policy action template." + }, + "200" : { + "description" : "This status code indicates the server has processed the request. The response body will contain the policy action templates for valid policy actions. If any of the policy action template specified is invalid, it will ommit that policy action template and return the response with remaining valid policy action template.", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/PolicyActionTemplate" + } + }, + "examples" : { + "application/json" : "{\r\n \"policyActionTemplates\": [\r\n {\r\n \"templateKey\": \"setMediaType\",\r\n \"names\": [\r\n {\r\n \"value\": \"Set Media Type\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"This policy is used to configure the default media type values for Content-Type and Accept headers. These values shall be used as the Content-Type or Accept-Header respectively, if no Content-Type or Accept-Header is specified in the run-time invoke request.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"REST\"\r\n ],\r\n \"parameterTemplatesReference\": [],\r\n \"parameterTemplates\": [\r\n {\r\n \"templateKey\": \"defaultContentType\",\r\n \"names\": [\r\n {\r\n \"value\": \"Default Content-Type\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"The Media Type value configured in this parameter will be sent as the Content-Type if no Content-Type is specified in the run-time invoke request.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": false,\r\n \"isRequired\": false,\r\n \"canRender\": true\r\n },\r\n {\r\n \"templateKey\": \"defaultAccept\",\r\n \"names\": [\r\n {\r\n \"value\": \"Default Accept Header\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"The Media Type value configured in this parameter will be used as the Accept header if no Accept header is specified in the run-time invoke request.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": false,\r\n \"isRequired\": false,\r\n \"canRender\": true\r\n }\r\n ],\r\n \"occurence\": \"once\",\r\n \"stageSpecific\": null,\r\n \"dependentActions\": [],\r\n \"dependentActionsConnector\": null,\r\n \"mutuallyExclusiveActions\": null,\r\n \"order\": {\r\n \"sequence\": [\r\n \"insequence\"\r\n ],\r\n \"orderPosition\": \"last\",\r\n \"isCustomOrderSupported\": false,\r\n \"policyTemplateIDs\": null\r\n },\r\n \"requiredParametersKeys\": [],\r\n \"canAppliedAtResourceMethodLevel\": false\r\n },\r\n {\r\n \"templateKey\": \"entryProtocolPolicy\",\r\n \"names\": [\r\n {\r\n \"value\": \"Require HTTP / HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Encapsulates the access protocol (HTTP and/or HTTPS) which will be used by client for communicating to the API-Gateway.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"REST\",\r\n \"SOAP\"\r\n ],\r\n \"parameterTemplatesReference\": [],\r\n \"parameterTemplates\": [\r\n {\r\n \"templateKey\": \"protocol\",\r\n \"names\": [\r\n {\r\n \"value\": \"Protocol\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Access protocol for bridging between the client and API-Gateway.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": true,\r\n \"isRequired\": true,\r\n \"canRender\": true,\r\n \"defaultValues\": [\r\n \"http\"\r\n ],\r\n \"possibleValues\": [\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"HTTP\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"http\"\r\n },\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"HTTPS\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"https\"\r\n }\r\n ]\r\n },\r\n {\r\n \"templateKey\": \"soapVersion\",\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP version\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"descriptions\": [\r\n {\r\n \"value\": \"Supported SOAP Version.\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"type\": \"STRING\",\r\n \"isArray\": false,\r\n \"isRequired\": false,\r\n \"canRender\": true,\r\n \"defaultValues\": [\r\n \"soap\"\r\n ],\r\n \"possibleValues\": [\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP 1.1\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"soap\"\r\n },\r\n {\r\n \"names\": [\r\n {\r\n \"value\": \"SOAP 1.2\",\r\n \"locale\": \"en\"\r\n }\r\n ],\r\n \"value\": \"soap12\"\r\n }\r\n ],\r\n \"applicableServiceTypes\": [\r\n \"SOAP\"\r\n ]\r\n }\r\n ],\r\n \"occurence\": \"once\",\r\n \"stageSpecific\": null,\r\n \"dependentActions\": null,\r\n \"dependentActionsConnector\": null,\r\n \"mutuallyExclusiveActions\": null,\r\n \"order\": {\r\n \"sequence\": [\r\n \"insequence\"\r\n ],\r\n \"orderPosition\": \"first\",\r\n \"isCustomOrderSupported\": false,\r\n \"policyTemplateIDs\": null\r\n },\r\n \"requiredParametersKeys\": [\r\n \"protocol\"\r\n ],\r\n \"canAppliedAtResourceMethodLevel\": false\r\n }\r\n ]\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + } + }, + "securityDefinitions" : { + "Basic" : { + "description" : "API Gateway Administrator and API Gateway provider", + "type" : "basic" + } + }, + "definitions" : { + "ExtendedProperties" : { + "type" : "object", + "properties" : { + "key" : { + "type" : "string" + }, + "value" : { + "type" : "string" + } + } + }, + "InternationalizedString" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "string", + "description" : "This property will hold the actual string" + }, + "locale" : { + "type" : "string", + "description" : "This property will have the localization information of the property 'value'." + } + }, + "description" : "This model is used to store a string with its corresponding locale" + }, + "PolicyAction" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "Policy Action ID" + }, + "names" : { + "type" : "array", + "description" : "List of policy action names with corresponding locale information", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "descriptions" : { + "type" : "array", + "description" : "List of policy action description with corresponding locale information", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "templateKey" : { + "type" : "string", + "description" : "Template key of the policy actions" + }, + "parameters" : { + "type" : "array", + "description" : "This is the list of values that are configured for this policy actions", + "items" : { + "$ref" : "#/definitions/PolicyActionParameter" + } + }, + "stageKey" : { + "type" : "string" + }, + "active" : { + "type" : "boolean" + } + }, + "description" : "This model contains details about a policy action in API Gateway" + }, + "PolicyActionParameter" : { + "type" : "object", + "required" : [ "templateKey" ], + "properties" : { + "templateKey" : { + "type" : "string", + "description" : "parameter template key." + }, + "values" : { + "type" : "array", + "description" : "array of values for this parameter template key", + "items" : { + "type" : "string" + } + }, + "parameters" : { + "type" : "array", + "description" : "If this policy action parameter is complex type then array of policy action parameter will be the value for this parameter template key", + "items" : { + "$ref" : "#/definitions/PolicyActionParameter" + } + }, + "extendedProperties" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ExtendedProperties" + } + }, + "type" : { + "type" : "string" + } + }, + "description" : "This model represent the values needed for a policy action to execute. This can be either primitive type or complex structure that in turn refer to another PolicyActionParameter" + }, + "MobileApplicationConfiguration" : { + "type" : "object", + "properties" : { + "mobileApplications" : { + "type" : "array", + "description" : "Configure Mobile Application names to be filtered when Threat protection 'Mobile App Filter' Rule enforced", + "items" : { + "type" : "string" + } + }, + "mobileAppDeviceTypes" : { + "type" : "array", + "description" : "Configure Device Types to be filtered when Threat protection 'Mobile App Filter' Rule enforced", + "items" : { + "type" : "string" + } + } + }, + "description" : "Configured values are used in Threat protection Rules 'Mobile App filter'" + }, + "AssertionConfiguration" : { + "type" : "object", + "properties" : { + "assertionId" : { + "type" : "string", + "description" : "A unique ID for the assertion", + "readOnly" : true + }, + "Assertion name" : { + "type" : "string", + "description" : "Name of the assertion" + }, + "Assertion element" : { + "type" : "string", + "description" : "XML element which represents the assertion" + }, + "Assertion type" : { + "type" : "string", + "description" : "Type of assertion(tokenAssertion/bindingAssertion)", + "enum" : [ "tokenAssertion", "bindingAssertion", "policyAssertion" ] + } + } + }, + "PolicyEnforcementStage" : { + "type" : "object", + "properties" : { + "stageKey" : { + "type" : "string", + "description" : "The unique key for the stage." + }, + "names" : { + "type" : "array", + "description" : "Stage name with corresponding locale", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "descriptions" : { + "type" : "array", + "description" : "Stage description with corresponding locale", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "policyActionTempaltes" : { + "type" : "array", + "description" : "The list of policy enforcements can be applied on the respective stage.", + "items" : { + "type" : "string" + } + }, + "sequence" : { + "type" : "string", + "description" : "Sequence of the stage.\n 1. insequence - Stages or policies marked with this sequence will be executed when the request comes to API Gateway and before the request dispatched to native service. \n 2. outsequence - Stages or policies marked with this sequence will be executed when the request goes out of API Gateway to the invoker. \n 3. faultsequence - Stages or policies marked with this sequence will be executed when native service return any error.", + "enum" : [ "insequence", "outsequence", "faultsequence" ] + } + }, + "description" : "Each Policy Stage contains one or more policies. It provide you a the list of policy enforcement associated with each stage and its sequence either in, out or fault." + }, + "Attribute" : { + "type" : "object", + "required" : [ "attributeName", "operation", "value" ], + "properties" : { + "attributeName" : { + "type" : "string", + "description" : "The field name on which needs to be satisfied by the APIs.", + "enum" : [ "API_NAME", "API_DESCRIPTION", "API_VERSION", "TAGS", "GET", "PUT", "POST", "DELETE", "PATCH" ] + }, + "operation" : { + "type" : "string", + "description" : "Operation that needs to performed on the field specified.", + "enum" : [ "EQUALS", "CONTAINS", "NOT_CONTAINS", "STARTS_WITH", "NOT_STARTS_WITH", "LESS_THAN", "GREATER_THAN", "ENDS_WITH", "NOT_EQUALS" ] + }, + "value" : { + "type" : "string", + "description" : "Value the needs to processed on the field and operation specified." + } + }, + "description" : "An Attribute contains the field of the an API or resource or operation and the value to be processed on the fields based on the operation specified. If attribute specifies any Http Method then operation wont have any significance." + }, + "Enforcement" : { + "type" : "object", + "properties" : { + "enforcementObjectId" : { + "type" : "string", + "description" : "Policy enforcement id" + }, + "order" : { + "type" : "string", + "description" : "enforcement order" + }, + "parentPolicyId" : { + "type" : "string" + } + }, + "description" : "Model contains a policy enforcement id and its order" + }, + "Policy" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "Policy ID", + "readOnly" : true + }, + "names" : { + "type" : "array", + "description" : "This contains list of names for the policy with corresponding locale information.", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "descriptions" : { + "type" : "array", + "description" : "This contains list of description for the policy with corresponding locale information.", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "parameters" : { + "type" : "array", + "description" : "This basic details of a threat protection rule such as rule name, description, rule action, custom error message etc.will be stored in this property.", + "items" : { + "$ref" : "#/definitions/PolicyActionParameter" + } + }, + "scope" : { + "description" : "This property is used to specify the scope for a GLOBAL policy.This is applicable only for GLOBAL Policy. If it is specified for any other policy it wont be processed.", + "$ref" : "#/definitions/Scope" + }, + "policyEnforcements" : { + "type" : "array", + "description" : "This property contains list of policy (runtime) enforcement id grouped based on the stages.", + "items" : { + "$ref" : "#/definitions/PolicyEnforcements" + } + }, + "policyScope" : { + "type" : "string", + "description" : "This property is used to refer the scope of the policy.", + "enum" : [ "GLOBAL", "METHOD", "OPERATION", "RESOURCE", "SERVICE", "PACKAGE", "TEMPLATE", "SCOPE" ] + }, + "active" : { + "type" : "boolean" + }, + "global" : { + "type" : "boolean" + }, + "systemPolicy" : { + "type" : "boolean" + } + }, + "description" : "A policy is nothing but a group of policy (runtime) enforcements. It contains the list of policy enforcement ids by stage wise. A stage in a policy belongs execution order of a policy enforcement. Each policy enforcement belong to only one of the stage. For more details about policy stage please refer policyStages resource in API Gateway Policy Management service. The policy can be Service/scope/package/global/template." + }, + "PolicyEnforcements" : { + "type" : "object", + "properties" : { + "enforcements" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Enforcement" + } + }, + "stageKey" : { + "type" : "string", + "description" : "Policy stage. User can refer resource /policyStages to get the list stages can be added here" + } + }, + "description" : "This model contains the list of policy action id specific to a stage." + }, + "Scope" : { + "type" : "object", + "required" : [ "applicableAPITypes", "logicalConnector" ], + "properties" : { + "applicableAPITypes" : { + "type" : "array", + "description" : "This contains the list of API types on which the global policy can be applied. For now only REST and SOAP API types are allowed.", + "items" : { + "type" : "string", + "enum" : [ "SOAP", "REST", "ODATA", "WEBSOCKET" ] + } + }, + "scopeConditions" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ScopeCondition" + } + }, + "logicalConnector" : { + "type" : "string", + "description" : "The field is used to perform the logical operation between the scope condition. It will be valid only if we specify scope condition. The default value for this field is AND", + "enum" : [ "AND", "OR" ] + } + }, + "description" : "A scope is used to define the filtering criteria for Global policy. Using scope we can specify the APIs or Resources or opertaion on which the policy enforcements needs to be applied." + }, + "ScopeCondition" : { + "type" : "object", + "required" : [ "attributes", "filterType" ], + "properties" : { + "filterType" : { + "type" : "string", + "description" : "This property is used to define the type of filter we will be using to define attributes. The allowed values are apis, httpMethod, tags. If API type is specified we can specify the fields of API such as apiName, apiDescription, apiVersion. If httpMethod specified we can specify the httpMethods(GET/POST/PUT/DELETE/POST) of the resource to filter the resource. This filter type is used for REST APIs only. If tag type is specified we can specify the field tags in API to filter api using tags. This is also only applicable for REST APIs.", + "enum" : [ "API", "HTTP_METHOD", "TAGS" ] + }, + "attributes" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Attribute" + } + } + }, + "description" : "For each scope we can define set of scope condition. A scope condition will have set of attributes that needs to be satisfied by the APIs or Resource or Operation for applying the policy on that API or Resource or Operation. The logical operator between the attributes is always AND." + }, + "APIResponseDelete" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "API Id" + }, + "apiName" : { + "type" : "string", + "description" : "API Name" + }, + "apiVersion" : { + "type" : "string", + "description" : "API Version" + }, + "type" : { + "type" : "string", + "description" : "API Type" + }, + "publishedPortals" : { + "type" : "array", + "description" : "Published portals of an API", + "items" : { + "type" : "string" + } + }, + "systemVersion" : { + "type" : "integer", + "format" : "int32", + "description" : "System version of an API" + }, + "active" : { + "type" : "boolean" + }, + "apiId" : { + "type" : "string" + }, + "responseStatus" : { + "type" : "string", + "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] + }, + "errorReason" : { + "type" : "string" + } + }, + "description" : "This model contains the basics details of an API." + }, + "EnforcementValidationError" : { + "type" : "object", + "properties" : { + "allowedOccurrence" : { + "type" : "string", + "description" : "This value will be populated when the error occurred due to occurrence of policy enforcement", + "enum" : [ "once", "multiple" ] + }, + "conflictingTemplateId" : { + "type" : "string", + "description" : "This value will be populated when the error occurred due to mutually exclusive policy enforcement are available at the runtime enforcement of an API" + }, + "errorType" : { + "type" : "string", + "description" : "The type of the policy enforcement validation error", + "enum" : [ "dependencyMissing", "mutuallyExclusive", "occurrence" ] + }, + "missingDependency" : { + "type" : "array", + "description" : "The value of the list of missed policy enforcement which are dependent for this policy enforcement. This will be populated when the policy enforcement validation error occurred due to dependency missing", + "items" : { + "type" : "string" + } + }, + "policyActionName" : { + "type" : "string", + "description" : "The name of the policy enforcement which is having the validation error" + }, + "templateId" : { + "type" : "string", + "description" : "The template Id of the policy enforcement which is having the validation error" + } + }, + "description" : "This model is used to represent the type of policy enforcement validation error" + }, + "EnforcementValidationMessage" : { + "type" : "object", + "properties" : { + "apiId" : { + "type" : "string", + "description" : "ID of the API which is having the policy enforcement violation" + }, + "apiName" : { + "type" : "string", + "description" : "Name of the API which is having the policy enforcement violation" + }, + "apiType" : { + "type" : "string", + "description" : "Type of the API which is having the policy enforcement violation" + }, + "apiVersion" : { + "type" : "string", + "description" : "Version of the API which is having the policy enforcement violation" + }, + "errorOnResource" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ResourcePolicyValidationError" + } + } + }, + "description" : "This model is used to give the details about conflicts between the policy enforcements. The conflicts may arise due to dependent policy action enforcement missing or due to occurrence or due to mutually exclusive policy enforcements. These happen during the below scenarios \n1. When a policy is attached to an API, the enforcement validation will happen on policy.\n2. When a global policy is getting activated, it will validate the policy enforcement of the corresponding global policy and the runtime policy enforcements on the applicable APIs for any violation." + }, + "PolicyDetails" : { + "type" : "object", + "properties" : { + "names" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "policyActionsIds" : { + "type" : "array", + "description" : "List of IDs of conflicting policy enforcement of this policy", + "items" : { + "type" : "string" + } + }, + "policyId" : { + "type" : "string", + "description" : "Id of the conflicting policy." + }, + "PolicyScope" : { + "type" : "string", + "description" : "Policy Scope of the conflicting policy.", + "enum" : [ "GLOBAL", "METHOD", "OPERATION", "RESOURCE", "SERVICE", "PACKAGE", "TEMPLATE", "SCOPE" ] + }, + "stageKey" : { + "type" : "string", + "description" : "Stage key of the conflicting policy enforcement of this policy" + } + }, + "description" : "Details of the conflicting policies and policy enforcement of the respective policy" + }, + "ResourcePolicyValidationError" : { + "type" : "object", + "properties" : { + "conflictingPolicies" : { + "type" : "object", + "description" : "Map of conflicting policy ids and its respective details", + "additionalProperties" : { + "$ref" : "#/definitions/PolicyDetails" + } + }, + "error" : { + "$ref" : "#/definitions/EnforcementValidationError" + }, + "errorMessage" : { + "type" : "string", + "description" : "Policy enforcement validation error message" + }, + "method" : { + "type" : "string", + "description" : "Applicable for REST Services only. This will contain the HTTP method of the resource which is having policy enforcement validation error" + }, + "policyDetails" : { + "description" : "This property contains the property details of the policy, which is having the conflicts against property conflictingPolicies", + "$ref" : "#/definitions/PolicyDetails" + }, + "resource" : { + "type" : "string", + "description" : "Resource/Operation name which is having the policy enforcement validation error" + } + }, + "description" : "This model contains the resource level details for policy enforcement validation errors. For each resource or operation it will have the details of the list of conflicting policies and the policy enforcements" + }, + "PolicyActionOrder" : { + "type" : "object", + "properties" : { + "sequence" : { + "type" : "array", + "description" : "Sequence of the policy enforcement.\n 1. insequence - Stages or policies marked with this sequence will be executed when the request comes to API Gateway and before the request dispatched to native service. \n 2. outsequence - Stages or policies marked with this sequence will be executed when the request goes out of API Gateway to the invoker. \n 3. faultsequence - Stages or policies marked with this sequence will be executed when native service return any error", + "items" : { + "type" : "string", + "enum" : [ "insequence", "outsequence", "faultsequence" ] + } + }, + "orderPosition" : { + "type" : "string", + "description" : "Order of the policy enforcement. \n 1. First - policy enforcement needs to be added in its respective stage. \n 2. Last - policy enforcement needs to be added as last in its respective stage. \n 3. Before First occurrence - Policy needs to be added before the first occurrence of policyTemplateIds specified. \n 4. After last occurrence - Policy needs to be added after last occurrence of policyTemplateIds specified", + "enum" : [ "first", "last", "beforeFirstOccurence", "afterLastOccurence" ] + }, + "isCustomOrderSupported" : { + "type" : "boolean" + }, + "policyTemplateIDs" : { + "type" : "array", + "description" : "List of policy template ids needed to process the order before first occurrence and after last occurrence", + "items" : { + "type" : "string" + } + } + }, + "description" : "PolicyActionOrder is used to specify the policy enforcement order in its respective stage" + }, + "PolicyActionParameterTemplate" : { + "type" : "object", + "properties" : { + "templateKey" : { + "type" : "string", + "description" : "Unique id for policy action parameter" + }, + "names" : { + "type" : "array", + "description" : "Policy action parameter template name", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "descriptions" : { + "type" : "array", + "description" : "Policy action parameter template description", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "type" : { + "type" : "string", + "description" : "Policy Action parameter data type.", + "enum" : [ "STRING", "TEXT", "INT", "LONG", "DOUBLE", "BOOLEAN", "XPATH", "FILE", "ESB", "OBJECT", "SECURESTRING" ] + }, + "isArray" : { + "type" : "boolean", + "description" : "This property infers whether this policy action parameter can be an array" + }, + "isRequired" : { + "type" : "boolean", + "description" : "This property infers if it is added to a policy enforcement then it is mandate to provide value for this policy action parameter" + }, + "canRender" : { + "type" : "boolean", + "description" : "UI specific property. This property infer it can be rendered on UI" + }, + "defaultValues" : { + "type" : "array", + "description" : "This contains the list of default values for this policy action parameter", + "items" : { + "type" : "object" + } + }, + "possibleValues" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/PossibleValue" + } + }, + "policyParaeterTemplates" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/PolicyActionParameterTemplate" + } + }, + "parameterTemplatesReference" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "requiredChildParameterKeys" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "applicableServiceTypes" : { + "type" : "array", + "description" : "List of Service type applicable for this policy action parameter", + "items" : { + "type" : "string" + } + } + }, + "description" : "A policy action parameter template defines the schema for a policy enforcement parameter. A policy enforcement can have one or more policy action parameters." + }, + "PolicyActionTemplate" : { + "type" : "object", + "properties" : { + "templateKey" : { + "type" : "string", + "description" : "A unique id for this policy enforcement", + "readOnly" : true + }, + "names" : { + "type" : "array", + "description" : "Name of the policy enforcement along with the corresponding locale information", + "readOnly" : true, + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "descriptions" : { + "type" : "array", + "description" : "Description for the policy enforcement", + "readOnly" : true, + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "applicableServiceTypes" : { + "type" : "array", + "description" : "Policy enforcement only applicable for the list of service type specified here", + "items" : { + "type" : "string" + } + }, + "parameterTemplates" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/PolicyActionParameterTemplate" + } + }, + "occurrence" : { + "type" : "string", + "description" : "Allowed occurrence for the respective policy enforcement. \n 1. Once - Policy enforcement can be added only once on the respective stage. \n 2. Multiple - Policy enforcement can be added multiple times on the respective stage.", + "enum" : [ "once", "multiple" ] + }, + "stageSpecific" : { + "type" : "string", + "description" : "Some policy enforcement can be added in multiple stages. This property specify it needs to be processed based on the stage it added." + }, + "dependentActions" : { + "type" : "array", + "description" : "Dependent list of policy enforcements. This policy enforcement can't be added with out the specified list of policy enforcement templates", + "items" : { + "type" : "string" + } + }, + "dependentActionsConnector" : { + "type" : "string" + }, + "mutuallyExclusiveActions" : { + "type" : "array", + "description" : "The list contains the mutually exclusive policy enforcements with this policy enforcement", + "items" : { + "type" : "string" + } + }, + "order" : { + "$ref" : "#/definitions/PolicyActionOrder" + }, + "requiredParametersKeys" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "canAppliedAtResourceMethodLevel" : { + "type" : "boolean", + "description" : "This property infers that the policy action can be applied at resource/operation or method level." + } + }, + "description" : "A policy action template represents the schema for a policy enforcement. " + }, + "PossibleValue" : { + "type" : "object", + "properties" : { + "names" : { + "type" : "array", + "description" : "Descriptive name for the value", + "items" : { + "$ref" : "#/definitions/InternationalizedString" + } + }, + "value" : { + "type" : "string", + "description" : "value that need to be used when providing value for the respective policy action parameter" + } + }, + "description" : "For policy action parameter we can define the list of possible values." + }, + "Alias" : { + "type" : "object", + "discriminator" : "type", + "properties" : { + "id" : { + "type" : "string", + "description" : "A unique ID for the alias", + "readOnly" : true + }, + "name" : { + "type" : "string", + "description" : "A unique name for the assertion" + }, + "description" : { + "type" : "string", + "description" : "A description about the alias" + }, + "type" : { + "type" : "string", + "description" : "Type of the alias", + "enum" : [ "simple", "endpoint", "httpTransportSecurityAlias", "soapMessageSecurityAlias", "samlIssuerAlias", "authServerAlias", "webmethodsAlias", "transformationAlias", "serviceRegistryAlias", "clientMetadataMapping" ] + }, + "stage" : { + "type" : "string", + "description" : "Stage for which this alias needs to be used" + }, + "owner" : { + "type" : "string", + "description" : "Owner of the alias" + } + } + }, + "AuthInfo" : { + "type" : "object", + "discriminator" : "type" + }, + "AuthServerAlias" : { + "allOf" : [ { + "$ref" : "#/definitions/Alias" + }, { + "type" : "object", + "properties" : { + "localIntrospectionConfig" : { + "description" : "Configuration to do the local introspection", + "$ref" : "#/definitions/LocalIntrospectionConfig" + }, + "remoteIntrospectionConfig" : { + "description" : "Configuration to do the remote introspection.", + "$ref" : "#/definitions/RemoteIntrospectionConfig" + }, + "dcrEndpoint" : { + "description" : "configuration for the dynamic client registration", + "$ref" : "#/definitions/DynamicClientRegistrationEndpoint" + }, + "tokenGeneratorConfig" : { + "description" : "Configuration that is required to generate the token by the API Gateway", + "$ref" : "#/definitions/TokenGeneratorConfig" + }, + "sslConfig" : { + "description" : "SSL Configuration used for two ssl for the authorization server communications", + "$ref" : "#/definitions/SSLConfig" + }, + "metadata" : { + "description" : "Metadata information used by the API Portal", + "$ref" : "#/definitions/Metadata" + }, + "authServerScopes" : { + "type" : "array", + "description" : "List of scopes available in the authorization server", + "items" : { + "type" : "string" + } + }, + "supportedGrantTypes" : { + "type" : "array", + "description" : "List of grant types supported by the authorization server", + "items" : { + "type" : "string" + } + }, + "providerName" : { + "type" : "string", + "description" : "Name of the provider which was created using ClientMetadataMapping alias, used in the Dynamic client registration" + }, + "authServerType" : { + "type" : "string", + "description" : "Type of the authorization server", + "enum" : [ "LOCAL_IS", "REMOTE_IS", "EXTERNAL" ] + } + } + } ] + }, + "BasicAuth" : { + "allOf" : [ { + "$ref" : "#/definitions/AuthInfo" + }, { + "type" : "object", + "properties" : { + "username" : { + "type" : "string", + "description" : "Username for the basic authentication" + }, + "password" : { + "type" : "string", + "description" : "password of the corresponding username" + } + } + } ] + }, + "ClientMetadataMapping" : { + "allOf" : [ { + "$ref" : "#/definitions/Alias" + }, { + "type" : "object", + "properties" : { + "providerName" : { + "type" : "string", + "description" : "Name of the provider" + }, + "implNames" : { + "type" : "object", + "description" : "Map of specification names to the implementation names of the service provider", + "additionalProperties" : { + "type" : "string" + } + }, + "extendedValuesV2" : { + "type" : "array", + "description" : "List of headers that needs to be sent along with the client management request", + "items" : { + "$ref" : "#/definitions/ExtendedValue" + } + } + } + } ] + }, + "Credentials" : { + "type" : "object", + "properties" : { + "userName" : { + "type" : "string", + "description" : "Specify a username to access the native API" + }, + "password" : { + "type" : "string", + "description" : "Specify a password to access the native API" + }, + "domain" : { + "type" : "string", + "description" : "Specify a domain to access the native API" + } + } + }, + "DynamicClientRegistrationEndpoint" : { + "type" : "object", + "properties" : { + "authInfo" : { + "description" : "Authorization configuration to manage the clients in the authorization server", + "$ref" : "#/definitions/AuthInfo" + }, + "clientRegistrationEndpoint" : { + "description" : "Client registration endpoint configuration", + "$ref" : "#/definitions/OAuth2Endpoint" + } + } + }, + "EndpointAlias" : { + "allOf" : [ { + "$ref" : "#/definitions/Alias" + }, { + "type" : "object", + "properties" : { + "endPointURI" : { + "type" : "string", + "description" : "the default URI or components of the URI such as service name" + }, + "connectionTimeout" : { + "type" : "integer", + "format" : "int32", + "description" : "time interval (in seconds) after which a connection attempt times out" + }, + "readTimeout" : { + "type" : "integer", + "format" : "int32", + "description" : "time interval (in seconds) after which a socket read attempt times out" + }, + "optimizationTechnique" : { + "type" : "string", + "description" : "Type of optimization technique used for SOAP messages", + "enum" : [ "NONE", "MTOM", "SWA" ] + }, + "passSecurityHeaders" : { + "type" : "boolean", + "description" : "Boolean value whether to pass security headers or not" + }, + "keystoreAlias" : { + "type" : "string", + "description" : "Keystore alias name that is used for the signing/encryption" + }, + "keyAlias" : { + "type" : "string", + "description" : "Key alias in the particular keyStore" + } + } + } ] + }, + "ExtendedValue" : { + "type" : "object", + "properties" : { + "endpointType" : { + "type" : "string", + "description" : "Type of endpoint for which the additional header needs to sent", + "enum" : [ "CLIENT_REGISTRATION", "CLIENT_UPDATE", "CLIENT_DELETE", "CLIENT_READ", "SCOPE_CREATE", "SCOPE_READ", "SCOPE_DELETE", "SCOPE_UPDATE" ] + }, + "key" : { + "type" : "string", + "description" : "Header name" + }, + "value" : { + "type" : "string", + "description" : "Header value" + } + } + }, + "HTTPTransportSecurityAlias" : { + "allOf" : [ { + "$ref" : "#/definitions/Alias" + }, { + "type" : "object", + "properties" : { + "authType" : { + "type" : "string", + "description" : "type of authentication you want to use while communicating with the native API", + "enum" : [ "HTTP_BASIC", "NTLM", "OAUTH2", "KERBEROS", "JWT", "ALIAS", "REMOVE_INCOMING_HTTP_HEADERS" ] + }, + "authMode" : { + "type" : "string", + "description" : "Mode of authentication that needs to be used", + "enum" : [ "NEW", "INCOMING_HTTP_BASIC_AUTH", "INCOMING_WSS_USER", "INCOMING_X509", "DELEGATE_INCOMING", "INCOMING_OAUTH_TOKEN", "INCOMING_JWT", "TRANSPARENT", "INCOMING_KERBEROS" ] + }, + "httpAuthCredentials" : { + "description" : "Credentials that are used for HTTP authentication", + "$ref" : "#/definitions/Credentials" + }, + "kerberosCredentials" : { + "description" : "Credentials that are used for Kerberos authentication", + "$ref" : "#/definitions/KerberosCredentials" + }, + "oauth2Token" : { + "type" : "string", + "description" : "OAuth2 token that is used for authentication" + } + } + } ] + }, + "KerberosCredentials" : { + "type" : "object", + "properties" : { + "clientPrincipal" : { + "type" : "string", + "description" : "a unique identity to which Kerberos can assign tickets" + }, + "clientPassword" : { + "type" : "string", + "description" : "password for the client principal" + }, + "servicePrincipal" : { + "type" : "string", + "description" : "a unique identifier of a service instance" + }, + "servicePrincipalNameForm" : { + "type" : "string", + "description" : "the format in which you want to specify the principal name of the service that is registered with the principal database", + "enum" : [ "HOST_BASED", "USERNAME_BASED" ] + }, + "requestDelegateToken" : { + "type" : "boolean", + "description" : "Boolean value whether the token needs to be delegated or not" + } + } + }, + "LocalIntrospectionConfig" : { + "type" : "object", + "properties" : { + "issuer" : { + "type" : "string", + "description" : "Third party issuer name" + }, + "trustStoreAlias" : { + "type" : "string", + "description" : "The truststore to be used by API Gateway when validating the token issued by the authorization server. Truststore is a repository that holds all the trusted public certificates" + }, + "certificateAlias" : { + "type" : "string", + "description" : "Select the certificate from the truststore that is used to validate the token." + }, + "jwksuri" : { + "type" : "string", + "description" : "JSON Web Key URI" + }, + "description" : { + "type" : "string", + "description" : "Third party issuer description" + } + } + }, + "Metadata" : { + "type" : "object", + "properties" : { + "authorizeURL" : { + "type" : "string", + "description" : "URL to get the approval from the resource owner" + }, + "accessTokenURL" : { + "type" : "string", + "description" : "URL to get the access token from the authorization server" + }, + "refreshTokenURL" : { + "type" : "string", + "description" : "URL to get the new access token from the refresh token" + } + } + }, + "OAuth2Endpoint" : { + "type" : "object", + "properties" : { + "endpoint" : { + "type" : "string", + "description" : "Client registration endpoint in the authorization server" + }, + "keyStoreAlias" : { + "type" : "string", + "description" : "Specify the keystore that needs to be used by API Gateway while sending the request to the authorization server. A keystore is a repository of private key and its corresponding public certificate" + }, + "keyAlias" : { + "type" : "string", + "description" : "The key alias is the private key that is used sign the request sent to the authorization server" + }, + "headers" : { + "type" : "object", + "additionalProperties" : { + "type" : "string" + } + }, + "https" : { + "type" : "boolean" + } + } + }, + "OAuth2Endpoints" : { + "type" : "object", + "properties" : { + "endpoints" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/OAuth2Endpoint" + } + }, + "keyStoreAlias" : { + "type" : "string" + }, + "keyAlias" : { + "type" : "string" + } + } + }, + "OpenIDProviderAlias" : { + "allOf" : [ { + "$ref" : "#/definitions/Alias" + }, { + "type" : "object", + "properties" : { + "issuer" : { + "type" : "string" + }, + "authorizationEndpoint" : { + "type" : "string" + }, + "tokenEndpoint" : { + "type" : "string" + }, + "userinfoEndpoint" : { + "type" : "string" + }, + "jwksUri" : { + "type" : "string" + }, + "openIDScopes" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "openIDResponseType" : { + "type" : "string", + "enum" : [ "code", "id_token", "token_id_token", "id_token_token" ] + }, + "clientId" : { + "type" : "string" + }, + "clientSecret" : { + "type" : "string" + }, + "prompt" : { + "type" : "string", + "enum" : [ "none", "login", "consent", "select_account" ] + }, + "openIDGrantType" : { + "type" : "string", + "enum" : [ "authorization_code" ] + }, + "openIDDisplayValue" : { + "type" : "string", + "enum" : [ "none", "page", "popup", "touch", "wap" ] + }, + "openIDTokenEndpointAuthMode" : { + "type" : "string", + "enum" : [ "client_secret_basic", "client_secret_post", "none" ] + }, + "maxAge" : { + "type" : "string" + }, + "redirectionEndpointHost" : { + "type" : "string" + }, + "redirectionEndpointPort" : { + "type" : "string" + }, + "uiLocales" : { + "type" : "string" + }, + "includeUserinfoClaims" : { + "type" : "boolean" + }, + "trustStoreAlias" : { + "type" : "string" + } + } + } ] + }, + "RemoteIntrospectionConfig" : { + "type" : "object", + "properties" : { + "introspectionEndpoint" : { + "type" : "string", + "description" : "Endpoint of the authorization server to do the introspection" + }, + "clientId" : { + "type" : "string", + "description" : "ClientId of a client in the authorization server" + }, + "clientSecret" : { + "type" : "string", + "description" : "Client Secret of the corresponding clientId in the authorization server" + }, + "user" : { + "type" : "string", + "description" : "A user in the API Gateway under whom the introspection endpoint is invoked" + } + } + }, + "SAMLIssuerAlias" : { + "allOf" : [ { + "$ref" : "#/definitions/Alias" + }, { + "type" : "object", + "properties" : { + "issuerCommunicationMode" : { + "type" : "string", + "description" : "Mode of communication to the STS", + "enum" : [ "NORMAL_CLIENT", "ACT_AS_DELEGATION" ] + }, + "issuerPolicy" : { + "type" : "string", + "description" : "The webMethods Integration Server service name" + }, + "issuerAuthScheme" : { + "type" : "string", + "description" : "The authentication type used for communicating to STS", + "enum" : [ "BASIC_AUTH", "WSS_USERNAME", "KERBEROS", "X509" ] + }, + "issuerAuthMode" : { + "type" : "string", + "description" : "Mode of communication", + "enum" : [ "NEW", "INCOMING_HTTP_BASIC_AUTH", "INCOMING_WSS_USER", "INCOMING_X509", "DELEGATE_INCOMING", "INCOMING_OAUTH_TOKEN", "INCOMING_JWT", "TRANSPARENT", "INCOMING_KERBEROS" ] + }, + "wssCredentials" : { + "description" : "Credentials required for the WSS Username token", + "$ref" : "#/definitions/WssCredentials" + }, + "kerberosCredentials" : { + "description" : "Credentials for the kerberos token", + "$ref" : "#/definitions/KerberosCredentials" + }, + "endpoint" : { + "type" : "string", + "description" : "The endpoint URI of the STS" + }, + "samlVersion" : { + "type" : "string", + "description" : "SAML version to be used for authentication", + "enum" : [ "SAML1_1", "SAML_2_0" ] + }, + "wsTrustVersion" : { + "type" : "string", + "description" : "WS-Trust version that API Gateway must use to send the RST to the SAML issuer", + "enum" : [ "WS_TRUST_1_0", "WS_TRUST_1_3" ] + }, + "appliesTo" : { + "type" : "string", + "description" : "Specify the scope for which this security token is required" + }, + "extendedParameters" : { + "type" : "object", + "description" : "Extensions to the element for requesting specific types of keys, algorithms, or key and algorithms, as specified by a given policy in the return token(s)", + "additionalProperties" : { + "type" : "string" + } + }, + "signAndEncryptConfig" : { + "description" : "Private and public keys used for signature and encryption", + "$ref" : "#/definitions/SignAndEncryptConfig" + }, + "assertionId" : { + "type" : "string" + } + } + } ] + }, + "SOAPMessageSecurityAlias" : { + "allOf" : [ { + "$ref" : "#/definitions/Alias" + }, { + "type" : "object", + "properties" : { + "authType" : { + "type" : "string", + "description" : "Type of authentication that needs to be used", + "enum" : [ "WSS_USERNAME", "SAML", "KERBEROS", "ALIAS", "REMOVE_WSS_HEADERS", "NONE" ] + }, + "authMode" : { + "type" : "string", + "description" : "Mode of authentication", + "enum" : [ "NEW", "INCOMING_HTTP_BASIC_AUTH", "INCOMING_WSS_USER", "INCOMING_X509", "DELEGATE_INCOMING", "INCOMING_OAUTH_TOKEN", "INCOMING_JWT", "TRANSPARENT", "INCOMING_KERBEROS" ] + }, + "wssCredentials" : { + "description" : "Credentials required for the WSS Username token", + "$ref" : "#/definitions/WssCredentials" + }, + "kerberosCredentials" : { + "description" : "Credentials for the kerberos token", + "$ref" : "#/definitions/KerberosCredentials" + }, + "samlIssuerConfig" : { + "type" : "string", + "description" : "Saml issuer configuration name" + }, + "signAndEncryptConfig" : { + "description" : "private and public keys used for signature and encryption", + "$ref" : "#/definitions/SignAndEncryptConfig" + } + } + } ] + }, + "TokenGeneratorConfig" : { + "type" : "object", + "properties" : { + "audience" : { + "type" : "string", + "description" : "Default audience value that needs to be added in the generated JWT" + }, + "expiry" : { + "type" : "integer", + "format" : "int64", + "description" : "Expiry interval of the JWT in minutes" + }, + "algorithm" : { + "type" : "string", + "description" : "Type of algorithm that needs to be used for signing the JWT", + "enum" : [ "RS256", "RS384", "RS512" ] + }, + "accessTokenExpInterval" : { + "type" : "integer", + "format" : "int32", + "description" : "Expiry interval in seconds for the generated access token " + }, + "authCodeExpInterval" : { + "type" : "integer", + "format" : "int32", + "description" : "Expiry interval in seconds for the generated authorization code in Authorization code grant type" + } + } + }, + "SSLConfig" : { + "type" : "object", + "properties" : { + "keyStoreAlias" : { + "type" : "string", + "description" : "Specify the keystore that needs to be used by API Gateway while sending the request to the authorization server. A keystore is a repository of private key and its corresponding public certificate" + }, + "keyAlias" : { + "type" : "string", + "description" : "The key alias is the private key that is used sign the request sent to the authorization server" + }, + "trustStoreAlias" : { + "type" : "string", + "description" : "The truststore to be used by API Gateway when validating the incoming response from the authorization server. Truststore is a repository that holds all the trusted public certificates" + } + } + }, + "WssCredentials" : { + "type" : "object", + "properties" : { + "userName" : { + "type" : "string", + "description" : "a username used to generate the WSS username token" + }, + "password" : { + "type" : "string", + "description" : "password for the username" + }, + "passwordType" : { + "type" : "string", + "description" : "type of password", + "enum" : [ "NONE", "TEXT", "DIGEST" ] + } + } + }, + "SignAndEncryptConfig" : { + "type" : "object", + "properties" : { + "keyStoreAlias" : { + "type" : "string", + "description" : "Specify the keystore that needs to be used by API Gateway while sending the request to the native API. A keystore is a repository of private key and its corresponding public certificate" + }, + "keyAlias" : { + "type" : "string", + "description" : "The key alias is the private key that is used sign the request sent to the native API" + }, + "truststoreAlias" : { + "type" : "string", + "description" : "The truststore to be used by API Gateway when sending the request to the native API. Truststore is a repository that holds all the trusted public certificates" + }, + "certificateAlias" : { + "type" : "string", + "description" : "Select the certificate from the truststore that is used to validate the request that is sent to the native API." + } + } + } + } } \ No newline at end of file diff --git a/apigatewayservices/APIGatewayPromotionManagement.json b/apigatewayservices/APIGatewayPromotionManagement.json index 92d21ea..e94a91a 100644 --- a/apigatewayservices/APIGatewayPromotionManagement.json +++ b/apigatewayservices/APIGatewayPromotionManagement.json @@ -1,661 +1,661 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "API Gateway supports staging and promotion of assets. In a typical enterprise-level,\nsolutions are separated according to the different stages of Software Development\nLifecycle (SDLC) such as development, quality assurance (QA), and production stages. Staging and promotion allows you to promote all the assets across different stages. The supported assets are APIs, global policies, policy templates, applications, aliases, packages, plans, threat protection rules, administrative configurations, approval configurations, outbound proxies, URL aliases, keyStores, trustStores, JNDI provider aliases, JMS connection aliases, JMS triggers, webservice endpoint aliases, users, groups, access profiles and kerberos settings\n\nPromotion refers to moving API Gateway assets from the source stage to one or more\ntarget stages. For example, you might want to promote assets you have developed on\nservers in a Development stage (the source API Gateway instance) to servers in a QA or\nProduction stage (the target API Gateway instance).\n\nRollback is the process of restoring the asset's metadata in the target API Gateway instance to a previous state.\n\nStages should be configured in the source machine where we initiate the promotion process.", - "version" : "10.7", - "title" : "API Assets Promotion Management" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "paths" : { - "/stages" : { - "get" : { - "description" : "This REST operation is used to retrieve all the configured stages", - "operationId" : "getStages", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "Returns the list of all stages", - "examples" : { - "application/json" : "{\r\n \"stages\": [\r\n {\r\n \"id\": \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\",\r\n \"name\": \"sampleStage\",\r\n \"url\": \"http://localhost:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Stage" - } - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "This REST operation is used to configure a stage in the source API Gateway where promotion will be initiated. A stage is just another API Gateway instance. When the stage url is https, then keystore and keystore alias will also be expected while configuring a stage", - "operationId" : "createStage", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "Stage request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Stage" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"name\" : \"QA Stage\",\r\n\t\"description\" : \"This stage will be used to test the assets promoted from the development stage\",\r\n\t\"url\" : \"http://mcmriz01:5555/\",\r\n\t\"username\" : \"Administrator\",\r\n\t\"password\" : \"password\"\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "Stage is created successfully in API Gateway. Now user can promote API Gateway assets to the created stage", - "examples" : { - "application/json" : "{\r\n \"stage\": {\r\n \"id\": \"cc71211e-cd45-4a72-b453-9cc22c783f9d\",\r\n \"name\": \"QA Stage\",\r\n \"description\": \"This stage will be used to test the assets promoted from the development stage\",\r\n \"url\": \"http://mcmriz01:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Stage" - } - }, - "400" : { - "description" : "This status code shows when the user missed the mandatory fields like name, url, username, password and keyStoreAlias, keyAlias for https url in the request or provide a invalid request body" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to configure a stage." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/stages/{stageId}" : { - "get" : { - "description" : "This REST operation is used to retrieve a particular stage object based on a stage id", - "operationId" : "getStage", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "stageId", - "in" : "path", - "description" : "Stage Id for the stage to be retrieved", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the stage based on the stageId.", - "examples" : { - "application/json" : "{\r\n \"stage\": {\r\n \"id\": \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\",\r\n \"name\": \"sampleStage\",\r\n \"url\": \"http://localhost:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Stage" - } - }, - "404" : { - "description" : "This status code indicates that the stageId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This REST operation is used to update a stage in the source API Gateway where promotion will be initiated. A stage is just another API Gateway instance. When the stage url is https, then keystore and keystore alias will also be expected while configuring a stage", - "operationId" : "updateStage", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "stageId", - "in" : "path", - "description" : "Stage Id for the stage to be updated", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "in" : "body", - "name" : "body", - "description" : "Stage request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Stage" - }, - "x-examples" : { - "application/json" : "{\r\n \"stage\": {\r\n \"id\": \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\",\r\n \"name\": \"sampleStage\",\r\n \"url\": \"http://localhost:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "Returns the updated stage object", - "examples" : { - "application/json" : "{\r\n \"stage\": {\r\n \"id\": \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\",\r\n \"name\": \"sampleStage\",\r\n \"url\": \"http://localhost:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Stage" - } - }, - "404" : { - "description" : "This status code indicates that the stageId specified is not found in the API Gateway" - }, - "400" : { - "description" : "This status code shows when the user missed the mandatory fields like name, url, username, password and keyStoreAlias, keyAlias for https url in the request or provide a invalid request body" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "Delete the stage", - "operationId" : "deleteStage", - "parameters" : [ { - "name" : "stageId", - "in" : "path", - "description" : "Stage Id for the stage to be deleted", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "404" : { - "description" : "This status code indicates that the stageId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API" - }, - "204" : { - "description" : "Success" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/promotion" : { - "get" : { - "description" : "This REST operation is used to retrieve the promotions history with each promotion entry provides the promotion name, promoted by whom, when it's promoted and the promoted assets status", - "operationId" : "getPromotions", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "Returns the list of all promotions", - "examples" : { - "application/json" : "{\r\n \"promotion\": [\r\n {\r\n \"id\": \"12beeb57-1855-4da3-8802-679fcff6941b\",\r\n \"name\": \"samplePromote\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\"\r\n ],\r\n \"application\": []\r\n },\r\n \"creationTime\": \"2018-08-07 07:29:28 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"Alias\": {\r\n \"name\": \"LabCaseEndpointAlias\",\r\n \"id\": \"fe1d5c3c-e02a-11e7-9d18-d9340e1d9bce\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"75852c98-244a-4be3-8434-f39a7426ce95\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"SetProjectIdTransformationAlias\",\r\n \"id\": \"7011f00c-e01a-11e7-9d18-c3cb04029276\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"0147048a-795f-48f2-905e-7357474fc02f\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Outbound Authentication - Transport] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"a2947928-5a38-49a0-b0bb-2076800987a1\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Monitor Service Performance] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"11d6d5d8-a55b-480b-8305-34544937fea8\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"LabCaseTestService_VS[2.0]\",\r\n \"id\": \"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Request Transformation] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"73a459c5-a15c-49ce-8394-459a34adb81e\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"MyLabCaseAccountThesse\",\r\n \"id\": \"b73a8400-e008-11e7-9d18-f5832492b6de\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PassmanData\": {\r\n \"name\": \"HTTP_AUTH_OUTBOUND_CLIENT_PWDMyLabCaseAccountThesse\",\r\n \"id\": \"HTTP_AUTH_OUTBOUND_CLIENT_PWDMyLabCaseAccountThesse\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Log Invocation] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"b2fda4bb-70cd-43ba-b508-250f8ba6f5ac\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Identify & Authorize Application] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"f37af4f0-1304-4cf2-b6ea-dc19b012f537\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"fa476c9d-b30c-4d51-b7c5-80a824723f4f\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Service Result Cache] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"0fc7967a-0c31-4ba2-bc8a-a70f059d3ef0\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n },\r\n {\r\n \"id\": \"5cf6f3f5-f8ad-4810-9ef7-ed51d3fd2cfd\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:32:35 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Log Invocation] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"b2fda4bb-70cd-43ba-b508-250f8ba6f5ac\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"SetProjectIdTransformationAlias\",\r\n \"id\": \"7011f00c-e01a-11e7-9d18-c3cb04029276\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"0147048a-795f-48f2-905e-7357474fc02f\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PassmanData\": {\r\n \"name\": \"HTTP_AUTH_OUTBOUND_CLIENT_PWDMyLabCaseAccountThesse\",\r\n \"id\": \"HTTP_AUTH_OUTBOUND_CLIENT_PWDMyLabCaseAccountThesse\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"MyLabCaseAccountThesse\",\r\n \"id\": \"b73a8400-e008-11e7-9d18-f5832492b6de\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Request Transformation] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"73a459c5-a15c-49ce-8394-459a34adb81e\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"75852c98-244a-4be3-8434-f39a7426ce95\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"LabCaseTestService_VS[2.0]\",\r\n \"id\": \"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Monitor Service Performance] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"11d6d5d8-a55b-480b-8305-34544937fea8\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"LabCaseEndpointAlias\",\r\n \"id\": \"fe1d5c3c-e02a-11e7-9d18-d9340e1d9bce\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Service Result Cache] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"0fc7967a-0c31-4ba2-bc8a-a70f059d3ef0\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"fa476c9d-b30c-4d51-b7c5-80a824723f4f\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Outbound Authentication - Transport] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"a2947928-5a38-49a0-b0bb-2076800987a1\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Identify & Authorize Application] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"f37af4f0-1304-4cf2-b6ea-dc19b012f537\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n },\r\n {\r\n \"id\": \"917e144e-70cc-4ada-8541-9f68d28483e9\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"d033acd7-f935-4d92-8042-b152a992b0cd\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:33:10 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"629edf16-3a8c-4362-b75c-2a9f9ab27ee0\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"e50eba2b-6f54-4585-9dac-25b20543bf82\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"b8b508e0-a61d-49f0-9131-a9379dbd7f6e\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"PetStore on Heroku[1.0.0]\",\r\n \"id\": \"d033acd7-f935-4d92-8042-b152a992b0cd\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n },\r\n {\r\n \"id\": \"025d530f-e8ed-4984-99bf-9d216bd3adc0\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"d033acd7-f935-4d92-8042-b152a992b0cd\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:33:57 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"b8b508e0-a61d-49f0-9131-a9379dbd7f6e\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"PetStore on Heroku[1.0.0]\",\r\n \"id\": \"d033acd7-f935-4d92-8042-b152a992b0cd\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"629edf16-3a8c-4362-b75c-2a9f9ab27ee0\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"e50eba2b-6f54-4585-9dac-25b20543bf82\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Promotion" - } - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "This REST operation is used to promote the API Gateway assets from the source machine to destination machine where the destination machine is configured as a stage", - "operationId" : "createPromotion", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "Promotion request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Promotion" - }, - "x-examples" : { - "application/json" : "{\"description\":\"Promoting the weather API version 2.0 to QA stage so that QA can start testing this API\",\"name\":\"samplePromote\",\"destinationStages\":[\"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"],\"promotedAssets\":{\"api\":[\"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\"],\"application\":[]}}" - } - } ], - "responses" : { - "200" : { - "description" : "Promotion of assets is completed successfully in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"promotion\": {\r\n \"id\": \"025d530f-e8ed-4984-99bf-9d216bd3adc0\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"d033acd7-f935-4d92-8042-b152a992b0cd\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:33:57 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"b8b508e0-a61d-49f0-9131-a9379dbd7f6e\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"PetStore on Heroku[1.0.0]\",\r\n \"id\": \"d033acd7-f935-4d92-8042-b152a992b0cd\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"629edf16-3a8c-4362-b75c-2a9f9ab27ee0\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"e50eba2b-6f54-4585-9dac-25b20543bf82\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Promotion" - } - }, - "400" : { - "description" : "This status code shows when the user missed the mandatory fields like destinationStages, promotedAssets in the request or provide a invalid request body" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to configure a stage." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/promotion/{promotionId}" : { - "get" : { - "description" : "Retrieve a promotion based on the promotion id.", - "operationId" : "getPromotion", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "promotionId", - "in" : "path", - "description" : "Promotion Id for the promotion to be retrieved", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the promotion based on the promotionId.", - "examples" : { - "application/json" : "{\r\n \"promotion\": {\r\n \"id\": \"025d530f-e8ed-4984-99bf-9d216bd3adc0\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"d033acd7-f935-4d92-8042-b152a992b0cd\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:33:57 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"b8b508e0-a61d-49f0-9131-a9379dbd7f6e\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"PetStore on Heroku[1.0.0]\",\r\n \"id\": \"d033acd7-f935-4d92-8042-b152a992b0cd\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"629edf16-3a8c-4362-b75c-2a9f9ab27ee0\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"e50eba2b-6f54-4585-9dac-25b20543bf82\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Promotion" - } - }, - "404" : { - "description" : "This status code indicates that the promotionId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "Delete the promotion", - "operationId" : "deletePromotion", - "parameters" : [ { - "name" : "promotionId", - "in" : "path", - "description" : "Promotion Id for the promotion to be deleted", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "404" : { - "description" : "This status code indicates that the promotionId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API" - }, - "204" : { - "description" : "Success" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/rollback" : { - "get" : { - "description" : "This REST operation is used to retrieve the list of possible rollbacks a user can do from the local (target) API Gateway instance. Each rollback entry was created when a promotion of assets to the local (target) API Gateway instance from another stage", - "operationId" : "getRollbacks", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "Returns the list of all rollbacks", - "examples" : { - "application/json" : "{\r\n \"rollback\": [\r\n {\r\n \"id\": \"b3c038d6-84a8-4b35-93af-21ab4151c1d4\",\r\n \"name\": \"testP2\",\r\n \"description\": \"\",\r\n\t\t\t\"promotionTime\": \"2018-12-04 09:07:43 GMT\"\r\n },\r\n {\r\n \"id\": \"01faa8db-1213-44c3-9b4a-cda173f00b4a\",\r\n \"name\": \"testP3\",\r\n \"status\": \"Success\",\r\n \"promotionTime\": \"2018-12-04 09:08:31 GMT\",\r\n \"lastRollbackTime\": \"2018-12-04 09:18:27 GMT\"\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Rollback" - } - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/rollback/{rollbackId}" : { - "get" : { - "description" : "Retrieve a rollback based on the rollback id.", - "operationId" : "getRollback", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "rollbackId", - "in" : "path", - "description" : "Rollback Id for the rollback to be retrieved", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the rollback based on the rollbackId.", - "examples" : { - "application/json" : "{\r\n \"rollback\": \r\n {\r\n \"id\": \"01faa8db-1213-44c3-9b4a-cda173f00b4a\",\r\n \"name\": \"testP3\",\r\n \"status\": \"Success\",\r\n \"promotionTime\": \"2018-12-04 09:08:31 GMT\",\r\n \"lastRollbackTime\": \"2018-12-04 09:18:27 GMT\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Rollback" - } - }, - "404" : { - "description" : "This status code indicates that the rollbackId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This REST operation is used to rollback the assets to the previous state i.e the state prior to promotion. Rollback should be initiated from the local gateway instance.", - "operationId" : "doRollback", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "rollbackId", - "in" : "path", - "description" : "Rollback Id for the promotion to be rollbacked", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the rollback object", - "examples" : { - "application/json" : "{\r\n \"rollback\": \r\n {\r\n \"id\": \"01faa8db-1213-44c3-9b4a-cda173f00b4a\",\r\n \"name\": \"testP3\",\r\n \"status\": \"Success\",\r\n \"promotionTime\": \"2018-12-04 09:08:31 GMT\",\r\n \"lastRollbackTime\": \"2018-12-04 09:18:27 GMT\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Rollback" - } - }, - "404" : { - "description" : "This status code indicates that the rollbackId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "Delete the rollback", - "operationId" : "deleteRollback", - "parameters" : [ { - "name" : "rollbackId", - "in" : "path", - "description" : "Rollback Id for the rollback to be deleted", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "404" : { - "description" : "This status code indicates that the rollbackId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API" - }, - "204" : { - "description" : "Success" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "Stage" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "readOnly" : true - }, - "name" : { - "type" : "string", - "description" : "Unique name for the stage" - }, - "description" : { - "type" : "string", - "description" : "Description for the stage" - }, - "url" : { - "type" : "string", - "description" : "The URL of the host machine where the stage is deployed on an API Gateway installation" - }, - "username" : { - "type" : "string", - "description" : "The username of a registered API Gateway user who has the Manage promotions functional privilege in the target API Gateway instance" - }, - "password" : { - "type" : "string", - "description" : "A valid password of the API Gateway user identified by the attribute Username" - }, - "keystoreAlias" : { - "type" : "string", - "description" : "The alias of the keystore containing the private key that is used for performing asset promotion from one (source) stage to another (target) stage.\nThe Keystore alias field contains a list of the available keystore aliases in API Gateway. If there are no configured keystore aliases, this field lists the default Integration Server keystore, DEFAULT_IS_KEYSTORE ." - }, - "keyAlias" : { - "type" : "string", - "description" : "The alias of the private key that is stored in the keystore specified by the keystore alias.\nThe Key alias field contains a list of the available aliases in the selected keystore. If there are no configured keystores, this field is empty" - } - } - }, - "AssetObject" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "Name of the API gateway asset", - "readOnly" : true - }, - "id" : { - "type" : "string", - "description" : "Id of the API gateway asset", - "readOnly" : true - }, - "status" : { - "type" : "string", - "description" : "Status of the API gateway asset i.e success or failure", - "readOnly" : true - }, - "explanation" : { - "type" : "string", - "description" : "Explanation for the failure", - "readOnly" : true - }, - "overwritten" : { - "type" : "boolean", - "description" : "Specifies whether the promoted asset overwrite any existing asset or not", - "readOnly" : true - }, - "dependencyFailed" : { - "type" : "boolean", - "description" : "Specified whether the dependency asset is failed or not", - "readOnly" : true - } - } - }, - "PrintArchiveResults" : { - "type" : "object", - "properties" : { - "status" : { - "type" : "string", - "description" : "Status of the promotion of assets", - "readOnly" : true - }, - "errorReason" : { - "type" : "string", - "description" : "Error reason for the promotion of assets, if the promotion is failed", - "readOnly" : true - }, - "ArchiveResult" : { - "type" : "array", - "description" : "List of the result of the promotion of all selected assets where key in the each element is the asset type", - "readOnly" : true, - "items" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/AssetObject" - } - } - } - } - }, - "Promotion" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "readOnly" : true - }, - "description" : { - "type" : "string", - "description" : "Description for the promotion" - }, - "name" : { - "type" : "string", - "description" : "Name for the promotion" - }, - "destinationStages" : { - "type" : "array", - "description" : "List of target stages (specified by stage ids) that you want to promote the assets", - "items" : { - "type" : "string" - } - }, - "promotedAssets" : { - "type" : "object", - "description" : "Map of assets with its associated asset ids to be promoted where key is the asset type and value is the list of asset ids. Possible asset types are \"USER\", \"GROUP\", \"USERS\", \"GROUPS\", \"ACCESSPROFILES\", \"LDAPGROUPS\", \"CDSGROUPS\", \"ASSERTION\", \"APPLICATION\", \"API\", \"ALIAS\", \"POLICY\", \"POLICY_ACTION\", \"PLAN\", \"PACKAGE\", \"ADMINISTRATOR_SETTING\", \"PORTAL_GATEWAY\", \"OAUTH2_SCOPE_DATA\", \"SUBSCRIPTION\", \"API_DOCUMENT\", \"APPROVAL_CONFIGURATION\", \"OUTBOUND_PROXY\", \"URL_ALIAS\", \"KEYSTORE\", \"TRUSTSTORE\", \"KERBEROS_SETTING\", \"JNDI_PROVIDER_ALIAS\", \"JMS_CONNECTION_ALIAS\", \"JMS_TRIGGER\", \"WEB_SERVICE_ENDPOINT_ALIAS\".", - "additionalProperties" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - }, - "creationTime" : { - "type" : "string", - "readOnly" : true - }, - "owner" : { - "type" : "string", - "description" : "The user who initiates this promotion", - "readOnly" : true - }, - "status" : { - "type" : "string", - "description" : "Overall status of the promotion whether it's success or failure", - "readOnly" : true - }, - "errorReason" : { - "type" : "string", - "description" : "Reason for the promotion if it's failed", - "readOnly" : true - }, - "promotionResults" : { - "type" : "object", - "description" : "Result of the individual assets that is promoted to all destination stages along with the reason where key is the stage name", - "readOnly" : true, - "additionalProperties" : { - "$ref" : "#/definitions/PrintArchiveResults" - } - }, - "includeApis" : { - "type" : "boolean", - "description" : "Include the APIs associated with the applications during the promotion of applications" - }, - "includeApplications" : { - "type" : "boolean", - "description" : "Include the applications associated with the APIs during the promotion of APIs" - }, - "includeSubscriptions" : { - "type" : "boolean", - "description" : "Include the subscriptions associated with the packages during the promotion of packages" - } - } - }, - "Rollback" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "readOnly" : true - }, - "name" : { - "type" : "string", - "description" : "Name for the rollback" - }, - "description" : { - "type" : "string", - "description" : "Description for the rollback" - }, - "status" : { - "type" : "string", - "description" : "Overall status of the rollback whether it's success or failure", - "readOnly" : true - }, - "sourceStage" : { - "type" : "string", - "description" : "Source stage of the promotion", - "readOnly" : true - }, - "promotedBy" : { - "type" : "string", - "description" : "User who initiated the promotion", - "readOnly" : true - }, - "promotionTime" : { - "type" : "string", - "description" : "Actual time of the promotion", - "readOnly" : true - }, - "lastRollbackTime" : { - "type" : "string", - "description" : "The time at which the asset promotion was rolled back", - "readOnly" : true - } - } - } - } +{ + "swagger" : "2.0", + "info" : { + "description" : "API Gateway supports staging and promotion of assets. In a typical enterprise-level, solutions are separated according to the different stages of Software Development Lifecycle (SDLC) such as development, quality assurance (QA), and production stages. Staging and promotion allows you to promote all the assets across different stages. The supported assets are APIs, global policies, policy templates, applications, aliases, packages, plans, threat protection rules and administrative configurations like load balancer, extended settings, API fault, custom assertions and keystore/truststore.\n\nPromotion refers to moving API Gateway assets from the source stage to one or moretarget stages. For example, you might want to promote assets you have developed on servers in a Development stage (the source API Gateway instance) to servers in a QA or Production stage (the target API Gateway instance).\n\nRollback is the process of restoring the asset's metadata in the target API Gateway instance to a previous state.\n\nStages should be configured in the source machine where we initiate the promotion process. The user must have the manage promotions functional privilege assigned to perform promotions related tasks like configuring the stages, promote and rollback the assets.", + "version" : "10.3", + "title" : "API Assets Promotion Management" + }, + "host" : "localhost:5555", + "basePath" : "/rest/apigateway", + "schemes" : [ "http" ], + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "paths" : { + "/stages" : { + "get" : { + "description" : "This REST operation is used to retrieve all the configured stages", + "operationId" : "getStages", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "Returns the list of all stages", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Stage" + } + }, + "examples" : { + "application/json" : "{\r\n \"stages\": [\r\n {\r\n \"id\": \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\",\r\n \"name\": \"sampleStage\",\r\n \"url\": \"http://localhost:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "This REST operation is used to configure a stage in the source API Gateway where promotion will be initiated. A stage is just another API Gateway instance. When the stage url is https, then keystore and keystore alias will also be expected while configuring a stage", + "operationId" : "createStage", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "Stage request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Stage" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"name\" : \"QA Stage\",\r\n\t\"description\" : \"This stage will be used to test the assets promoted from the development stage\",\r\n\t\"url\" : \"http://mcmriz01:5555/\",\r\n\t\"username\" : \"Administrator\",\r\n\t\"password\" : \"password\"\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "Stage is created successfully in API Gateway. Now user can promote API Gateway assets to the created stage", + "schema" : { + "$ref" : "#/definitions/Stage" + }, + "examples" : { + "application/json" : "{\r\n \"stage\": {\r\n \"id\": \"cc71211e-cd45-4a72-b453-9cc22c783f9d\",\r\n \"name\": \"QA Stage\",\r\n \"description\": \"This stage will be used to test the assets promoted from the development stage\",\r\n \"url\": \"http://mcmriz01:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the user missed the mandatory fields like name, url, username, password and keyStoreAlias, keyAlias for https url in the request or provide a invalid request body" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to configure a stage." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/stages/{stageId}" : { + "get" : { + "description" : "This REST operation is used to retrieve a particular stage object based on a stage id", + "operationId" : "getStage", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "stageId", + "in" : "path", + "description" : "Stage Id for the stage to be retrieved", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the stage based on the stageId.", + "schema" : { + "$ref" : "#/definitions/Stage" + }, + "examples" : { + "application/json" : "{\r\n \"stage\": {\r\n \"id\": \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\",\r\n \"name\": \"sampleStage\",\r\n \"url\": \"http://localhost:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the stageId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "This REST operation is used to update a stage in the source API Gateway where promotion will be initiated. A stage is just another API Gateway instance. When the stage url is https, then keystore and keystore alias will also be expected while configuring a stage", + "operationId" : "updateStage", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "stageId", + "in" : "path", + "description" : "Stage Id for the stage to be updated", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "in" : "body", + "name" : "body", + "description" : "Stage request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Stage" + }, + "x-examples" : { + "application/json" : "{\r\n \"stage\": {\r\n \"id\": \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\",\r\n \"name\": \"sampleStage\",\r\n \"url\": \"http://localhost:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "Returns the updated stage object", + "schema" : { + "$ref" : "#/definitions/Stage" + }, + "examples" : { + "application/json" : "{\r\n \"stage\": {\r\n \"id\": \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\",\r\n \"name\": \"sampleStage\",\r\n \"url\": \"http://localhost:5555/\",\r\n \"username\": \"Administrator\",\r\n \"password\": \"********************************\"\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the stageId specified is not found in the API Gateway" + }, + "400" : { + "description" : "This status code shows when the user missed the mandatory fields like name, url, username, password and keyStoreAlias, keyAlias for https url in the request or provide a invalid request body" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "Delete the stage", + "operationId" : "deleteStage", + "parameters" : [ { + "name" : "stageId", + "in" : "path", + "description" : "Stage Id for the stage to be deleted", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "404" : { + "description" : "This status code indicates that the stageId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API" + }, + "204" : { + "description" : "Success" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/promotion" : { + "get" : { + "description" : "This REST operation is used to retrieve the promotions history with each promotion entry provides the promotion name, promoted by whom, when it's promoted and the promoted assets status", + "operationId" : "getPromotions", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "Returns the list of all promotions", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Promotion" + } + }, + "examples" : { + "application/json" : "{\r\n \"promotion\": [\r\n {\r\n \"id\": \"12beeb57-1855-4da3-8802-679fcff6941b\",\r\n \"name\": \"samplePromote\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\"\r\n ],\r\n \"application\": []\r\n },\r\n \"creationTime\": \"2018-08-07 07:29:28 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"Alias\": {\r\n \"name\": \"LabCaseEndpointAlias\",\r\n \"id\": \"fe1d5c3c-e02a-11e7-9d18-d9340e1d9bce\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"75852c98-244a-4be3-8434-f39a7426ce95\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"SetProjectIdTransformationAlias\",\r\n \"id\": \"7011f00c-e01a-11e7-9d18-c3cb04029276\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"0147048a-795f-48f2-905e-7357474fc02f\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Outbound Authentication - Transport] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"a2947928-5a38-49a0-b0bb-2076800987a1\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Monitor Service Performance] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"11d6d5d8-a55b-480b-8305-34544937fea8\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"LabCaseTestService_VS[2.0]\",\r\n \"id\": \"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Request Transformation] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"73a459c5-a15c-49ce-8394-459a34adb81e\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"MyLabCaseAccountThesse\",\r\n \"id\": \"b73a8400-e008-11e7-9d18-f5832492b6de\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PassmanData\": {\r\n \"name\": \"HTTP_AUTH_OUTBOUND_CLIENT_PWDMyLabCaseAccountThesse\",\r\n \"id\": \"HTTP_AUTH_OUTBOUND_CLIENT_PWDMyLabCaseAccountThesse\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Log Invocation] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"b2fda4bb-70cd-43ba-b508-250f8ba6f5ac\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Identify & Authorize Application] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"f37af4f0-1304-4cf2-b6ea-dc19b012f537\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"fa476c9d-b30c-4d51-b7c5-80a824723f4f\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Service Result Cache] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"0fc7967a-0c31-4ba2-bc8a-a70f059d3ef0\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n },\r\n {\r\n \"id\": \"5cf6f3f5-f8ad-4810-9ef7-ed51d3fd2cfd\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:32:35 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Log Invocation] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"b2fda4bb-70cd-43ba-b508-250f8ba6f5ac\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"SetProjectIdTransformationAlias\",\r\n \"id\": \"7011f00c-e01a-11e7-9d18-c3cb04029276\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"0147048a-795f-48f2-905e-7357474fc02f\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PassmanData\": {\r\n \"name\": \"HTTP_AUTH_OUTBOUND_CLIENT_PWDMyLabCaseAccountThesse\",\r\n \"id\": \"HTTP_AUTH_OUTBOUND_CLIENT_PWDMyLabCaseAccountThesse\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"MyLabCaseAccountThesse\",\r\n \"id\": \"b73a8400-e008-11e7-9d18-f5832492b6de\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Request Transformation] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"73a459c5-a15c-49ce-8394-459a34adb81e\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"75852c98-244a-4be3-8434-f39a7426ce95\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"LabCaseTestService_VS[2.0]\",\r\n \"id\": \"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Monitor Service Performance] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"11d6d5d8-a55b-480b-8305-34544937fea8\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"Alias\": {\r\n \"name\": \"LabCaseEndpointAlias\",\r\n \"id\": \"fe1d5c3c-e02a-11e7-9d18-d9340e1d9bce\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Service Result Cache] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"0fc7967a-0c31-4ba2-bc8a-a70f059d3ef0\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"fa476c9d-b30c-4d51-b7c5-80a824723f4f\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Outbound Authentication - Transport] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"a2947928-5a38-49a0-b0bb-2076800987a1\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Identify & Authorize Application] -> Policy For API LabCaseTestService_VS[2.0]\",\r\n \"id\": \"f37af4f0-1304-4cf2-b6ea-dc19b012f537\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n },\r\n {\r\n \"id\": \"917e144e-70cc-4ada-8541-9f68d28483e9\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"d033acd7-f935-4d92-8042-b152a992b0cd\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:33:10 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"629edf16-3a8c-4362-b75c-2a9f9ab27ee0\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"e50eba2b-6f54-4585-9dac-25b20543bf82\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"b8b508e0-a61d-49f0-9131-a9379dbd7f6e\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"PetStore on Heroku[1.0.0]\",\r\n \"id\": \"d033acd7-f935-4d92-8042-b152a992b0cd\",\r\n \"status\": \"Failed\",\r\n \"explanation\": \"Asset already exists.\",\r\n \"overwritten\": false,\r\n \"dependencyFailed\": false\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n },\r\n {\r\n \"id\": \"025d530f-e8ed-4984-99bf-9d216bd3adc0\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"d033acd7-f935-4d92-8042-b152a992b0cd\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:33:57 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"b8b508e0-a61d-49f0-9131-a9379dbd7f6e\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"PetStore on Heroku[1.0.0]\",\r\n \"id\": \"d033acd7-f935-4d92-8042-b152a992b0cd\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"629edf16-3a8c-4362-b75c-2a9f9ab27ee0\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"e50eba2b-6f54-4585-9dac-25b20543bf82\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "This REST operation is used to promote the API Gateway assets from the source machine to destination machine where the destination machine is configured as a stage", + "operationId" : "createPromotion", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "Promotion request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Promotion" + }, + "x-examples" : { + "application/json" : "{\"description\":\"Promoting the weather API version 2.0 to QA stage so that QA can start testing this API\",\"name\":\"samplePromote\",\"destinationStages\":[\"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"],\"promotedAssets\":{\"api\":[\"9ae31b7f-25e6-11e8-9ed0-e261b16c5360\"],\"application\":[]}}" + } + } ], + "responses" : { + "200" : { + "description" : "Promotion of assets is completed successfully in API Gateway.", + "schema" : { + "$ref" : "#/definitions/Promotion" + }, + "examples" : { + "application/json" : "{\r\n \"promotion\": {\r\n \"id\": \"025d530f-e8ed-4984-99bf-9d216bd3adc0\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"d033acd7-f935-4d92-8042-b152a992b0cd\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:33:57 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"b8b508e0-a61d-49f0-9131-a9379dbd7f6e\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"PetStore on Heroku[1.0.0]\",\r\n \"id\": \"d033acd7-f935-4d92-8042-b152a992b0cd\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"629edf16-3a8c-4362-b75c-2a9f9ab27ee0\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"e50eba2b-6f54-4585-9dac-25b20543bf82\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the user missed the mandatory fields like destinationStages, promotedAssets in the request or provide a invalid request body" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to configure a stage." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/promotion/{promotionId}" : { + "get" : { + "description" : "Retrieve a promotion based on the promotion id.", + "operationId" : "getPromotion", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "promotionId", + "in" : "path", + "description" : "Promotion Id for the promotion to be retrieved", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the promotion based on the promotionId.", + "schema" : { + "$ref" : "#/definitions/Promotion" + }, + "examples" : { + "application/json" : "{\r\n \"promotion\": {\r\n \"id\": \"025d530f-e8ed-4984-99bf-9d216bd3adc0\",\r\n \"name\": \"samplePromote_01\",\r\n \"destinationStages\": [\r\n \"2d9e280a-b529-466c-9ec8-d6b0e93026a8\"\r\n ],\r\n \"valueSubstitution\": [],\r\n \"promotedAssets\": {\r\n \"api\": [\r\n \"d033acd7-f935-4d92-8042-b152a992b0cd\"\r\n ]\r\n },\r\n \"creationTime\": \"2018-08-07 07:33:57 GMT\",\r\n \"owner\": \"Administrator\",\r\n \"status\": \"Success\",\r\n \"promotionResults\": {\r\n \"sampleStage\": {\r\n \"status\": \"Success\",\r\n \"ArchiveResult\": [\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Enable HTTP / HTTPS] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"b8b508e0-a61d-49f0-9131-a9379dbd7f6e\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"API\": {\r\n \"name\": \"PetStore on Heroku[1.0.0]\",\r\n \"id\": \"d033acd7-f935-4d92-8042-b152a992b0cd\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"Policy\": {\r\n \"name\": \"Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"629edf16-3a8c-4362-b75c-2a9f9ab27ee0\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n },\r\n {\r\n \"PolicyAction\": {\r\n \"name\": \"Policy Action [Straight Through Routing] -> Policy For API PetStore on Heroku[1.0.0]\",\r\n \"id\": \"e50eba2b-6f54-4585-9dac-25b20543bf82\",\r\n \"status\": \"Success\",\r\n \"explanation\": \"OK\",\r\n \"overwritten\": true,\r\n \"dependencyFailed\": null\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n \"includeApis\": false,\r\n \"includeApplications\": false,\r\n \"includeSubscriptions\": false\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the promotionId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "Delete the promotion", + "operationId" : "deletePromotion", + "parameters" : [ { + "name" : "promotionId", + "in" : "path", + "description" : "Promotion Id for the promotion to be deleted", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "404" : { + "description" : "This status code indicates that the promotionId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API" + }, + "204" : { + "description" : "Success" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/rollback" : { + "get" : { + "description" : "This REST operation is used to retrieve the list of possible rollbacks a user can do from the local (target) API Gateway instance. Each rollback entry was created when a promotion of assets to the local (target) API Gateway instance from another stage", + "operationId" : "getRollbacks", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "Returns the list of all rollbacks", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Rollback" + } + }, + "examples" : { + "application/json" : "{\r\n \"rollback\": [\r\n {\r\n \"id\": \"b3c038d6-84a8-4b35-93af-21ab4151c1d4\",\r\n \"name\": \"testP2\",\r\n \"description\": \"\",\r\n\t\t\t\"promotionTime\": \"2018-12-04 09:07:43 GMT\"\r\n },\r\n {\r\n \"id\": \"01faa8db-1213-44c3-9b4a-cda173f00b4a\",\r\n \"name\": \"testP3\",\r\n \"status\": \"Success\",\r\n \"promotionTime\": \"2018-12-04 09:08:31 GMT\",\r\n \"lastRollbackTime\": \"2018-12-04 09:18:27 GMT\"\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/rollback/{rollbackId}" : { + "get" : { + "description" : "Retrieve a rollback based on the rollback id.", + "operationId" : "getRollback", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "rollbackId", + "in" : "path", + "description" : "Rollback Id for the rollback to be retrieved", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the rollback based on the rollbackId.", + "schema" : { + "$ref" : "#/definitions/Rollback" + }, + "examples" : { + "application/json" : "{\r\n \"rollback\": \r\n {\r\n \"id\": \"01faa8db-1213-44c3-9b4a-cda173f00b4a\",\r\n \"name\": \"testP3\",\r\n \"status\": \"Success\",\r\n \"promotionTime\": \"2018-12-04 09:08:31 GMT\",\r\n \"lastRollbackTime\": \"2018-12-04 09:18:27 GMT\"\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the rollbackId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "This REST operation is used to rollback the assets to the previous state i.e the state prior to promotion. Rollback should be initiated from the local gateway instance.", + "operationId" : "doRollback", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "rollbackId", + "in" : "path", + "description" : "Rollback Id for the promotion to be rollbacked", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the rollback object", + "schema" : { + "$ref" : "#/definitions/Rollback" + }, + "examples" : { + "application/json" : "{\r\n \"rollback\": \r\n {\r\n \"id\": \"01faa8db-1213-44c3-9b4a-cda173f00b4a\",\r\n \"name\": \"testP3\",\r\n \"status\": \"Success\",\r\n \"promotionTime\": \"2018-12-04 09:08:31 GMT\",\r\n \"lastRollbackTime\": \"2018-12-04 09:18:27 GMT\"\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the rollbackId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "Delete the rollback", + "operationId" : "deleteRollback", + "parameters" : [ { + "name" : "rollbackId", + "in" : "path", + "description" : "Rollback Id for the rollback to be deleted", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "404" : { + "description" : "This status code indicates that the rollbackId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API" + }, + "204" : { + "description" : "Success" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + } + }, + "securityDefinitions" : { + "Basic" : { + "description" : "API Gateway Administrator and API Gateway provider", + "type" : "basic" + } + }, + "definitions" : { + "Stage" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "readOnly" : true + }, + "name" : { + "type" : "string", + "description" : "Unique name for the stage" + }, + "description" : { + "type" : "string", + "description" : "Description for the stage" + }, + "url" : { + "type" : "string", + "description" : "The URL of the host machine where the stage is deployed on an API Gateway installation" + }, + "username" : { + "type" : "string", + "description" : "The username of a registered API Gateway user who has the Manage promotions functional privilege in the target API Gateway instance" + }, + "password" : { + "type" : "string", + "description" : "A valid password of the API Gateway user identified by the attribute Username" + }, + "keystoreAlias" : { + "type" : "string", + "description" : "The alias of the keystore containing the private key that is used for performing asset promotion from one (source) stage to another (target) stage.\nThe Keystore alias field contains a list of the available keystore aliases in API Gateway. If there are no configured keystore aliases, this field lists the default Integration Server keystore, DEFAULT_IS_KEYSTORE ." + }, + "keyAlias" : { + "type" : "string", + "description" : "The alias of the private key that is stored in the keystore specified by the keystore alias.\nThe Key alias field contains a list of the available aliases in the selected keystore. If there are no configured keystores, this field is empty" + } + } + }, + "AssetObject" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "Name of the API gateway asset", + "readOnly" : true + }, + "id" : { + "type" : "string", + "description" : "Id of the API gateway asset", + "readOnly" : true + }, + "status" : { + "type" : "string", + "description" : "Status of the API gateway asset i.e success or failure", + "readOnly" : true + }, + "explanation" : { + "type" : "string", + "description" : "Explanation for the failure", + "readOnly" : true + }, + "overwritten" : { + "type" : "boolean", + "description" : "Specifies whether the promoted asset overwrite any existing asset or not", + "readOnly" : true + }, + "dependencyFailed" : { + "type" : "boolean", + "description" : "Specified whether the dependency asset is failed or not", + "readOnly" : true + } + } + }, + "PrintArchiveResults" : { + "type" : "object", + "properties" : { + "status" : { + "type" : "string", + "description" : "Status of the promotion of assets", + "readOnly" : true + }, + "errorReason" : { + "type" : "string", + "description" : "Error reason for the promotion of assets, if the promotion is failed", + "readOnly" : true + }, + "ArchiveResult" : { + "type" : "array", + "description" : "List of the result of the promotion of all selected assets where key in the each element is the asset type", + "readOnly" : true, + "items" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/AssetObject" + } + } + } + } + }, + "Promotion" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "readOnly" : true + }, + "description" : { + "type" : "string", + "description" : "Description for the promotion" + }, + "name" : { + "type" : "string", + "description" : "Name for the promotion" + }, + "destinationStages" : { + "type" : "array", + "description" : "List of target stages (specified by stage ids) that you want to promote the assets", + "items" : { + "type" : "string" + } + }, + "promotedAssets" : { + "type" : "object", + "description" : "Map of assets with its associated asset ids to be promoted where key is the asset type and value is the list of asset ids. Possible asset types are \"USER\", \"GROUP\", \"USERS\", \"GROUPS\", \"ACCESSPROFILES\", \"LDAPGROUPS\", \"CDSGROUPS\", \"ASSERTION\", \"APPLICATION\", \"API\", \"ALIAS\", \"POLICY\", \"POLICY_ACTION\", \"PLAN\", \"PACKAGE\", \"ADMINISTRATOR_SETTING\", \"PORTAL_GATEWAY\", \"OAUTH2_SCOPE_DATA\", \"SUBSCRIPTION\", \"API_DOCUMENT\", \"APPROVAL_CONFIGURATION\", \"OUTBOUND_PROXY\", \"URL_ALIAS\", \"KEYSTORE\", \"TRUSTSTORE\", \"KERBEROS_SETTING\", \"JNDI_PROVIDER_ALIAS\", \"JMS_CONNECTION_ALIAS\", \"JMS_TRIGGER\", \"WEB_SERVICE_ENDPOINT_ALIAS\".", + "additionalProperties" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + }, + "creationTime" : { + "type" : "string", + "readOnly" : true + }, + "owner" : { + "type" : "string", + "description" : "The user who initiates this promotion", + "readOnly" : true + }, + "status" : { + "type" : "string", + "description" : "Overall status of the promotion whether it's success or failure", + "readOnly" : true + }, + "errorReason" : { + "type" : "string", + "description" : "Reason for the promotion if it's failed", + "readOnly" : true + }, + "promotionResults" : { + "type" : "object", + "description" : "Result of the individual assets that is promoted to all destination stages along with the reason where key is the stage name", + "readOnly" : true, + "additionalProperties" : { + "$ref" : "#/definitions/PrintArchiveResults" + } + }, + "includeApis" : { + "type" : "boolean", + "description" : "Include the APIs associated with the applications during the promotion of applications" + }, + "includeApplications" : { + "type" : "boolean", + "description" : "Include the applications associated with the APIs during the promotion of APIs" + }, + "includeSubscriptions" : { + "type" : "boolean", + "description" : "Include the subscriptions associated with the packages during the promotion of packages" + } + } + }, + "Rollback" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "readOnly" : true + }, + "name" : { + "type" : "string", + "description" : "Name for the rollback" + }, + "description" : { + "type" : "string", + "description" : "Description for the rollback" + }, + "status" : { + "type" : "string", + "description" : "Overall status of the rollback whether it's success or failure", + "readOnly" : true + }, + "sourceStage" : { + "type" : "string", + "description" : "Source stage of the promotion", + "readOnly" : true + }, + "promotedBy" : { + "type" : "string", + "description" : "User who initiated the promotion", + "readOnly" : true + }, + "promotionTime" : { + "type" : "string", + "description" : "Actual time of the promotion", + "readOnly" : true + }, + "lastRollbackTime" : { + "type" : "string", + "description" : "The time at which the asset promotion was rolled back", + "readOnly" : true + } + } + } + } } \ No newline at end of file diff --git a/apigatewayservices/APIGatewayPublicServices.json b/apigatewayservices/APIGatewayPublicServices.json index 526ab81..e74e525 100644 --- a/apigatewayservices/APIGatewayPublicServices.json +++ b/apigatewayservices/APIGatewayPublicServices.json @@ -2,7 +2,7 @@ "swagger" : "2.0", "info" : { "description" : "API Gateway public services contains the list of all the public services. \n1. JWT: JSON Web Token (JWT) is a JSON-based open standard (RFC 7519) means of representing a set of information to be securely transmitted between two parties. A set of information is the set of claims (claim set) represented by the JWT. A claim set consists of zero or more claims represented by the name-value pairs, where the names are strings and the values are arbitrary JSON values.API Gateway can generate a JWT token itself or validate the JWT token generated by a trusted third party server.This API allows you to fetch a JWT from API Gateway and also fetch JSON Web key URI of the APIGateway.", - "version" : "10.7", + "version" : "10.3", "title" : "API Gateway Public services" }, "host" : "localhost:5555", @@ -26,11 +26,11 @@ "responses" : { "200" : { "description" : "This response indicates that the client is able to fetch the JWT successfuly.", - "examples" : { - "application/json" : "{\r\n \"jwt\":\"eyJraWQiOiJzc29zIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJBZG1pbmlzdHJhdG9yIiwiYXVkIjoiIiwibmJmIjoxNTIyNjcxMDMyLCJpc3MiOiJBQUEiLCJleHAiOjE1MjI2OTEwMTIsImlhdCI6MTUyMjY3MTAzMn0.C3ZtttnEPgIT9F1rvLzxjrbVr5AWDqGgicdt7O_bP2qYEgaQ3daBkGAHZeRwDPtijfzC7uL0WdEeqzUwC8ybbX-7dqz76yUhhLIeTl7O1qJj2uT8KNKUJC93-hL_SwzbQfO61rW_dHDYeXgnldZltxHE66HUU3mQOjSvQ_GuOfDdzACyMPcfVuW2_uYcT2HfxBI4l5GCIVVKI92E2JG1-Edm9A7PL8L435i64onotVl-QEaMMGMc6LqaY-pOKz6xflJQ06tt2woMhsqVf2iyNr0P8849fBCHXZkghX2is8cYaQQw2Y6cKDEtWA9ueWsPprvIGiWkyHVtUD3Jv4Gymg\" \r\n}" - }, "schema" : { "$ref" : "#/definitions/JWT" + }, + "examples" : { + "application/json" : "{\r\n \"jwt\":\"eyJraWQiOiJzc29zIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJBZG1pbmlzdHJhdG9yIiwiYXVkIjoiIiwibmJmIjoxNTIyNjcxMDMyLCJpc3MiOiJBQUEiLCJleHAiOjE1MjI2OTEwMTIsImlhdCI6MTUyMjY3MTAzMn0.C3ZtttnEPgIT9F1rvLzxjrbVr5AWDqGgicdt7O_bP2qYEgaQ3daBkGAHZeRwDPtijfzC7uL0WdEeqzUwC8ybbX-7dqz76yUhhLIeTl7O1qJj2uT8KNKUJC93-hL_SwzbQfO61rW_dHDYeXgnldZltxHE66HUU3mQOjSvQ_GuOfDdzACyMPcfVuW2_uYcT2HfxBI4l5GCIVVKI92E2JG1-Edm9A7PL8L435i64onotVl-QEaMMGMc6LqaY-pOKz6xflJQ06tt2woMhsqVf2iyNr0P8849fBCHXZkghX2is8cYaQQw2Y6cKDEtWA9ueWsPprvIGiWkyHVtUD3Jv4Gymg\" \r\n}" } }, "400" : { @@ -57,11 +57,11 @@ "responses" : { "200" : { "description" : "This response indicates that the client is able to fetch the JWKS uri of the API Gateway.", - "examples" : { - "application/json" : "{\r\n \"keys\": [{\r\n \"kty\": \"RSA\",\r\n \"e\": \"AQAB\",\r\n \"use\": \"sig\",\r\n \"kid\": \"ssos\",\r\n \"alg\": \"RSA\",\r\n \"n\": \"oIFE3wNHbGNFYOX_Bc4Xp38atxOoGy6dfZRiykqBWWFX5UZ3Cyb_1sxvHyXUuwCqvL482gB8piaAyY1UVLZgCB9W6wUmHNR_ZADJFXchh_r51RyFTf7RG22YPQSoHaV0ei0A5A9q8cC7CfjqWH9dGfJ01kNJaXsNGlrySMga23r6NwENbIa8rUmKuSfPi5XpOmcXKcbZhNrgdMsu_0RIbjMk0wROtSV6bZHCx6SZABvdAybz2ZwBmgP6yuTNWW_wICByP1cZnLXCYC-sRkN-cDV7xtViOrbyBKI1SfFeEAVPvwxHngBQm1NCzRaRwPJ7ChOx1POdBW5wQsYjvhjTFQ\"\r\n }]\r\n}" - }, "schema" : { "$ref" : "#/definitions/JWKSResponse" + }, + "examples" : { + "application/json" : "{\r\n \"keys\": [{\r\n \"kty\": \"RSA\",\r\n \"e\": \"AQAB\",\r\n \"use\": \"sig\",\r\n \"kid\": \"ssos\",\r\n \"alg\": \"RSA\",\r\n \"n\": \"oIFE3wNHbGNFYOX_Bc4Xp38atxOoGy6dfZRiykqBWWFX5UZ3Cyb_1sxvHyXUuwCqvL482gB8piaAyY1UVLZgCB9W6wUmHNR_ZADJFXchh_r51RyFTf7RG22YPQSoHaV0ei0A5A9q8cC7CfjqWH9dGfJ01kNJaXsNGlrySMga23r6NwENbIa8rUmKuSfPi5XpOmcXKcbZhNrgdMsu_0RIbjMk0wROtSV6bZHCx6SZABvdAybz2ZwBmgP6yuTNWW_wICByP1cZnLXCYC-sRkN-cDV7xtViOrbyBKI1SfFeEAVPvwxHngBQm1NCzRaRwPJ7ChOx1POdBW5wQsYjvhjTFQ\"\r\n }]\r\n}" } }, "400" : { diff --git a/apigatewayservices/APIGatewaySearch.json b/apigatewayservices/APIGatewaySearch.json index 6511483..7abc88f 100644 --- a/apigatewayservices/APIGatewaySearch.json +++ b/apigatewayservices/APIGatewaySearch.json @@ -2,7 +2,7 @@ "swagger" : "2.0", "info" : { "description" : "The search API allows you to execute a search query in API Gateway and receive search results that match the search query. You can perform search across different objects such as API, Application, Alias, Assertions, Users and User Groups.", - "version" : "10.7", + "version" : "10.3", "title" : "API Gateway Search Service" }, "host" : "localhost:5555", @@ -13,7 +13,7 @@ "paths" : { "/search" : { "post" : { - "description" : "The search API allows you to execute a search query in API Gateway and get back search results that match the query. You can perform search across different objects such as API, Application, Alias, Assertions, Policies, Administrator Settings, Policy Action, Packages, Plans, Subscriptions, Users and User Groups. Following are the type of searches that does not require scope or fields. \n 1. Users - This type is used to get the list of users from IS. \n 2. User Groups - This type is used to get the list of user groups from IS. \n\n Following are the type of searches for which you can specify the scope and fields. \n 1. API - This type is used to search the APIs in API Gateway. \n 2. Application - This type is used to search the Applications created in API Gateway. \n 3. Alias - This type is used to search aliases created in API Gateway. \n 4. Assertions - This type is used to search custom assertions created in API Gateway. \n 5. Policy - This type is used to search policies in API Gateway. \n 6. Policy Action - This type is used to search policy actions in API Gateway. \n 7. Package - This type is used to search packages in API Gateway. \n 8. Plan - This type is used to search plans in API Gateway. \n 9. Administrator Setting - This type is used to search the administrator settings in API Gateway. \n 10. Subscription - This type is used to search subscriptions in API Gateway. \n \n For the above ten types, if a scope is specified, then the scope is applicable for all types regardless whether it is applicable for that or not. Also if the required fields are specified and it is not available in any other types, then the search result corresponds to that type does not have the fields. \n If from and size are specified then it skips first n records specified in from for all types and it fetches the number of records specified in size.\n\n\nexamples:\n\n1. Fetch All APIs contains run as substring\n\nPayload : { \"types\" : [\"api\"], \"scope\":[ { \"attributeName\" : \"apiName\", \"keyword\" : \".*run.*\" }] }\n\nThe above payload will fetch all APIs contains run as substring in API name. The response will contains APIs with some fields populated with default values. \n\n2. Fetch All APIs contains run as substring and specific set of fields in the response\n\nPayload : { \"types\" : [\"api\"], \"scope\":[ { \"attributeName\" : \"apiName\", \"keyword\" : \".*run.*\" }], \"responseFields\" : [\"apiName\", \"type\", \"isActive\", \"systemVersion\", \"policies\",\"publishedPortals\",\"apiVersion\",\"id\"]}\n\nTo fetch all fields, user can use \"*\" in responseFields. It will fetch all the fields in the response.\n\nPayload : { \"types\" : [\"api\"], \"scope\":[ { \"attributeName\" : \"apiName\", \"keyword\" : \".*run.*\" }], \"responseFields\" : [\"*\"]}\n\n\nThe above payload will fetch all APIs contains run as substring in API name and corresponding fields mentioned in responseFields section.\n\nThe responseFields can be identified from schema definition using below table for some of the main used types\n\nAsset type: API ,Swagger file: APIGatewayServiceManagement.json ,Definition: #/definitions/GatewayAPI\nAsset type: POLICY ,Swagger file: APIGatewayPolicyManagement.json ,Definition: #/definitions/Policy\nAsset type: POLICY_ACTION ,Swagger file: APIGatewayPolicyManagement.json ,Definition: #/definitions/PolicyAction\nAsset type: ALIAS ,Swagger file: APIGatewayAlias.json ,Definition: #/definitions/Alias\nAsset type: APPLICATION ,Swagger file:APIGatewayApplication.json ,Definition: #/definitions/Application\nAsset type: USERS ,Swagger file: APIGatewayUserManagementSwagger.json ,Definition: #/definitions/User\nAsset type: GROUPS ,Swagger file: APIGatewayUserManagementSwagger.json ,Definition: #/definitions/Group\nAsset type: ACCESSPROFILES ,Swagger file: APIGatewayUserManagementSwagger.json ,Definition: #/definitions/AccessProfile\nAsset type: API_DOCUMENT ,Swagger file: APIGatewayDocumentManagement.json ,Definition: #/definitions/Document\nAsset type: KEYSTORE ,Swagger file: APIGatewayAdministration.json ,Definition: #/definitions/KeyStore\nAsset type: TRUSTSTORE ,Swagger file: APIGatewayAdministration.json ,Definition: #/definitions/TrustStore\n\nFor other types user can use \"*\" in responseFields section to get all the fields.\n", + "description" : "The search API allows you to execute a search query in API Gateway and get back search results that match the query. You can perform search across different objects such as API, Application, Alias, Assertions, Policies, Administrator Settings, Policy Action, Packages, Plans, Subscriptions, Users and User Groups. Following are the type of searches that does not require scope or fields. \n 1. Users - This type is used to get the list of users from IS. \n 2. User Groups - This type is used to get the list of user groups from IS. \n\n Following are the type of searches for which you can specify the scope and fields. \n 1. API - This type is used to search the APIs in API Gateway. \n 2. Application - This type is used to search the Applications created in API Gateway. \n 3. Alias - This type is used to search aliases created in API Gateway. \n 4. Assertions - This type is used to search custom assertions created in API Gateway. \n 5. Policy - This type is used to search policies in API Gateway. \n 6. Policy Action - This type is used to search policy actions in API Gateway. \n 7. Package - This type is used to search packages in API Gateway. \n 8. Plan - This type is used to search plans in API Gateway. \n 9. Administrator Setting - This type is used to search the administrator settings in API Gateway. \n 10. Subscription - This type is used to search subscriptions in API Gateway. \n 11. Access Profiles - This type is used to search the access profiles in API Gateway. \n 12. Portal Gateway - This type is used to search the API portal configuration in API Gateway. \n 13. API Document - This type is used to search the API Documents added for APIs in API Gateway. \n \n For the above ten types, if a scope is specified, then the scope is applicable for all types regardless whether it is applicable for that or not. Also if the required fields are specified and it is not available in any other types, then the search result corresponds to that type does not have the fields. \n If from and size are specified then it skips first n records specified in from for all types and it fetches the number of records specified in size.", "operationId" : "searchByType", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], @@ -32,14 +32,14 @@ "responses" : { "200" : { "description" : "This status code indicates that the search process is successful. The result is a map of type and object. Each type has it's respective search results mapped.", - "examples" : { - "application/json" : "{\r\n\t\"GROUP\": [\"API-Gateway-Administrators\",\r\n\t\"API-Gateway-Providers\",\r\n\t\"Administrators\",\r\n\t\"Anonymous\",\r\n\t\"Developers\",\r\n\t\"Everybody\",\r\n\t\"Replicators\"],\r\n\t\"POLICY\": [{\r\n\t\t\"id\": \"GlobalLogInvocationPolicy\",\r\n\t\t\"names\": [{\r\n\t\t\t\"value\": \"Transaction logging\",\r\n\t\t\t\"locale\": \"English\"\r\n\t\t}],\r\n\t\t\"policyEnforcements\": [],\r\n\t\t\"policyScope\": \"GLOBAL\",\r\n\t\t\"global\": false,\r\n\t\t\"active\": false,\r\n\t\t\"systemPolicy\": false\r\n\t},\r\n\t{\r\n\t\t\"id\": \"3808db1a-8577-41e5-af6b-dcdac470524c\",\r\n\t\t\"names\": [{\r\n\t\t\t\"value\": \"Transport Policy\",\r\n\t\t\t\"locale\": \"English\"\r\n\t\t}],\r\n\t\t\"policyEnforcements\": [],\r\n\t\t\"policyScope\": \"GLOBAL\",\r\n\t\t\"global\": false,\r\n\t\t\"active\": false,\r\n\t\t\"systemPolicy\": false\r\n\t}],\r\n\t\"ALIAS\": [{\r\n\t\t\"name\": \"Myname\",\r\n\t\t\"value\": \"API Gateway N\"\r\n\t}],\r\n\t\"APPLICATION\": [{\r\n\t\t\"name\": \"Application\",\r\n\t\t\"owner\": \"Administrator\",\r\n\t\t\"identifiers\": [],\r\n\t\t\"siteURLs\": [],\r\n\t\t\"subscription\": false\r\n\t}],\r\n\t\"API\": [{\r\n\t\t\"apiName\": \"API Gateway\",\r\n\t\t\"isActive\": false,\r\n\t\t\"policies\": [],\r\n\t\t\"publishedPortals\": [],\r\n\t\t\"systemVersion\": 1,\r\n\t\t\"id\": \"1ac48246-80eb-44c8-8901-564e025dbbde\"\r\n\t},\r\n\t{\r\n\t\t\"apiName\": \"API Gateway Policy Management\",\r\n\t\t\"isActive\": false,\r\n\t\t\"owner\": \"Administrator\",\r\n\t\t\"policies\": [],\r\n\t\t\"publishedPortals\": [],\r\n\t\t\"systemVersion\": 1,\r\n\t\t\"id\": \"7b2166a6-cf3c-4f72-a04b-72c110c302d2\"\r\n\t}],\r\n\t\"USER\": [\"Administrator\",\r\n\t\"Default\",\r\n\t\"Developer\",\r\n\t\"Replicator\",\r\n\t\"apigateway\"]\r\n}" - }, "schema" : { "type" : "object", "additionalProperties" : { "type" : "object" } + }, + "examples" : { + "application/json" : "{\r\n\t\"GROUP\": [\"API-Gateway-Administrators\",\r\n\t\"API-Gateway-Providers\",\r\n\t\"Administrators\",\r\n\t\"Anonymous\",\r\n\t\"Developers\",\r\n\t\"Everybody\",\r\n\t\"Replicators\"],\r\n\t\"POLICY\": [{\r\n\t\t\"id\": \"GlobalLogInvocationPolicy\",\r\n\t\t\"names\": [{\r\n\t\t\t\"value\": \"Transaction logging\",\r\n\t\t\t\"locale\": \"English\"\r\n\t\t}],\r\n\t\t\"policyEnforcements\": [],\r\n\t\t\"policyScope\": \"GLOBAL\",\r\n\t\t\"global\": false,\r\n\t\t\"active\": false,\r\n\t\t\"systemPolicy\": false\r\n\t},\r\n\t{\r\n\t\t\"id\": \"3808db1a-8577-41e5-af6b-dcdac470524c\",\r\n\t\t\"names\": [{\r\n\t\t\t\"value\": \"Transport Policy\",\r\n\t\t\t\"locale\": \"English\"\r\n\t\t}],\r\n\t\t\"policyEnforcements\": [],\r\n\t\t\"policyScope\": \"GLOBAL\",\r\n\t\t\"global\": false,\r\n\t\t\"active\": false,\r\n\t\t\"systemPolicy\": false\r\n\t}],\r\n\t\"ALIAS\": [{\r\n\t\t\"name\": \"Myname\",\r\n\t\t\"value\": \"API Gateway N\"\r\n\t}],\r\n\t\"APPLICATION\": [{\r\n\t\t\"name\": \"Application\",\r\n\t\t\"owner\": \"Administrator\",\r\n\t\t\"identifiers\": [],\r\n\t\t\"siteURLs\": [],\r\n\t\t\"subscription\": false\r\n\t}],\r\n\t\"API\": [{\r\n\t\t\"apiName\": \"API Gateway\",\r\n\t\t\"isActive\": false,\r\n\t\t\"policies\": [],\r\n\t\t\"publishedPortals\": [],\r\n\t\t\"systemVersion\": 1,\r\n\t\t\"id\": \"1ac48246-80eb-44c8-8901-564e025dbbde\"\r\n\t},\r\n\t{\r\n\t\t\"apiName\": \"API Gateway Policy Management\",\r\n\t\t\"isActive\": false,\r\n\t\t\"owner\": \"Administrator\",\r\n\t\t\"policies\": [],\r\n\t\t\"publishedPortals\": [],\r\n\t\t\"systemVersion\": 1,\r\n\t\t\"id\": \"7b2166a6-cf3c-4f72-a04b-72c110c302d2\"\r\n\t}],\r\n\t\"USER\": [\"Administrator\",\r\n\t\"Default\",\r\n\t\"Developer\",\r\n\t\"Replicator\",\r\n\t\"apigateway\"]\r\n}" } }, "401" : { @@ -81,15 +81,15 @@ "responses" : { "200" : { "description" : "This status code indicates the count for the specified scope is success. The result will be a map of type and count for each type.", - "examples" : { - "application/json" : "{\r\n\t\"group\":12,\r\n\t\"policy\":13,\r\n\t\"user\":4,\r\n\t\"api\":5\r\n}" - }, "schema" : { "type" : "object", "additionalProperties" : { "type" : "integer", "format" : "int32" } + }, + "examples" : { + "application/json" : "{\r\n\t\"group\":12,\r\n\t\"policy\":13,\r\n\t\"user\":4,\r\n\t\"api\":5\r\n}" } }, "401" : { @@ -125,7 +125,7 @@ "types" : { "type" : "string", "description" : "List of allowed types that can be searched across API Gateway.", - "enum" : [ "USER", "GROUP", "USERS", "GROUPS", "ACCESSPROFILES", "LDAPGROUPS", "CDSGROUPS", "ASSERTION", "APPLICATION", "API", "ALIAS", "POLICY", "POLICY_ACTION", "PLAN", "PACKAGE", "ADMINISTRATOR_SETTING", "PORTAL_GATEWAY", "OAUTH2_SCOPE_DATA", "SUBSCRIPTION", "API_DOCUMENT", "APPROVAL_CONFIGURATION", "OUTBOUND_PROXY", "PROXY_BYPASS", "URL_ALIAS", "KEYSTORE", "TRUSTSTORE", "KERBEROS_SETTING", "JNDI_PROVIDER_ALIAS", "JMS_CONNECTION_ALIAS", "JMS_TRIGGER", "WEB_SERVICE_ENDPOINT_ALIAS", "ACCESS_CONTROL_LIST", "RULE", "MICROGATEWAY_GROUPS" ] + "enum" : [ "USER", "GROUP", "USERS", "GROUPS", "ACCESSPROFILES", "LDAPGROUPS", "CDSGROUPS", "ASSERTION", "APPLICATION", "API", "ALIAS", "POLICY", "POLICY_ACTION", "PLAN", "PACKAGE", "ADMINISTRATOR_SETTING", "PORTAL_GATEWAY", "OAUTH2_SCOPE_DATA", "SUBSCRIPTION", "API_DOCUMENT" ] }, "scope" : { "$ref" : "#/definitions/SearchField" @@ -160,13 +160,6 @@ "type" : "string", "description" : "Sort order for the records", "enum" : [ "ASC", "DESC" ] - }, - "teamFilter" : { - "type" : "array", - "description" : "This filter is used to specify list teams to apply on the search results.", - "items" : { - "type" : "string" - } } }, "description" : "This defines the request structure to search across API Gateway" @@ -182,11 +175,11 @@ "type" : "string", "description" : "Value of the corresponding field to be matched. User can use regular expression to specify the multiple values for single attributeName. For example to find \n 1. apiDescription contains \"weather\" or equals \"country\" , we can use {\"attributeName\" : \"apiDescription\", \"keyword\" : \".*weather.*|country\"}. \n 2. apiName starts with weather - {\"attributeName\" : \"apiName\", \"keyword\" : \"weather.*\"}. \n 3. api type is REST or SOAP - {\"attributeName\" : \"type\", \"keyword\" : \"REST|SOAP\"}." }, - "orTokenKey" : { - "type" : "boolean" - }, "rawFieldKey" : { "type" : "string" + }, + "orTokenKey" : { + "type" : "boolean" } }, "description" : "A scope is filtering criteria for the list of types specified in search.It is a key/value pair. key is the field name on which the search is being done and value contains the search string to be searched on the field specified.To get the field name for a type, user needs to access the corresponding API Gateway REST service to know about the fields available for a particular type. " diff --git a/apigatewayservices/APIGatewayServerInfoSwagger.json b/apigatewayservices/APIGatewayServerInfoSwagger.json deleted file mode 100644 index 2f4ccd4..0000000 --- a/apigatewayservices/APIGatewayServerInfoSwagger.json +++ /dev/null @@ -1,318 +0,0 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "This swagger doc contains API Definition of API gateway ServerInfo.", - "version" : "10.7", - "title" : "API Gateway Server Information" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "plain/text" ], - "produces" : [ "application/json" ], - "paths" : { - "/is/serverinfo" : { - "get" : { - "operationId" : "Server Information", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "Returns API Gateway server Information ", - "schema" : { - "$ref" : "#/definitions/ServerInfo" - } - } - } - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "APIGateway" : { - "type" : "object", - "properties" : { - "Policy Management - Threat Protection" : { - "type" : "string" - }, - "Policy Management - Gateway" : { - "type" : "string" - }, - "Application Management" : { - "type" : "string" - }, - "APIManagement" : { - "type" : "string" - } - } - }, - "IntegrationServer" : { - "type" : "object", - "properties" : { - "Product Code" : { - "type" : "string" - }, - "Product Version" : { - "type" : "string" - }, - "Concurrent Sessions" : { - "type" : "string" - }, - "Clustering" : { - "type" : "string" - }, - "Publish / Subscribe" : { - "type" : "string" - }, - "Adapter Runtime" : { - "type" : "string" - }, - "Remote Invoke" : { - "type" : "string" - }, - "Guaranteed Delivery" : { - "type" : "string" - }, - "Security Auditing" : { - "type" : "string" - }, - "Distributed Cache" : { - "type" : "string" - }, - "Enterprise Gateway" : { - "type" : "string" - } - } - }, - "LicenseDetail" : { - "type" : "object", - "properties" : { - "Sales Information" : { - "$ref" : "#/definitions/SalesInformation" - }, - "productInformation" : { - "$ref" : "#/definitions/ProductInformation" - }, - "integrationServer" : { - "$ref" : "#/definitions/IntegrationServer" - }, - "licenseInformation" : { - "$ref" : "#/definitions/LicenseInformation" - }, - "API Gateway" : { - "$ref" : "#/definitions/APIGateway" - } - } - }, - "LicenseInformation" : { - "type" : "object", - "properties" : { - "Price Unit" : { - "type" : "string" - }, - "Price Quantity" : { - "type" : "string" - }, - "TypeOfInstallation" : { - "type" : "string" - }, - "LicenseType" : { - "type" : "string" - }, - "ExtendedRights" : { - "type" : "string" - }, - "LicenseVersion" : { - "type" : "string" - }, - "Metering" : { - "type" : "string" - } - } - }, - "ProductInformation" : { - "type" : "object", - "properties" : { - "Expiration Date" : { - "type" : "string" - }, - "Operating System" : { - "type" : "string" - }, - "Product Code" : { - "type" : "string" - }, - "Product ID" : { - "type" : "string" - }, - "Product Name" : { - "type" : "string" - }, - "Product Version" : { - "type" : "string" - }, - "Usage" : { - "type" : "string" - }, - "RenewalDate" : { - "type" : "string" - }, - "HigherLevPosNr" : { - "type" : "string" - }, - "HigherLevProdCode" : { - "type" : "string" - }, - "HigherLevProdName" : { - "type" : "string" - } - } - }, - "SalesInformation" : { - "type" : "object", - "properties" : { - "Serial Number" : { - "type" : "string" - }, - "License Key" : { - "type" : "string" - }, - "Customer ID" : { - "type" : "string" - }, - "Customer Name" : { - "type" : "string" - }, - "ContractDetails" : { - "type" : "string" - }, - "ContractPosNumber" : { - "type" : "string" - }, - "License Type Details" : { - "type" : "string" - }, - "AutoCallHome" : { - "type" : "string" - } - } - }, - "ServerInfo" : { - "type" : "object", - "properties" : { - "systemInfo" : { - "$ref" : "#/definitions/SystemInfo" - }, - "LicenseDetails" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/LicenseDetail" - } - }, - "package" : { - "type" : "string" - }, - "services" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "allSvcsMinusStarts" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "allSvcsMinusShuts" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "loadok" : { - "type" : "string" - }, - "loaderr" : { - "type" : "string" - }, - "loadwarning" : { - "type" : "string" - }, - "startupServices" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "shutdownServices" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "version" : { - "type" : "string" - }, - "build" : { - "type" : "string" - }, - "description" : { - "type" : "string" - }, - "patch_nums" : { - "type" : "object" - }, - "jvm_version" : { - "type" : "string" - }, - "publisher" : { - "type" : "string" - }, - "time" : { - "type" : "object" - }, - "listACL" : { - "type" : "string" - }, - "message" : { - "type" : "string" - }, - "code" : { - "type" : "string" - } - } - }, - "SystemInfo" : { - "type" : "object", - "properties" : { - "CPU.type" : { - "type" : "string" - }, - "Hostname" : { - "type" : "string" - }, - "OS.Service.Pack" : { - "type" : "string" - }, - "HW.memory[GB]" : { - "type" : "string" - }, - "OS.Name" : { - "type" : "string" - }, - "OS.Release" : { - "type" : "string" - }, - "CPU.cores" : { - "type" : "string" - } - } - } - } -} \ No newline at end of file diff --git a/apigatewayservices/APIGatewayServiceManagement.json b/apigatewayservices/APIGatewayServiceManagement.json index 16c22b3..1a6cee6 100644 --- a/apigatewayservices/APIGatewayServiceManagement.json +++ b/apigatewayservices/APIGatewayServiceManagement.json @@ -1,5244 +1,4947 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "API Gateway Service Management Service allows you to manage the APIs in the API Gateway. Any user with the 'Manage APIs' functional privilege can manage the APIs in the API Gateway. By default, the users who are part of either API-Gateway-Providers or API-Gateway-Administrators groups will have this privilege.\n\nAPI Gateway supports four types of APIs - REST APIs, SOAP APIs, WebSocket APIs and OData APIs. REST APIs can be created by providing the swagger (file/url), openAPI (file/url), raml (file/url) or can be created from scratch. SOAP APIs can be created using the WSDL (file/url). If the API definitions has reference schemas, then an archive containing all the definitions can be provided as an input. WebSocket APIs can be created from scratch. OData APIs can be created using their service document or metadata document url.\n\nThis service provides you with the options to create, update, read and delete of all the above API types.\n\nAn API can either be in an Active or an InActive state. An Active state indicates that the API is available for consumers. The users can use this service to activate or deactivate the API. Post activation, API Gateway generates 'Gateway Endpoints' which can be used by the API consumers to access the API. Generally API consumers use their applications to consume the APIs.\n\nThis service can also be used to manage the API Scopes. An API Scope is a collection of resources or operations in the API. Users can create multiple scopes for a single API.\n\nOnce the API is created, users can enforce the access restrictions and other rules on the API by add the policies to the API. Policies can be attached to REST, SOAP and OData APIs. Refer to the Policy Management API documentation for more details on the policies. Refer to the Document Management API documentation for more details on attaching documents to an API.\n\nThis service can also be used to publish/unpublish the APIs to/from a service registry. An API in an active state can be registered (published) to one or more service registries.", - "version" : "10.7", - "title" : "API Gateway Service Management Service" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "paths" : { - "/apis" : { - "get" : { - "description" : "Get all APIs or subset of APIs", - "operationId" : "getAPIs", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiIds", - "in" : "query", - "description" : "API Ids for the API to be retrieved", - "required" : false, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864,353bd366-47d4-4703-aecf-9cb40cdcc345" - }, { - "name" : "from", - "in" : "query", - "description" : "Starting index from the list of APIs to be retrieved", - "required" : false, - "type" : "integer" - }, { - "name" : "size", - "in" : "query", - "description" : "Number of APIs to be retrieved", - "required" : false, - "type" : "integer" - } ], - "responses" : { - "200" : { - "description" : "Returns the list of all APIs", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": [\r\n {\r\n \"api\": {\r\n \"apiName\": \"ChuckNorrisAPI\",\r\n \"apiVersion\": \"v2\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 2,\r\n \"id\": \"46df4227-a100-486c-9580-0bf388ec6ec7\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n },\r\n {\r\n \"api\": {\r\n \"apiName\": \"ChuckNorrisAPI\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"teams\": [\r\n {\r\n \"id\": \"Administrators\",\r\n \"name\": \"Administrators\",\r\n \"canDelete\": \"false\"\r\n },\r\n {\r\n \"id\": \"Default\",\r\n \"name\": \"Default\",\r\n \"canDelete\": \"true\"\r\n }\r\n ]\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/APIResponseDelete" - } - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "This REST operation is used to create an API by importing a file, url or from scratch", - "operationId" : "createAPI", - "consumes" : [ "application/json", "multipart/form-data" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "file", - "in" : "formData", - "description" : "Input swagger / raml / wsdl file to be imported", - "required" : true, - "type" : "file", - "x-example" : "petstore.json" - }, { - "name" : "apiName", - "in" : "formData", - "description" : "Name of the API", - "required" : true, - "type" : "string", - "x-example" : "Swagger Petstore" - }, { - "name" : "apiDescription", - "in" : "formData", - "description" : "Description of the API", - "required" : false, - "type" : "string", - "x-example" : "This is a sample server Petstore server" - }, { - "name" : "apiVersion", - "in" : "formData", - "description" : "Version of the API", - "required" : false, - "type" : "string", - "x-example" : "V1" - }, { - "name" : "type", - "in" : "formData", - "description" : "Input file type", - "required" : true, - "type" : "string", - "x-example" : "swagger", - "enum" : [ "swagger", "raml", "wsdl", "openapi" ] - }, { - "name" : "rootFileName", - "in" : "formData", - "description" : "Name of the main file in the zip. Required only when the input file is zip format", - "required" : false, - "type" : "string", - "x-example" : "mainFile.wsdl" - }, { - "in" : "body", - "name" : "body", - "description" : "API request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/InputAPI" - }, - "x-examples" : { - "application/json" : "{\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\",\r\n \r\n\t\"teams\": [\r\n\t\t{\r\n\t\t\t\"id\": \"Default\"\r\n\t\t}\r\n\t]\r\n }" - } - } ], - "responses" : { - "200" : { - "description" : "Returns the created API object", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ],\r\n \"teams\": [\r\n {\r\n \"id\": \"Administrators\",\r\n \"name\": \"Administrators\",\r\n \"canDelete\": \"false\"\r\n },\r\n {\r\n \"id\": \"Default\",\r\n \"name\": \"Default\",\r\n \"canDelete\": \"true\"\r\n }\r\n ] }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponseCreate" - } - }, - "400" : { - "description" : "This status code shows when the user missed the mandatory fields like type, file/url/apiDefinition in the request or provide a invalid request body" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "Delete the inactive APIs", - "operationId" : "deleteAPIs", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiIds", - "in" : "query", - "description" : "API Ids for the APIs to be deleted. Multiple API ids combined by comma", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864,353bd366-47d4-4703-aecf-9cb40cdcc854" - }, { - "name" : "forceDelete", - "in" : "query", - "description" : "Flag for force delete. Required when API is associated with some applications", - "required" : false, - "type" : "boolean", - "default" : true, - "x-example" : true - } ], - "responses" : { - "200" : { - "description" : "Returns the apiId along with the error when unsuccessful", - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/APIResponseDelete" - } - } - }, - "400" : { - "description" : "This response code returns when the mandatory parameter apiIds is missing in the query parameter" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "Success" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/versions" : { - "get" : { - "description" : "Retrieve all the versions of the API", - "operationId" : "getVersions", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to retrieve the versions", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the API versions", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponseDelete" - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "Create a new version of an API and retain applications if required", - "operationId" : "createVersion", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be versioned", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "in" : "body", - "name" : "body", - "description" : "Create version request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/InputVersion" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"newApiVersion\" : \"v2\",\r\n\t\"retainApplications\" : true\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "Return the newly created version of the API", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponse" - } - }, - "400" : { - "description" : "This status code returns when the specified api is not the latest version or if the newApiVersion is empty" - }, - "404" : { - "description" : "Not Found" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}" : { - "get" : { - "description" : "Retrieve an API based on the API id.", - "operationId" : "getAPI", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be retrieved", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "format", - "in" : "query", - "description" : "Output format of the API. If the value is 'swagger', you get a API definition in swagger format. If the value is 'raml', you get a raml document. If the value is 'openapi', you get a open API document. If the value is 'odata', you get a zip file holding the OData metadata and service document.", - "required" : false, - "type" : "string", - "x-example" : "raml" - }, { - "name" : "url", - "in" : "query", - "description" : "User selected endpoint for API definition in swagger/raml format.", - "required" : false, - "type" : "string", - "x-example" : "http://hostname:5555/gateway/servicename/1.0" - } ], - "responses" : { - "200" : { - "description" : "If the format is swagger, returns the swagger content in json and raml returns the raml content in yaml. If the format is openapi, returns the open api content in json. If the format is odata, you get a zip file holding the OData metadata and service document.", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n \r\n }\r\n ],\r\n \"teams\": [\r\n {\r\n \"id\": \"Administrators\",\r\n \"name\": \"Administrators\",\r\n \"canDelete\": \"false\"\r\n },\r\n {\r\n \"id\": \"Default\",\r\n \"name\": \"Default\",\r\n \"canDelete\": \"true\"\r\n }\r\n ] }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponseGetAPI" - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "This REST operation is used to update an API by importing a file, url or inline.\n\nWhile updating the API, visibility of the operations can be set by enabling or disabling the operations. Disabled operations will not be exposed to the customers. By default, all the operations are exposed to the consumers.\n\nWhen updating the API using file or url, API Gateway overwrite the resources/operations for the API. But it will retain the maturity state, scopes, visibility and if API mocking is enabled, then default mocked responses, mocked conditions and IS services will also be retained.", - "operationId" : "updateAPI", - "consumes" : [ "application/json", "multipart/form-data" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be updated", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "file", - "in" : "formData", - "description" : "Input swagger / raml / wsdl file", - "required" : true, - "type" : "file", - "x-example" : "petstore.json" - }, { - "name" : "apiName", - "in" : "formData", - "description" : "Name of the API", - "required" : true, - "type" : "string", - "x-example" : "Swagger Petstore" - }, { - "name" : "apiDescription", - "in" : "formData", - "description" : "Description of the API", - "required" : false, - "type" : "string", - "x-example" : "This is a sample server Petstore server" - }, { - "name" : "apiVersion", - "in" : "formData", - "description" : "Version of the API", - "required" : false, - "type" : "string", - "x-example" : "V1" - }, { - "name" : "type", - "in" : "formData", - "description" : "Input file type", - "required" : true, - "type" : "string", - "x-example" : "swagger", - "enum" : [ "swagger", "raml", "wsdl", "openapi" ] - }, { - "name" : "rootFileName", - "in" : "formData", - "description" : "Name of the main file in the zip. Required when the input file is zip format", - "required" : false, - "type" : "string", - "x-example" : "mainFile.wsdl" - }, { - "in" : "body", - "name" : "body", - "description" : "API request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/GatewayAPI" - }, - "x-examples" : { - "application/json" : "{\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }" - } - } ], - "responses" : { - "200" : { - "description" : "Returns the updated API object", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponseCreate" - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "400" : { - "description" : "This status code shows when the user missed the mandatory fields like type, file/url/apiDefinition in the request or provide a invalid request body" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "Delete the inactive API", - "operationId" : "deleteAPI", - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be deleted", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "forceDelete", - "in" : "query", - "description" : "Flag for force delete. Required when API is associated with some applications", - "required" : false, - "type" : "boolean", - "default" : true, - "x-example" : true - } ], - "responses" : { - "200" : { - "description" : "Returns the apiId along with the error when unsuccessful", - "schema" : { - "$ref" : "#/definitions/APIResponseDelete" - } - }, - "400" : { - "description" : "This response code returns when the deleted API is published to API portal or in active state" - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API" - }, - "204" : { - "description" : "Success" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/activate" : { - "put" : { - "description" : "Activate an API so that API is exposed to consumers", - "operationId" : "activateAPI", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be activated", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the API object after successful activation", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponse" - } - }, - "400" : { - "description" : "This status code shows when the API is already in activated state or when no operations/resources are present or none are enabled" - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/deactivate" : { - "put" : { - "description" : "Deactivate an API so that API is not exposed to consumers", - "operationId" : "deactivateAPI", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be deactivated", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the API object after successful deactivation", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponse" - } - }, - "400" : { - "description" : "This status code shows when the API is already in de-activated state" - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/publish" : { - "put" : { - "description" : "This REST operation is used to publish API to the registered API Portal", - "operationId" : "publishAPI", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be published", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "in" : "body", - "name" : "body", - "description" : "API publish request payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/InputPublish" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"portalGatewayId\" : \"69bac781-6c60-4db3-86f7-50af3ec4963a\",\r\n\t\"communities\" : [\"3bdf8005-5685-3ef5-b132-de4681963fb6\"],\r\n\t\"endpoints\" : [\"https://api.chucknorris.io/jokes\"]\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "Returns the API object after successful publish", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"vendorExtensions\": {},\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"parameters\": [],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"definitions\": {}\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorrisAPI\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"879068cd-8628-4f2a-b903-4e6613ca12ba\"\r\n ],\r\n \"referencedFiles\": {\r\n \"ChuckNorrisAPI.json\": \"{\\r\\n \\\"swagger\\\": \\\"2.0\\\",\\r\\n \\\"info\\\": {\\r\\n \\\"description\\\": \\\"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\\\",\\r\\n \\\"title\\\": \\\"ChuckNorrisAPI\\\",\\r\\n \\\"version\\\": \\\"1.0\\\"\\r\\n },\\r\\n \\\"host\\\": \\\"api.chucknorris.io\\\",\\r\\n \\\"basePath\\\": \\\"/jokes\\\",\\r\\n \\\"schemes\\\": [\\r\\n \\\"https\\\"\\r\\n ],\\r\\n \\\"paths\\\": {\\r\\n \\\"/random\\\": {\\r\\n \\\"get\\\": {\\r\\n \\\"summary\\\": \\\"GET\\\",\\r\\n \\\"deprecated\\\": false,\\r\\n \\\"produces\\\": [\\r\\n \\\"application/json\\\"\\r\\n ],\\r\\n \\\"description\\\": \\\"\\\",\\r\\n \\\"operationId\\\": \\\"GET\\\"\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\"\r\n },\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2017-03-13 09:38:30 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"25fb937a-8360-41ab-8be5-987b14fe631d\",\r\n \"oauth2ScopeName\": \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponseCreate" - } - }, - "400" : { - "description" : "This status code shows when the user missed the mandatory portalGatewayId or invalid portalGatewayId in the request body" - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/unpublish" : { - "put" : { - "description" : "Unpublish API from the registered API Portal", - "operationId" : "unpublishAPI", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be unpublished", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the API object after successful unpublish", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"vendorExtensions\": {},\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"parameters\": [],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"definitions\": {}\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorrisAPI\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"879068cd-8628-4f2a-b903-4e6613ca12ba\"\r\n ],\r\n \"referencedFiles\": {\r\n \"ChuckNorrisAPI.json\": \"{\\r\\n \\\"swagger\\\": \\\"2.0\\\",\\r\\n \\\"info\\\": {\\r\\n \\\"description\\\": \\\"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\\\",\\r\\n \\\"title\\\": \\\"ChuckNorrisAPI\\\",\\r\\n \\\"version\\\": \\\"1.0\\\"\\r\\n },\\r\\n \\\"host\\\": \\\"api.chucknorris.io\\\",\\r\\n \\\"basePath\\\": \\\"/jokes\\\",\\r\\n \\\"schemes\\\": [\\r\\n \\\"https\\\"\\r\\n ],\\r\\n \\\"paths\\\": {\\r\\n \\\"/random\\\": {\\r\\n \\\"get\\\": {\\r\\n \\\"summary\\\": \\\"GET\\\",\\r\\n \\\"deprecated\\\": false,\\r\\n \\\"produces\\\": [\\r\\n \\\"application/json\\\"\\r\\n ],\\r\\n \\\"description\\\": \\\"\\\",\\r\\n \\\"operationId\\\": \\\"GET\\\"\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\"\r\n },\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2017-03-13 09:38:30 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"25fb937a-8360-41ab-8be5-987b14fe631d\",\r\n \"oauth2ScopeName\": \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponseCreate" - } - }, - "400" : { - "description" : "This status code shows when the user missed the mandatory portalGatewayId or invalid portalGatewayId in the request body" - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/mock/enable" : { - "put" : { - "description" : "In API Gateway, you can mock an API implementation. API Gateway lets you mock an API by simulating the native service. API Mocking is useful feature in API first approach, where in the provider may choose to expose the mocked API to the consumers when the actual API doesn't exist or isn't complete. \n In API Gateway, when you enable mocking for an API, a default mock response is created for each combination of resource, operation, status code and content-type based on the example and schema set in the API definition. As an API Provider, you can add or modify the default mock responses.\n\nYou can specify conditions at the operation level and configure IS services at the API level for a mocked API in the update API operation. At runtime, when the mocked API is invoked instead of calling the native service, API Gateway returns the mocked response to the consumer based on the below priorities:\n1. If any of the conditions for the invoked operation satisfies, API Gateway returns the associated mocked response.\n2. If no condition is specified or none of the condition for the invoked operation is satisfied, then API Gateway will return \na. the response from an IS service, if an IS service is configured b. default mocked response, if no IS services are configured", - "operationId" : "enableMockAPI", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be activated", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "retainDefaultMockResponses", - "in" : "query", - "description" : "Flag to retain generated mocked responses. When this is set to true, default mocked responses will be retained. If it's set to false, new default mocked responses will be generated using the examples, schema in the API", - "required" : false, - "type" : "boolean", - "default" : false, - "x-example" : true - } ], - "responses" : { - "200" : { - "description" : "Returns the API object after successfully enabling mocking of an API", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"API to demonstrate mocking functionality in international developers day\",\r\n \"version\": \"v1\",\r\n \"title\": \"API_MOCKING\"\r\n },\r\n \"host\": \"localhost\",\r\n \"schemes\": [\r\n \"http\"\r\n ],\r\n \"consumes\": [\r\n \"application/json\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/conditionBasedMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Configure condition and mocked response\",\r\n \"operationId\": \"conditionBasedMockedResponse\",\r\n \"produces\": [\r\n \"text/plain\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\",\r\n \"content\": {\r\n \"text/plain\": {\r\n \"example\": \"No condition evaluates to true. \\nSo API-Gateway sent this default response.\"\r\n }\r\n }\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"text/plain\": \"No condition evaluates to true. \\nSo API-Gateway sent this default response.\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/conditionBasedMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/customESBMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Configure custom ESB mocked response\",\r\n \"operationId\": \"customESBMockedResponse\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\"\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/customESBMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/dynamicMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Dynamic mocked response set\",\r\n \"operationId\": \"dynamicMockedResponse\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\"\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/dynamicMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/staticMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Default mocked response from example\",\r\n \"operationId\": \"generateFromExample\",\r\n \"produces\": [\r\n \"application/json\",\r\n \"application/xml\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response generated from example\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"example\": \"{\\\"resource\\\" : \\\"/generateFromExample\\\",\\\"description\\\" : \\\"Default mocked response from example for status code 200\\\"}\"\r\n },\r\n \"application/xml\": {\r\n \"example\": \"/generateFromExampleDefault mocked response from example for status code 200\"\r\n }\r\n }\r\n },\r\n \"201\": {\r\n \"description\": \"201 response generated from schema\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Pet\"\r\n }\r\n },\r\n \"application/xml\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Pet\"\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"{\\\"resource\\\" : \\\"/generateFromExample\\\",\\\"description\\\" : \\\"Default mocked response from example for status code 200\\\"}\",\r\n \"application/xml\": \"/generateFromExampleDefault mocked response from example for status code 200\"\r\n }\r\n },\r\n \"201\": {\r\n \"responseBody\": {\r\n \"application/json\": \"{\\\"birthday\\\":2059397944,\\\"name\\\":\\\"\\\"}\",\r\n \"application/xml\": \"921604684\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/staticMockedResponse\",\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"http://localhost\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {\r\n \"Pet\": {\r\n \"required\": [\r\n \"name\"\r\n ],\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"birthday\": {\r\n \"type\": \"integer\",\r\n \"format\": \"int32\"\r\n },\r\n \"name\": {\r\n \"type\": \"string\"\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"http://localhost\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"APIMocking\",\r\n \"apiVersion\": \"v1\",\r\n \"apiDescription\": \"API to demonstrate mocking functionality in international developers day\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"19773e29-2838-4efc-aa04-793b48f4d22b\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-11-01 13:44:58 GMT\",\r\n \"systemVersion\": 1,\r\n \"mockService\": {\r\n \"enableMock\": true\r\n },\r\n \"id\": \"afd8eb5e-bba8-447b-8e28-76aac23ba074\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"v1\",\r\n \"apiId\": \"afd8eb5e-bba8-447b-8e28-76aac23ba074\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponse" - } - }, - "400" : { - "description" : "This status code shows when the API is already in activated state or when invalid json or xml is provided in the example part of the operation" - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/mock/disable" : { - "put" : { - "description" : "Once API is disabled from mocking capability, at runtime all the API invocations are redirected to the native service instead of sending the mocked response", - "operationId" : "disableMockAPI", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be deactivated", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the API object after successful disabling mocking of an API", - "examples" : { - "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"API to demonstrate mocking functionality in international developers day\",\r\n \"version\": \"v1\",\r\n \"title\": \"API_MOCKING\"\r\n },\r\n \"host\": \"localhost\",\r\n \"schemes\": [\r\n \"http\"\r\n ],\r\n \"consumes\": [\r\n \"application/json\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/conditionBasedMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Configure condition and mocked response\",\r\n \"operationId\": \"conditionBasedMockedResponse\",\r\n \"produces\": [\r\n \"text/plain\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\",\r\n \"content\": {\r\n \"text/plain\": {\r\n \"example\": \"No condition evaluates to true. \\nSo API-Gateway sent this default response.\"\r\n }\r\n }\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"text/plain\": \"No condition evaluates to true. \\nSo API-Gateway sent this default response.\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/conditionBasedMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/customESBMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Configure custom ESB mocked response\",\r\n \"operationId\": \"customESBMockedResponse\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\"\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/customESBMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/dynamicMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Dynamic mocked response set\",\r\n \"operationId\": \"dynamicMockedResponse\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\"\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/dynamicMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/staticMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Default mocked response from example\",\r\n \"operationId\": \"generateFromExample\",\r\n \"produces\": [\r\n \"application/json\",\r\n \"application/xml\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response generated from example\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"example\": \"{\\\"resource\\\" : \\\"/generateFromExample\\\",\\\"description\\\" : \\\"Default mocked response from example for status code 200\\\"}\"\r\n },\r\n \"application/xml\": {\r\n \"example\": \"/generateFromExampleDefault mocked response from example for status code 200\"\r\n }\r\n }\r\n },\r\n \"201\": {\r\n \"description\": \"201 response generated from schema\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Pet\"\r\n }\r\n },\r\n \"application/xml\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Pet\"\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"{\\\"resource\\\" : \\\"/generateFromExample\\\",\\\"description\\\" : \\\"Default mocked response from example for status code 200\\\"}\",\r\n \"application/xml\": \"/generateFromExampleDefault mocked response from example for status code 200\"\r\n }\r\n },\r\n \"201\": {\r\n \"responseBody\": {\r\n \"application/json\": \"{\\\"birthday\\\":2059397944,\\\"name\\\":\\\"\\\"}\",\r\n \"application/xml\": \"921604684\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/staticMockedResponse\",\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"http://localhost\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {\r\n \"Pet\": {\r\n \"required\": [\r\n \"name\"\r\n ],\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"birthday\": {\r\n \"type\": \"integer\",\r\n \"format\": \"int32\"\r\n },\r\n \"name\": {\r\n \"type\": \"string\"\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"http://localhost\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"APIMocking\",\r\n \"apiVersion\": \"v1\",\r\n \"apiDescription\": \"API to demonstrate mocking functionality in international developers day\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"19773e29-2838-4efc-aa04-793b48f4d22b\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-11-01 13:44:58 GMT\",\r\n \"systemVersion\": 1,\r\n \"mockService\": {\r\n \"enableMock\": false\r\n },\r\n \"id\": \"afd8eb5e-bba8-447b-8e28-76aac23ba074\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"v1\",\r\n \"apiId\": \"afd8eb5e-bba8-447b-8e28-76aac23ba074\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponse" - } - }, - "400" : { - "description" : "This status code shows when the API is already in activated state or in mocked state" - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/implementation" : { - "put" : { - "description" : "An API Provider tool can use this operation to update the API in APIGateway after completion of its implementation in their end", - "operationId" : "notifyAPIImplementation", - "consumes" : [ "multipart/form-data" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to be updated", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "nativeBaseURL", - "in" : "query", - "description" : "Base URL of the native API", - "required" : false, - "type" : "string", - "x-example" : "http://localhost:8080/myservice/v1" - }, { - "name" : "overwriteAlias", - "in" : "query", - "description" : "Flag to replace the endpoint alias that is used in the routing policy of the API with the given value of 'nativeBaseURL' parameter.", - "required" : false, - "type" : "boolean", - "x-example" : true - }, { - "name" : "maturityState", - "in" : "query", - "description" : "Value of the 'maturity state' attribute of the API. The 'maturity state' of the API can be set to its one of possible value (from its defines values in extended settings configuration) to depict the completion its implementation", - "required" : false, - "type" : "string", - "x-example" : "Production" - } ], - "responses" : { - "200" : { - "description" : "Returns the updated API object", - "schema" : { - "$ref" : "#/definitions/APIResponse" - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "400" : { - "description" : "This status code shows when the user missed the mandatory fields like type, file/url/apiDefinition in the request or provide a invalid request body" - }, - "401" : { - "description" : "" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/applications" : { - "get" : { - "description" : "Retrieves the list of registered applications of an API", - "operationId" : "getApplications", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to find the associated applications", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the list of associated applications", - "examples" : { - "application/json" : "{\r\n \"applications\": [\r\n {\r\n \"name\": \"app1\",\r\n \"description\": null,\r\n \"contactEmails\": [],\r\n \"identifiers\": [],\r\n \"siteURLs\": [],\r\n \"version\": \"1.0\",\r\n \"id\": \"ae48cd69-421e-4bdf-a4d0-e86996a78f68\",\r\n \"created\": \"2017-03-13 13:12:03 GMT\",\r\n \"lastupdated\": null,\r\n \"consumingAPIs\": [\r\n \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n ],\r\n \"accessTokens\": {\r\n \"apiAccessKey_credentials\": {\r\n \"apiAccessKey\": \"cec4b46b-3569-4f73-a561-172dd67c182a\",\r\n \"expirationInterval\": null\r\n },\r\n \"oauth_credentials\": {\r\n \"clientID\": \"40b78ed3-d171-4bd3-99db-51dd2fa71753\",\r\n \"clientSecret\": \"024b9525-6526-45c8-a66c-d192442064e1\",\r\n \"clientName\": \"app1-6b753c2a-0567-462d-a4ea-1b143ab7a381\",\r\n \"scopes\": [\r\n \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n ],\r\n \"token_lifetime\": \"3600\",\r\n \"token_refresh_limit\": \"0\",\r\n \"redirect_uris\": [\r\n \"https://placeholder_redirect_uri\"\r\n ],\r\n \"Type\": \"confidential\"\r\n }\r\n }\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Application" - } - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/source" : { - "get" : { - "description" : "Download the API definition that was used to create the API. This is applicable only for SOAP APIs.", - "operationId" : "getSource", - "produces" : [ "multipart/mixed" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to download the source content", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the source files along with the root file name", - "examples" : { - "multipart/mixed" : "Message-ID: <296841806.5.1489555643275.JavaMail.MRIZ@MCMRIZ01>\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; \r\n\tboundary=\"----=_Part_4_1098332532.1489555643274\"\r\n\r\n------=_Part_4_1098332532.1489555643274\r\ncontent-type: application/zip\r\nContent-Disposition: attachment; filename=\"echoService.zip\"\r\n\r\nfile content in zip format\r\n------=_Part_4_1098332532.1489555643274\r\ncontent-type: text/plain\r\nContent-Disposition: inline; name=\"rootFileName\"\r\n\r\necho.wsdl\r\n------=_Part_4_1098332532.1489555643274--" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Multipart" - } - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "400" : { - "description" : "This status code returns when the specified API is not a SOAP API" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/globalPolicies" : { - "get" : { - "description" : "Retrieves the list of active global policies applicable to this API", - "operationId" : "getAssociatedGlobalPolicies", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to find the list of applicable global policies", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the list of global policy names", - "examples" : { - "application/json" : "{\r\n \"globalPolicies\": [\r\n \"GlobalLogInvocationPolicy\"\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/APIResponseGetGlobalPolicies" - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/scopes" : { - "get" : { - "description" : "An API Scope is a collection of resources or operations in an API. Users can create multiple scopes for a single API. Policies can be attached to an API level or scope level. This method retrieves the scopes of an API.\n\nYou can create, modify or delete the scopes in the update API operation using PUT /api/{apiId}", - "operationId" : "getScopes", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to retrieve the versions", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns API scopes", - "examples" : { - "application/json" : "{\r\n \"scopeReferences\": [\r\n {\r\n \"references\": [\r\n {\r\n \"resourcePath\": \"/random\",\r\n \"supportedOperations\": []\r\n }\r\n ],\r\n \"scope\": {\r\n \"name\": \"Get_Scopes\",\r\n \"description\": \"Dummy description of the scope\",\r\n \"policies\": [\r\n \"db1a42f4-e038-4a1b-82f4-8fee6fbd5687\"\r\n ]\r\n }\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ScopeResourceIndex" - } - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/scopes/{scopeName}" : { - "get" : { - "description" : "Retrieve scopes of an API based on the scope name", - "operationId" : "getScopeByScopeName", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to retrieve the versions", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "scopeName", - "in" : "path", - "description" : "Name of the scope", - "required" : true, - "type" : "string", - "x-example" : "getScope" - } ], - "responses" : { - "200" : { - "description" : "Returns API scopes", - "examples" : { - "application/json" : "{\r\n \"scopeReferences\": [\r\n {\r\n \"references\": [\r\n {\r\n \"resourcePath\": \"/random\",\r\n \"supportedOperations\": []\r\n }\r\n ],\r\n \"scope\": {\r\n \"name\": \"Get_Scopes\",\r\n \"description\": \"Dummy description of the scope\",\r\n \"policies\": [\r\n \"db1a42f4-e038-4a1b-82f4-8fee6fbd5687\"\r\n ]\r\n }\r\n }\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ScopeResourceIndex" - } - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway or scopeName is not found in the list of scopes" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/apis/{apiId}/providerspecification" : { - "get" : { - "description" : "Downloads the provider specification of REST and SOAP based APIs. Provider specification is nothing but, the specification file (in swagger or wsdl format) with out the concrete API Gateway endpoint and contains all resources/methods/operation irrespective of whether they are exposed to consumer", - "operationId" : "downloadProviderSpecification", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "path", - "description" : "API Id for the API to retrieve the versions", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - }, { - "name" : "format", - "in" : "query", - "description" : "Output format of the API specification. For REST APIs the value is 'swagger'; for SOAP APIs use the value as 'wsdl'", - "required" : true, - "type" : "string", - "x-example" : "swagger", - "enum" : [ "swagger", "wsdl" ] - } ], - "responses" : { - "200" : { - "description" : "If the format is swagger, returns the swagger content in json. If the format is wsdl, returns the wsdl content in xml.", - "schema" : { - "$ref" : "#/definitions/APIResponseGetAPI" - } - }, - "404" : { - "description" : "This status code indicates that the apiId specified is not found in the API Gateway" - }, - "401" : { - "description" : "" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/serviceRegistry/unpublish" : { - "put" : { - "description" : "Unpublish one or more APIs from one or more service registries", - "operationId" : "unpublishFromServiceRegistry", - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "Service registry unpublish payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/InputServiceRegistryUnpublish" - }, - "x-examples" : { - "application/json" : "{\r\n \"unpublishInfo\": {\r\n \"serviceRegistryIds\": [\r\n \"aec973cd-1e4c-4a93-93a4-950e32d39156\"\r\n ],\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\"\r\n },\r\n \"forceUnpublish\": false\r\n}ds" - } - } ], - "responses" : { - "200" : { - "description" : "Returns the service registry unpublish response", - "examples" : { - "application/json" : "{\r\n \"unpublishResponse\": {\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\",\r\n \"apiName\": \"CalcService\",\r\n \"apiVersion\": \"10.3\",\r\n \"serviceRegistryUnpublishResponses\": [\r\n {\r\n \"serviceRegistryId\": \"aec973cd-1e4c-4a93-93a4-950e32d39156\",\r\n \"serviceRegistryName\": \"MyServiceConsul\",\r\n \"success\": true,\r\n \"description\": \" Unpublish successful\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/ServiceRegistryUnpublishPutResponse" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/serviceRegistry/publish" : { - "get" : { - "description" : "Retrieve the service registry publish information for the API", - "operationId" : "getServiceRegistryPublishInfo", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "query", - "description" : "API Id of the API for which ServiceRegistryPublishInfo is to be fetched", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the service registry publish info for the API", - "examples" : { - "application/json" : "{\r\n \"publishInfo\": {\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\",\r\n \"serviceRegistryPublishInfo\": [\r\n {\r\n \"serviceRegistryId\": \"aec973cd-1e4c-4a93-93a4-950e32d39156\",\r\n \"status\": \"PUBLISHED\",\r\n \"name\": \"MyServiceConsul\",\r\n \"gatewayEndpoints\": [\r\n {\r\n \"gatewayEndpoint\": \"http://localhost:5555/ws/calc/1\",\r\n \"status\": \"PUBLISHED\"\r\n },\r\n {\r\n \"gatewayEndpoint\": \"http://localhost:1111/ws/calc/1\",\r\n \"status\": \"NEW\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/ServiceRegistryPublishGetResponse" - } - }, - "404" : { - "description" : "This status code indicates that Publish Info for the apiId specified is not found in API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "Publish one or more APIs to one or more service registries", - "operationId" : "publishToServiceRegistry", - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "Service registry publish payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/InputServiceRegistryPublish" - }, - "x-examples" : { - "application/json" : "{\r\n \"publishInfo\": {\r\n \"serviceRegistryPublishInfo\": [\r\n {\r\n \"gatewayEndpoints\": [\r\n {\r\n \"gatewayEndpoint\": \"http://localhost:5555/ws/calc/1\"\r\n }\r\n ],\r\n \"serviceRegistryId\": \"aec973cd-1e4c-4a93-93a4-950e32d39156\"\r\n }\r\n ],\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\"\r\n }\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "Returns the status of the publish operations given in the request.", - "examples" : { - "application/json" : "{\r\n \"publishResponse\": {\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\",\r\n \"apiName\": \"CalcService\",\r\n \"apiVersion\": \"10.3\",\r\n \"serviceRegistryPublishResponses\": [\r\n {\r\n \"serviceRegistryId\": \"aec973cd-1e4c-4a93-93a4-950e32d39156\",\r\n \"serviceRegistryName\": \"MyServiceConsul\",\r\n \"status\": \"PUBLISHED\",\r\n \"gatewayEndpoints\": [\r\n {\r\n \"gatewayEndpoint\": \"http://localhost:5555/ws/calc/1\",\r\n \"status\": \"PUBLISHED\",\r\n }\r\n ],\r\n \"success\": true,\r\n \"description\": \"Publish successful\"\r\n }\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/ServiceRegistryPublishPutResponse" - } - }, - "400" : { - "description" : "This status code indicates an invalid request body" - }, - "404" : { - "description" : "This status code indicates that API with given apiId is not found in API Gateway" - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/integrationServer/publish" : { - "get" : { - "description" : "Retrieve the integration server publish information for the API. Only REST and SOAP APIs are supported.", - "operationId" : "getIntegrationServerPublishInfo", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiId", - "in" : "query", - "description" : "API Id of the API for which IntegrationServerPublishInfo is to be fetched", - "required" : true, - "type" : "string", - "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" - } ], - "responses" : { - "200" : { - "description" : "Returns the integration server publish info for the API", - "schema" : { - "$ref" : "#/definitions/ServiceRegistryPublishGetResponse" - } - }, - "404" : { - "description" : "This status code indicates that Publish Info for the apiId specified is not found in API Gateway" - }, - "401" : { - "description" : "" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "Publish one or more APIs to one or more integration servers. Only REST and SOAP APIs are supported.", - "operationId" : "publishToIntegrationServer", - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "Integration server publish payload", - "required" : true, - "schema" : { - "$ref" : "#/definitions/InputIntegrationServerPublish" - } - } ], - "responses" : { - "200" : { - "description" : "Returns the status of the publish operations given in the request.", - "schema" : { - "$ref" : "#/definitions/ServiceRegistryPublishPutResponse" - } - }, - "400" : { - "description" : "This status code indicates an invalid request body" - }, - "404" : { - "description" : "This status code indicates that API with given apiId is not found in API Gateway" - }, - "401" : { - "description" : "" - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "API" : { - "type" : "object", - "discriminator" : "type", - "properties" : { - "type" : { - "type" : "string" - }, - "description" : { - "type" : "string" - }, - "title" : { - "type" : "string" - }, - "version" : { - "type" : "string" - }, - "uri" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "type" : "string" - } - }, - "serviceRegistryDisplayName" : { - "type" : "string" - } - } - }, - "AbstractParameter" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - } - } - }, - "ActionImport" : { - "type" : "object", - "properties" : { - "action" : { - "type" : "string" - }, - "enabled" : { - "type" : "boolean" - } - } - }, - "ArrayModel" : { - "allOf" : [ { - "$ref" : "#/definitions/Model" - }, { - "type" : "object", - "properties" : { - "items" : { - "$ref" : "#/definitions/Property" - }, - "minItems" : { - "type" : "integer", - "format" : "int32" - }, - "maxItems" : { - "type" : "integer", - "format" : "int32" - } - } - } ] - }, - "ArrayProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "uniqueItems" : { - "type" : "boolean" - }, - "items" : { - "$ref" : "#/definitions/Property" - }, - "maxItems" : { - "type" : "integer", - "format" : "int32" - }, - "minItems" : { - "type" : "integer", - "format" : "int32" - } - } - } ] - }, - "ArraySchema" : { - "allOf" : [ { - "$ref" : "#/definitions/Schema" - }, { - "type" : "object", - "properties" : { - "type" : { - "type" : "string" - }, - "items" : { - "$ref" : "#/definitions/Schema" - } - } - } ] - }, - "AuthorizationValue" : { - "type" : "object", - "properties" : { - "value" : { - "type" : "string" - }, - "type" : { - "type" : "string" - }, - "keyName" : { - "type" : "string" - } - } - }, - "BaseIntegerProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "minimum" : { - "type" : "number" - }, - "maximum" : { - "type" : "number" - }, - "multipleOf" : { - "type" : "number" - }, - "exclusiveMinimum" : { - "type" : "boolean" - }, - "exclusiveMaximum" : { - "type" : "boolean" - } - } - } ] - }, - "BodyParameter" : { - "allOf" : [ { - "$ref" : "#/definitions/Parameter" - }, { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "schema" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/Model" - } - }, - "examples" : { - "type" : "object", - "additionalProperties" : { - "type" : "string" - } - } - } - } ] - }, - "BooleanProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "enum" : { - "type" : "array", - "items" : { - "type" : "boolean" - } - } - } - } ] - }, - "BooleanSchema" : { - "allOf" : [ { - "$ref" : "#/definitions/Schema" - }, { - "type" : "object", - "properties" : { - "type" : { - "type" : "string" - } - } - } ] - }, - "Callback" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "get$ref" : { - "type" : "string" - }, - "callbacksMap" : { - "type" : "object", - "description" : "A Path Item Object used to define a callback request and expected responses", - "additionalProperties" : { - "$ref" : "#/definitions/Path" - } - } - } - }, - "Components" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "schemas" : { - "type" : "object", - "description" : "An object to hold reusable schema objects", - "additionalProperties" : { - "$ref" : "#/definitions/Schema" - } - }, - "responses" : { - "type" : "object", - "description" : "An object to hold reusable response objects", - "additionalProperties" : { - "$ref" : "#/definitions/Response" - } - }, - "parameters" : { - "type" : "object", - "description" : "An object to hold reusable parameter objects", - "additionalProperties" : { - "$ref" : "#/definitions/Parameter" - } - }, - "examples" : { - "type" : "object", - "description" : "An object to hold reusable example objects", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "requestBodies" : { - "type" : "object", - "description" : "An object to hold reusable requestBody objects", - "additionalProperties" : { - "$ref" : "#/definitions/RequestBody" - } - }, - "headers" : { - "type" : "object", - "description" : "An object to hold reusable header objects", - "additionalProperties" : { - "$ref" : "#/definitions/Header" - } - }, - "securitySchemes" : { - "type" : "object", - "description" : "An object to hold reusable securityScheme objects", - "additionalProperties" : { - "$ref" : "#/definitions/SecurityScheme" - } - }, - "links" : { - "type" : "object", - "description" : "An object to hold reusable link objects", - "additionalProperties" : { - "$ref" : "#/definitions/Link" - } - }, - "callbacks" : { - "type" : "object", - "description" : "An object to hold reusable callback objects", - "additionalProperties" : { - "$ref" : "#/definitions/Callback" - } - } - } - }, - "ComposedModel" : { - "allOf" : [ { - "$ref" : "#/definitions/Model" - }, { - "type" : "object", - "properties" : { - "allOf" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Model" - } - }, - "anyOf" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Model" - } - }, - "oneOf" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Model" - } - }, - "parent" : { - "$ref" : "#/definitions/Model" - }, - "child" : { - "$ref" : "#/definitions/Model" - }, - "interfaces" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Model" - } - } - } - } ] - }, - "ComposedProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "allOf" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - }, - "anyOf" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - }, - "oneOf" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - } - } - } ] - }, - "ComposedSchema" : { - "allOf" : [ { - "$ref" : "#/definitions/Schema" - }, { - "type" : "object", - "properties" : { - "allOf" : { - "type" : "array", - "description" : "Must be valid against all of the subschemas", - "items" : { - "$ref" : "#/definitions/Schema" - } - }, - "anyOf" : { - "type" : "array", - "description" : "Must be valid against any of the subschemas", - "items" : { - "$ref" : "#/definitions/Schema" - } - }, - "oneOf" : { - "type" : "array", - "description" : "Must be valid against exactly one of the subschemas", - "items" : { - "$ref" : "#/definitions/Schema" - } - } - } - } ] - }, - "Contact" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "The identifying name of the contact person/organization" - }, - "url" : { - "type" : "string", - "description" : "The URL pointing to the contact information" - }, - "email" : { - "type" : "string", - "description" : "The email address of the contact person/organization" - } - } - }, - "CookieParameter" : { - "allOf" : [ { - "$ref" : "#/definitions/Parameter" - }, { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "style" : { - "type" : "string", - "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", - "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] - }, - "explode" : { - "type" : "boolean", - "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" - }, - "allowReserved" : { - "type" : "boolean", - "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "extendedExample" : { - "type" : "object", - "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" - }, - "content" : { - "type" : "object", - "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "xpath" : { - "$ref" : "#/definitions/Xpath" - }, - "default" : { - "type" : "string" - }, - "parameterSchema" : { - "$ref" : "#/definitions/Schema" - }, - "_enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "DateTimeProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "enum" : { - "type" : "array", - "items" : { - "type" : "object" - } - } - } - } ] - }, - "DecimalProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "minimum" : { - "type" : "number" - }, - "maximum" : { - "type" : "number" - }, - "multipleOf" : { - "type" : "number" - }, - "exclusiveMinimum" : { - "type" : "boolean" - }, - "exclusiveMaximum" : { - "type" : "boolean" - } - } - } ] - }, - "EntitySet" : { - "type" : "object", - "properties" : { - "entityType" : { - "type" : "string" - }, - "parameters" : { - "type" : "object", - "additionalProperties" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - }, - "enabled" : { - "type" : "boolean" - } - } - }, - "EntityType" : { - "type" : "object", - "properties" : { - "properties" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "navigationProperties" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/EntitySet" - } - }, - "methods" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/MethodParameters" - } - } - } - }, - "Example" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "summary" : { - "type" : "string", - "description" : "Short description for the example" - }, - "description" : { - "type" : "string", - "description" : "Long description for the example" - }, - "value" : { - "type" : "object", - "description" : "Embedded literal example. The value field and externalValue field are mutually exclusive. To represent examples of media types that cannot naturally represented in JSON or YAML, use a string value to contain the example, escaping where necessary" - }, - "externalValue" : { - "type" : "string", - "description" : "A URL that points to the literal example. This provides the capability to reference examples that cannot easily be included in JSON or YAML documents. The value field and externalValue field are mutually exclusive" - }, - "get$ref" : { - "type" : "string" - } - } - }, - "ExternalDocs" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "description" : { - "type" : "string", - "description" : "A short description of the target documentation" - }, - "url" : { - "type" : "string", - "description" : "The URL for the target documentation" - } - } - }, - "FormParameter" : { - "allOf" : [ { - "$ref" : "#/definitions/Parameter" - }, { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "style" : { - "type" : "string", - "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", - "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] - }, - "explode" : { - "type" : "boolean", - "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" - }, - "allowReserved" : { - "type" : "boolean", - "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "extendedExample" : { - "type" : "object", - "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" - }, - "content" : { - "type" : "object", - "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "xpath" : { - "$ref" : "#/definitions/Xpath" - }, - "default" : { - "type" : "string" - }, - "parameterSchema" : { - "$ref" : "#/definitions/Schema" - }, - "_enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "FunctionImport" : { - "type" : "object", - "properties" : { - "function" : { - "type" : "string" - }, - "enabled" : { - "type" : "boolean" - } - } - }, - "GatewaySchema" : { - "allOf" : [ { - "$ref" : "#/definitions/Schema" - }, { - "type" : "object", - "properties" : { - "type" : { - "type" : "string" - }, - "schema" : { - "type" : "string" - } - } - } ] - }, - "Header" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "style" : { - "type" : "string", - "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", - "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] - }, - "explode" : { - "type" : "boolean", - "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" - }, - "allowReserved" : { - "type" : "boolean", - "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "extendedExample" : { - "type" : "object", - "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" - }, - "content" : { - "type" : "object", - "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "xpath" : { - "$ref" : "#/definitions/Xpath" - }, - "default" : { - "type" : "string" - }, - "parameterSchema" : { - "$ref" : "#/definitions/Schema" - }, - "_enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "HeaderParameter" : { - "allOf" : [ { - "$ref" : "#/definitions/Parameter" - }, { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "style" : { - "type" : "string", - "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", - "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] - }, - "explode" : { - "type" : "boolean", - "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" - }, - "allowReserved" : { - "type" : "boolean", - "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "extendedExample" : { - "type" : "object", - "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" - }, - "content" : { - "type" : "object", - "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "xpath" : { - "$ref" : "#/definitions/Xpath" - }, - "default" : { - "type" : "string" - }, - "parameterSchema" : { - "$ref" : "#/definitions/Schema" - }, - "_enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "Info" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "description" : { - "type" : "string", - "description" : "A short description of the application" - }, - "version" : { - "type" : "string", - "description" : "Version of the API" - }, - "title" : { - "type" : "string", - "description" : "The title of the application" - }, - "termsOfService" : { - "type" : "string", - "description" : "A URL to the Terms of Service for the API" - }, - "contact" : { - "$ref" : "#/definitions/Contact" - }, - "license" : { - "$ref" : "#/definitions/Licence" - } - } - }, - "InputAPI" : { - "type" : "object", - "required" : [ "apiName", "type" ], - "properties" : { - "url" : { - "type" : "string", - "description" : "Required when creating an API by importing URL" - }, - "authorizationValue" : { - "$ref" : "#/definitions/AuthorizationValue" - }, - "apiDefinition" : { - "$ref" : "#/definitions/API" - }, - "apiName" : { - "type" : "string" - }, - "apiVersion" : { - "type" : "string" - }, - "apiDescription" : { - "type" : "string" - }, - "maturityState" : { - "type" : "string" - }, - "type" : { - "type" : "string" - }, - "rootFileName" : { - "type" : "string", - "description" : "Required when creating an API by importing protected URL" - }, - "teams" : { - "type" : "array", - "description" : "Contains teams to which the API must be assigned.", - "items" : { - "$ref" : "#/definitions/Team" - } - } - } - }, - "IntegerSchema" : { - "allOf" : [ { - "$ref" : "#/definitions/Schema" - }, { - "type" : "object", - "properties" : { - "type" : { - "type" : "string" - }, - "format" : { - "type" : "string" - }, - "default" : { - "$ref" : "#/definitions/Number" - }, - "enum" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Number" - } - } - } - } ] - }, - "Licence" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "name" : { - "type" : "string", - "description" : "The license name used for the API" - }, - "url" : { - "type" : "string", - "description" : "A URL to the license used for the API" - } - } - }, - "Link" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "operationRef" : { - "type" : "string", - "description" : "A relative or absolute reference to an OAS operation. This field is mutually exclusive of the operationId field, and MUST point to an Operation Object. Relative operationRef values MAY be used to locate an existing Operation Object in the API definition" - }, - "operationId" : { - "type" : "string", - "description" : "The name of an existing, resolvable OAS operation, as defined with a unique operationId. This field is mutually exclusive of the operationRef field" - }, - "parameters" : { - "type" : "object", - "description" : "A map representing parameters to pass to an operation as specified with operationId or identified via operationRef. The key is the parameter name to be used, whereas the value can be a constant or an expression to be evaluated and passed to the linked operation. The parameter name can be qualified using the parameter location [{in}.]{name} for operations that use the same parameter name in different locations (e.g. path.id)", - "additionalProperties" : { - "type" : "string" - } - }, - "requestBody" : { - "type" : "string", - "description" : "A literal value or {expression} to use as a request body when calling the target operation" - }, - "description" : { - "type" : "string", - "description" : "A description of the link" - }, - "get$ref" : { - "type" : "string" - } - } - }, - "MapProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "additionalProperties" : { - "$ref" : "#/definitions/Property" - }, - "minProperties" : { - "type" : "integer", - "format" : "int32" - }, - "maxProperties" : { - "type" : "integer", - "format" : "int32" - } - } - } ] - }, - "MediaType" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "schema" : { - "$ref" : "#/definitions/Schema" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example object SHOULD match the media type and specified schema if present. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "example" : { - "type" : "object", - "description" : "Example of the media type. The example object SHOULD be in the correct format as specified by the media type. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema" - } - } - }, - "MessageFrame" : { - "type" : "object", - "properties" : { - "origin" : { - "type" : "string", - "enum" : [ "Server", "Client" ] - }, - "type" : { - "type" : "string", - "enum" : [ "Binary", "Text" ] - }, - "messagePayload" : { - "type" : "string" - }, - "messageDescription" : { - "type" : "string" - } - } - }, - "MethodParameters" : { - "type" : "object", - "properties" : { - "enabled" : { - "type" : "boolean" - }, - "parameters" : { - "type" : "object", - "additionalProperties" : { - "type" : "string" - } - }, - "returnType" : { - "type" : "string" - } - } - }, - "MockedCondition" : { - "type" : "object", - "properties" : { - "mockedConditionParameter" : { - "type" : "string", - "enum" : [ "Body", "Header", "QueryParameter" ] - }, - "mockedLevel1Operator" : { - "type" : "string", - "enum" : [ "Equals", "NotEquals", "ContainsKey", "ContainsKeyValue" ] - }, - "mockedLevel2Operator" : { - "type" : "string", - "enum" : [ "Equals", "NotEquals", "Contains", "StartsWith", "EndsWith" ] - }, - "value1" : { - "type" : "string" - }, - "value2" : { - "type" : "string" - }, - "conditionName" : { - "type" : "string" - } - } - }, - "MockedConditionsBasedCustomResponse" : { - "type" : "object", - "properties" : { - "mockedConditionList" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/MockedCondition" - } - }, - "mockedResponse" : { - "$ref" : "#/definitions/MockedResponse" - } - } - }, - "MockedResponse" : { - "type" : "object", - "properties" : { - "responseBody" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "responseHeaders" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "statusCode" : { - "type" : "string" - } - } - }, - "Model" : { - "type" : "object", - "discriminator" : "type", - "properties" : { - "properties" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "type" : { - "type" : "string" - }, - "title" : { - "type" : "string" - }, - "description" : { - "type" : "string" - }, - "example" : { - "type" : "object" - }, - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "reference" : { - "type" : "string" - }, - "externalDocs" : { - "$ref" : "#/definitions/ExternalDocs" - } - } - }, - "ModelImpl" : { - "allOf" : [ { - "$ref" : "#/definitions/Model" - }, { - "type" : "object", - "properties" : { - "format" : { - "type" : "string" - }, - "name" : { - "type" : "string" - }, - "required" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "properties" : { - "type" : "object", - "readOnly" : true, - "additionalProperties" : { - "$ref" : "#/definitions/Property" - } - }, - "discriminator" : { - "type" : "string" - }, - "xml" : { - "$ref" : "#/definitions/Xml" - }, - "defaultValue" : { - "type" : "object" - }, - "allowEmptyValue" : { - "type" : "boolean" - }, - "uniqueItems" : { - "type" : "boolean" - }, - "minimum" : { - "type" : "number" - }, - "maximum" : { - "type" : "number" - }, - "enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "Namespaces" : { - "type" : "object", - "properties" : { - "prefix" : { - "type" : "string" - }, - "uri" : { - "type" : "string" - } - } - }, - "Number" : { - "type" : "object" - }, - "NumberSchema" : { - "allOf" : [ { - "$ref" : "#/definitions/Schema" - }, { - "type" : "object", - "properties" : { - "type" : { - "type" : "string" - }, - "default" : { - "type" : "number", - "description" : "The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, if type is string, then default can be \"foo\" but cannot be 1" - }, - "enum" : { - "type" : "array", - "items" : { - "type" : "number" - } - } - } - } ] - }, - "OAuth2Definition" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "description" : { - "type" : "string" - }, - "type" : { - "type" : "string" - }, - "authorizationUrl" : { - "type" : "string" - }, - "authorizationGrants" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "tokenUrl" : { - "type" : "string" - }, - "flow" : { - "type" : "string" - }, - "scopes" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "refreshUrl" : { - "type" : "string" - }, - "securitySchemeDescriptor" : { - "$ref" : "#/definitions/SecuritySchemeDescriptor" - } - } - }, - "OAuthFlows" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "implicit" : { - "$ref" : "#/definitions/OAuth2Definition" - }, - "password" : { - "$ref" : "#/definitions/OAuth2Definition" - }, - "clientCredentials" : { - "$ref" : "#/definitions/OAuth2Definition" - }, - "authorizationCode" : { - "$ref" : "#/definitions/OAuth2Definition" - } - } - }, - "ODataAPI" : { - "allOf" : [ { - "$ref" : "#/definitions/API" - }, { - "type" : "object", - "properties" : { - "odataVersion" : { - "type" : "string" - }, - "serviceRoot" : { - "type" : "string" - }, - "serviceDocument" : { - "type" : "string" - }, - "metaDataDocument" : { - "type" : "string" - }, - "entitySets" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/EntitySet" - } - }, - "singletons" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/EntitySet" - } - }, - "actionImports" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/ActionImport" - } - }, - "functionImports" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/FunctionImport" - } - }, - "entityTypes" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/EntityType" - } - }, - "actions" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/EntityType" - } - }, - "functions" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/EntityType" - } - }, - "tags" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Tag" - } - }, - "apiTags" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "serviceRegistryDisplayName" : { - "type" : "string", - "description" : "The name of the API in service registry when the API is published to a service registry." - } - } - } ] - }, - "ObjectProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "properties" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/Property" - } - } - } - } ] - }, - "ObjectSchema" : { - "allOf" : [ { - "$ref" : "#/definitions/Schema" - }, { - "type" : "object", - "properties" : { - "type" : { - "type" : "string" - } - } - } ] - }, - "Operation" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "tags" : { - "type" : "array", - "description" : "A list of tags for API documentation control. Tags can be used for logical grouping of operations by resources or any other qualifier", - "items" : { - "type" : "string" - } - }, - "summary" : { - "type" : "string", - "description" : "A short summary of what the operation does" - }, - "description" : { - "type" : "string", - "description" : "A verbose explanation of the operation behavior" - }, - "operationId" : { - "type" : "string", - "description" : "Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is case-sensitive" - }, - "parameters" : { - "type" : "array", - "description" : "A list of parameters that are applicable for this operation. If a parameter is already defined at the Path Item, the new definition will override it but can never remove it", - "items" : { - "$ref" : "#/definitions/Parameter" - } - }, - "responses" : { - "type" : "object", - "description" : "The list of possible responses as they are returned from executing this operation", - "additionalProperties" : { - "$ref" : "#/definitions/Response" - } - }, - "mockedResponses" : { - "type" : "object", - "description" : "The list of possible mocked responses as they are returned from executing this operation and it's applicable only for mocked APIs", - "additionalProperties" : { - "$ref" : "#/definitions/MockedResponse" - } - }, - "mockedConditionsBasedCustomResponsesList" : { - "type" : "array", - "description" : "The list of mocked conditions and it's applicable only for mocked APIs", - "items" : { - "$ref" : "#/definitions/MockedConditionsBasedCustomResponse" - } - }, - "externalDocs" : { - "$ref" : "#/definitions/ExternalDocs" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Declares this operation to be deprecated. Consumers SHOULD refrain from usage of the declared operation. Default value is false" - }, - "enabled" : { - "type" : "boolean" - }, - "scopes" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "requestBody" : { - "$ref" : "#/definitions/RequestBody" - }, - "callbacks" : { - "type" : "object", - "description" : "An optional, string description, intended to apply to all operations in this path", - "additionalProperties" : { - "$ref" : "#/definitions/Callback" - } - } - } - }, - "Parameter" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "style" : { - "type" : "string", - "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", - "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] - }, - "explode" : { - "type" : "boolean", - "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" - }, - "allowReserved" : { - "type" : "boolean", - "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "extendedExample" : { - "type" : "object", - "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" - }, - "content" : { - "type" : "object", - "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "xpath" : { - "$ref" : "#/definitions/Xpath" - }, - "default" : { - "type" : "string" - }, - "parameterSchema" : { - "$ref" : "#/definitions/Schema" - }, - "_enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "Path" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "get" : { - "$ref" : "#/definitions/Operation" - }, - "put" : { - "$ref" : "#/definitions/Operation" - }, - "post" : { - "$ref" : "#/definitions/Operation" - }, - "head" : { - "$ref" : "#/definitions/Operation" - }, - "delete" : { - "$ref" : "#/definitions/Operation" - }, - "patch" : { - "$ref" : "#/definitions/Operation" - }, - "options" : { - "$ref" : "#/definitions/Operation" - }, - "trace" : { - "$ref" : "#/definitions/Operation" - }, - "parameters" : { - "type" : "array", - "description" : "A list of parameters that are applicable for all the operations described under this path. These parameters can be overridden at the operation level, but cannot be removed there", - "items" : { - "type" : "object" - } - }, - "scopes" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "tags" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "displayName" : { - "type" : "string" - }, - "description" : { - "type" : "string", - "description" : "An optional, string description, intended to apply to all operations in this path" - }, - "enabled" : { - "type" : "boolean" - }, - "get$ref" : { - "type" : "string", - "description" : "Allows for an external definition of this path item" - }, - "summary" : { - "type" : "string", - "description" : "An optional, string summary, intended to apply to all operations in this path" - } - } - }, - "PathParameter" : { - "allOf" : [ { - "$ref" : "#/definitions/Parameter" - }, { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "style" : { - "type" : "string", - "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", - "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] - }, - "explode" : { - "type" : "boolean", - "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" - }, - "allowReserved" : { - "type" : "boolean", - "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "extendedExample" : { - "type" : "object", - "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" - }, - "content" : { - "type" : "object", - "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "xpath" : { - "$ref" : "#/definitions/Xpath" - }, - "default" : { - "type" : "string" - }, - "parameterSchema" : { - "$ref" : "#/definitions/Schema" - }, - "_enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "Property" : { - "type" : "object", - "discriminator" : "type", - "properties" : { - "name" : { - "type" : "string" - }, - "readOnly" : { - "type" : "boolean" - }, - "type" : { - "type" : "string" - }, - "title" : { - "type" : "string" - }, - "description" : { - "type" : "string" - }, - "required" : { - "type" : "boolean" - }, - "format" : { - "type" : "string" - }, - "access" : { - "type" : "string" - }, - "example" : { - "type" : "object" - }, - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "position" : { - "type" : "integer", - "format" : "int32" - }, - "xml" : { - "$ref" : "#/definitions/Xml" - }, - "allowEmptyValue" : { - "type" : "boolean" - } - } - }, - "QueryParameter" : { - "allOf" : [ { - "$ref" : "#/definitions/Parameter" - }, { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "style" : { - "type" : "string", - "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", - "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] - }, - "explode" : { - "type" : "boolean", - "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" - }, - "allowReserved" : { - "type" : "boolean", - "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "extendedExample" : { - "type" : "object", - "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" - }, - "content" : { - "type" : "object", - "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "xpath" : { - "$ref" : "#/definitions/Xpath" - }, - "default" : { - "type" : "string" - }, - "parameterSchema" : { - "$ref" : "#/definitions/Schema" - }, - "_enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "RefModel" : { - "allOf" : [ { - "$ref" : "#/definitions/Model" - }, { - "type" : "object", - "properties" : { - "refFormat" : { - "type" : "string", - "enum" : [ "URL", "RELATIVE", "INTERNAL" ] - }, - "get$ref" : { - "type" : "string" - }, - "simpleRef" : { - "type" : "string" - } - } - } ] - }, - "RefParameter" : { - "allOf" : [ { - "$ref" : "#/definitions/Parameter" - }, { - "type" : "object", - "properties" : { - "name" : { - "type" : "string", - "description" : "The name of the parameter. Parameter names are case sensitive" - }, - "in" : { - "type" : "string", - "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" - }, - "description" : { - "type" : "string", - "description" : "A brief description of the parameter. This could contain examples of use" - }, - "required" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "get$ref" : { - "type" : "string", - "description" : "The available paths and operations for the API" - }, - "allowEmptyValue" : { - "type" : "boolean", - "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" - }, - "style" : { - "type" : "string", - "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", - "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] - }, - "explode" : { - "type" : "boolean", - "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" - }, - "allowReserved" : { - "type" : "boolean", - "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" - }, - "examples" : { - "type" : "object", - "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", - "additionalProperties" : { - "$ref" : "#/definitions/Example" - } - }, - "extendedExample" : { - "type" : "object", - "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" - }, - "content" : { - "type" : "object", - "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "xpath" : { - "$ref" : "#/definitions/Xpath" - }, - "default" : { - "type" : "string" - }, - "parameterSchema" : { - "$ref" : "#/definitions/Schema" - }, - "_enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "RefProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "refFormat" : { - "type" : "string", - "enum" : [ "URL", "RELATIVE", "INTERNAL" ] - }, - "get$ref" : { - "type" : "string" - }, - "simpleRef" : { - "type" : "string" - } - } - } ] - }, - "RequestBody" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "description" : { - "type" : "string", - "description" : "A brief description of the request body. This could contain examples of use" - }, - "content" : { - "type" : "object", - "description" : "The content of the request body. The key is a media type or media type range and the value describes it", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "required" : { - "type" : "boolean", - "description" : "Determines if the request body is required in the request. Defaults to false" - }, - "get$ref" : { - "type" : "string" - } - } - }, - "Response" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "description" : { - "type" : "string", - "description" : "A short description of the response" - }, - "headersV3" : { - "type" : "object", - "description" : "Maps a header name to its definition. RFC7230 states header names are case insensitive. If a response header is defined with the name \"Content-Type\", it SHALL be ignored", - "additionalProperties" : { - "$ref" : "#/definitions/Header" - } - }, - "content" : { - "type" : "object", - "description" : "A map containing descriptions of potential response payloads. The key is a media type or media type range and the value describes it", - "additionalProperties" : { - "$ref" : "#/definitions/MediaType" - } - }, - "links" : { - "type" : "object", - "description" : "A map of operations links that can be followed from the response. The key of the map is a short name for the link, following the naming constraints of the names for Component Objects.", - "additionalProperties" : { - "$ref" : "#/definitions/Link" - } - }, - "get$ref" : { - "type" : "string" - } - } - }, - "RestAPI" : { - "allOf" : [ { - "$ref" : "#/definitions/API" - }, { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "info" : { - "$ref" : "#/definitions/Info" - }, - "serviceRegistryDisplayName" : { - "type" : "string", - "description" : "The name of the API in service registry when the API is published to a service registry." - }, - "tags" : { - "type" : "array", - "description" : "A list of tags with additional metadata", - "items" : { - "$ref" : "#/definitions/Tag" - } - }, - "paths" : { - "type" : "object", - "description" : "The available paths and operations for the API", - "additionalProperties" : { - "$ref" : "#/definitions/Path" - } - }, - "externalDocs" : { - "type" : "array", - "description" : "Additional external documentation", - "items" : { - "$ref" : "#/definitions/ExternalDocs" - } - }, - "servers" : { - "type" : "array", - "description" : "An array of Server Objects, which provide connectivity information to a target server", - "items" : { - "$ref" : "#/definitions/Server" - } - }, - "components" : { - "$ref" : "#/definitions/Components" - }, - "apiTags" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "RestEnabledPath" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "get" : { - "$ref" : "#/definitions/Operation" - }, - "put" : { - "$ref" : "#/definitions/Operation" - }, - "post" : { - "$ref" : "#/definitions/Operation" - }, - "head" : { - "$ref" : "#/definitions/Operation" - }, - "delete" : { - "$ref" : "#/definitions/Operation" - }, - "patch" : { - "$ref" : "#/definitions/Operation" - }, - "options" : { - "$ref" : "#/definitions/Operation" - }, - "trace" : { - "$ref" : "#/definitions/Operation" - }, - "parameters" : { - "type" : "array", - "description" : "A list of parameters that are applicable for all the operations described under this path. These parameters can be overridden at the operation level, but cannot be removed there", - "items" : { - "type" : "object" - } - }, - "scopes" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "tags" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "displayName" : { - "type" : "string" - }, - "description" : { - "type" : "string", - "description" : "An optional, string description, intended to apply to all operations in this path" - }, - "enabled" : { - "type" : "boolean" - }, - "get$ref" : { - "type" : "string", - "description" : "Allows for an external definition of this path item" - }, - "summary" : { - "type" : "string", - "description" : "An optional, string summary, intended to apply to all operations in this path" - }, - "name" : { - "type" : "string" - }, - "invokePath" : { - "type" : "string" - } - } - }, - "SOAPAPI" : { - "allOf" : [ { - "$ref" : "#/definitions/API" - }, { - "type" : "object", - "properties" : { - "wsdl" : { - "type" : "string" - }, - "baseWsdlUri" : { - "type" : "string" - }, - "nativeUri" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "type" : "string" - } - }, - "rootFileFolder" : { - "type" : "string" - }, - "serviceName" : { - "type" : "string" - }, - "operationsInfo" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "$ref" : "#/definitions/SOAPOperation" - } - }, - "serviceRegistryDisplayName" : { - "type" : "string", - "description" : "The name of the API in service registry when the API is published to a service registry." - }, - "operationPolicies" : { - "type" : "object", - "additionalProperties" : { - "type" : "string" - } - }, - "isRESTInvokeEnabled" : { - "type" : "boolean" - }, - "tags" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Tag" - } - }, - "apiTags" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "primaryEndpoint" : { - "type" : "object", - "additionalProperties" : { - "type" : "boolean" - } - } - } - } ] - }, - "SOAPBinding" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string" - }, - "type" : { - "type" : "string" - }, - "specifier" : { - "type" : "string" - }, - "interFace" : { - "$ref" : "#/definitions/SOAPInterface" - }, - "inputMessage" : { - "type" : "string" - }, - "outputMessage" : { - "type" : "string" - }, - "faultMessages" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "SOAPInterface" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string" - }, - "operations" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/SOAPOperation" - } - } - } - }, - "SOAPOperation" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string" - }, - "namespace" : { - "type" : "string" - }, - "enabled" : { - "type" : "boolean" - }, - "bindings" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/SOAPBinding" - } - }, - "mockedResponses" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/MockedResponse" - } - }, - "mockedConditionsBasedCustomResponsesList" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/MockedConditionsBasedCustomResponse" - } - }, - "defined" : { - "type" : "boolean" - }, - "soapAction" : { - "type" : "string" - }, - "isRESTInvokeEnabled" : { - "type" : "boolean" - }, - "restEnabledPath" : { - "$ref" : "#/definitions/RestEnabledPath" - }, - "scopes" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "tags" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "Schema" : { - "type" : "object", - "discriminator" : "type", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "name" : { - "type" : "string", - "description" : "User defined name for the property" - }, - "title" : { - "type" : "string", - "description" : "User defined title for the property" - }, - "multipleOf" : { - "type" : "number", - "description" : "Numbers can be restricted to a multiple of a given number, using the multipleOf keyword. It may be set to any positive number." - }, - "maximum" : { - "type" : "number", - "description" : "Upper limit in the ranges of numbers, (or exclusiveMinimum and exclusiveMaximum for expressing exclusive range)" - }, - "exclusiveMaximum" : { - "type" : "boolean", - "description" : "Indicate whether maximum are exclusive of the value" - }, - "minimum" : { - "type" : "number", - "description" : "Lower limit in the ranges of numbers" - }, - "exclusiveMinimum" : { - "type" : "boolean", - "description" : "Indicate whether minimum are exclusive of the value" - }, - "maxLength" : { - "type" : "integer", - "format" : "int32", - "description" : "The maximum length of a string can be constrained using the minLength" - }, - "minLength" : { - "type" : "integer", - "format" : "int32", - "description" : "The minimum length of a string can be constrained using the minLength" - }, - "pattern" : { - "type" : "string", - "description" : "The pattern keyword is used to restrict a string to a particular regular expression. The regular expression syntax is the one defined in JavaScript (ECMA 262 specifically)" - }, - "maxItems" : { - "type" : "integer", - "format" : "int32", - "description" : "The maximum length of the array can be specified" - }, - "minItems" : { - "type" : "integer", - "format" : "int32", - "description" : "The minimum length of the array can be specified" - }, - "uniqueItems" : { - "type" : "boolean", - "description" : "A schema can ensure that each of the items in an array is unique. Simply set the uniqueItems keyword to true" - }, - "maxProperties" : { - "type" : "integer", - "format" : "int32", - "description" : "The maximum number of properties on an object can be restricted" - }, - "minProperties" : { - "type" : "integer", - "format" : "int32", - "description" : "The minimum number of properties on an object can be restricted" - }, - "required" : { - "type" : "array", - "description" : "By default, the properties defined by the properties keyword are not required. However, one can provide a list of required properties using the required keyword.\nThe required keyword takes an array of zero or more strings. Each of these strings must be unique.", - "items" : { - "type" : "string" - } - }, - "type" : { - "type" : "string", - "description" : "It specifies the data type for a schema" - }, - "not" : { - "$ref" : "#/definitions/Schema" - }, - "properties" : { - "type" : "object", - "description" : "The properties (key-value pairs) on an object are defined using the properties keyword. The value of properties is an object, where each key is the name of a property and each value is of type schema used to validate that property", - "additionalProperties" : { - "$ref" : "#/definitions/Schema" - } - }, - "additionalProperties" : { - "$ref" : "#/definitions/Schema" - }, - "description" : { - "type" : "string", - "description" : "Provide a more lengthy explanation about the purpose of the data described by the schema" - }, - "format" : { - "type" : "string", - "description" : "The format keyword allows for basic semantic validation on certain kinds of string values that are commonly used" - }, - "get$ref" : { - "type" : "string" - }, - "nullable" : { - "type" : "boolean", - "description" : "Allows sending a null value for the defined schema. Default value is false" - }, - "readOnly" : { - "type" : "boolean", - "description" : "Relevant only for Schema \"properties\" definitions. Declares the property as \"read only\". This means that it MAY be sent as part of a response but SHOULD NOT be sent as part of the request. If the property is marked as readOnly being true and is in the required list, the required will take effect on the response only. A property MUST NOT be marked as both readOnly and writeOnly being true. Default value is false" - }, - "writeOnly" : { - "type" : "boolean", - "description" : "Relevant only for Schema \"properties\" definitions. Declares the property as \"write only\". Therefore, it MAY be sent as part of a request but SHOULD NOT be sent as part of the response. If the property is marked as writeOnly being true and is in the required list, the required will take effect on the request only. A property MUST NOT be marked as both readOnly and writeOnly being true. Default value is false" - }, - "example" : { - "type" : "object", - "description" : "A free-form property to include an example of an instance for this schema. To represent examples that cannot be naturally represented in JSON or YAML, a string value can be used to contain the example with escaping where necessary" - }, - "externalDocs" : { - "$ref" : "#/definitions/ExternalDocs" - }, - "deprecated" : { - "type" : "boolean", - "description" : "Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is false" - }, - "xml" : { - "$ref" : "#/definitions/Xml" - }, - "default" : { - "type" : "object", - "description" : "The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, if type is string, then default can be \"foo\" but cannot be 1" - }, - "enum" : { - "type" : "array", - "items" : { - "type" : "object" - } - } - } - }, - "SecurityScheme" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "type" : { - "type" : "string", - "enum" : [ "APIKEY", "HTTP", "OAUTH2", "OPENIDCONNECT" ] - }, - "description" : { - "type" : "string" - }, - "name" : { - "type" : "string" - }, - "get$ref" : { - "type" : "string" - }, - "in" : { - "type" : "string", - "enum" : [ "COOKIE", "HEADER", "QUERY" ] - }, - "scheme" : { - "type" : "string" - }, - "bearerFormat" : { - "type" : "string" - }, - "flows" : { - "$ref" : "#/definitions/OAuthFlows" - }, - "openIdConnectUrl" : { - "type" : "string" - } - } - }, - "SecuritySchemeDescriptor" : { - "type" : "object", - "properties" : { - "headers" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "queryParameters" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "responses" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - } - } - }, - "Server" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "url" : { - "type" : "string", - "description" : "A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the OpenAPI document is being served. Variable substitutions will be made when a variable is named in {brackets}" - }, - "description" : { - "type" : "string", - "description" : "An optional string describing the host designated by the URL" - }, - "variables" : { - "type" : "object", - "description" : "A map between a variable name and its value. The value is used for substitution in the server's URL template", - "additionalProperties" : { - "$ref" : "#/definitions/ServerVariable" - } - } - } - }, - "ServerVariable" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "description" : { - "type" : "string", - "description" : "An optional description for the server variable" - }, - "default" : { - "type" : "string" - }, - "enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "StringProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "minLength" : { - "type" : "integer", - "format" : "int32" - }, - "maxLength" : { - "type" : "integer", - "format" : "int32" - }, - "pattern" : { - "type" : "string" - }, - "enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "default" : { - "type" : "string" - } - } - } ] - }, - "StringSchema" : { - "allOf" : [ { - "$ref" : "#/definitions/Schema" - }, { - "type" : "object", - "properties" : { - "type" : { - "type" : "string" - }, - "default" : { - "type" : "string", - "description" : "The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, if type is string, then default can be \"foo\" but cannot be 1" - }, - "enum" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "StringSchemaModel" : { - "allOf" : [ { - "$ref" : "#/definitions/Model" - }, { - "type" : "object", - "properties" : { - "schema" : { - "type" : "string" - } - } - } ] - }, - "StringSchemaProperty" : { - "allOf" : [ { - "$ref" : "#/definitions/Property" - }, { - "type" : "object", - "properties" : { - "schema" : { - "type" : "string" - } - } - } ] - }, - "Tag" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "name" : { - "type" : "string", - "description" : "The name of the tag" - }, - "description" : { - "type" : "string", - "description" : "A short description for the tag" - }, - "externalDocs" : { - "$ref" : "#/definitions/ExternalDocs" - } - } - }, - "Team" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "Team id" - }, - "name" : { - "type" : "string", - "description" : "Team name" - }, - "source" : { - "type" : "string", - "description" : "The value is to identify whether the team is created from global team assignment or from user or by system", - "enum" : [ "USER", "GLOBAL_ASSIGNMENT", "SYSTEM" ] - } - } - }, - "WebsocketAPI" : { - "allOf" : [ { - "$ref" : "#/definitions/API" - }, { - "type" : "object", - "properties" : { - "nativeUri" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "type" : "string" - } - }, - "supportedSubProtocols" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "tags" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Tag" - } - }, - "externalDocs" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ExternalDocs" - } - }, - "messages" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/MessageFrame" - } - }, - "parameters" : { - "type" : "object", - "additionalProperties" : { - "$ref" : "#/definitions/AbstractParameter" - } - }, - "apiTags" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - } ] - }, - "Xml" : { - "type" : "object", - "properties" : { - "vendorExtensions" : { - "type" : "object", - "additionalProperties" : { - "type" : "object" - } - }, - "name" : { - "type" : "string", - "description" : "Replaces the name of the element/attribute used for the described schema property. When defined within items, it will affect the name of the individual XML elements within the list. When defined alongside type being array (outside the items), it will affect the wrapping element and only if wrapped is true. If wrapped is false, it will be ignored" - }, - "namespace" : { - "type" : "string", - "description" : "The URI of the namespace definition" - }, - "prefix" : { - "type" : "string", - "description" : "The prefix to be used for the name" - }, - "attribute" : { - "type" : "boolean", - "description" : "Declares whether the property definition translates to an attribute instead of an element. Default value is false" - }, - "wrapped" : { - "type" : "boolean", - "description" : "MAY be used only for an array definition. Signifies whether the array is wrapped (for example, ) or unwrapped (). Default value is false" - } - } - }, - "Xpath" : { - "type" : "object", - "properties" : { - "xpath" : { - "type" : "string" - }, - "namespaces" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Namespaces" - } - } - } - }, - "APIResponseCreate" : { - "type" : "object", - "properties" : { - "api" : { - "$ref" : "#/definitions/GatewayAPI" - }, - "apiId" : { - "type" : "string" - }, - "errorReason" : { - "type" : "string" - }, - "responseStatus" : { - "type" : "string", - "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] - } - } - }, - "Endpoint" : { - "type" : "object", - "properties" : { - "optimizationTechnique" : { - "type" : "string" - }, - "passSecurityHeaders" : { - "type" : "boolean" - }, - "uri" : { - "type" : "string" - }, - "connectionTimeoutDuration" : { - "type" : "integer", - "format" : "int32" - }, - "alias" : { - "type" : "boolean" - } - } - }, - "GatewayAPI" : { - "type" : "object", - "properties" : { - "apiDefinition" : { - "$ref" : "#/definitions/API" - }, - "nativeEndpoint" : { - "type" : "array", - "readOnly" : true, - "uniqueItems" : true, - "items" : { - "$ref" : "#/definitions/Endpoint" - } - }, - "apiName" : { - "type" : "string" - }, - "apiVersion" : { - "type" : "string" - }, - "apiEndpointPrefix" : { - "type" : "string" - }, - "apiDescription" : { - "type" : "string" - }, - "maturityState" : { - "type" : "string" - }, - "apiGroups" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "isActive" : { - "type" : "boolean", - "readOnly" : true - }, - "type" : { - "type" : "string" - }, - "owner" : { - "type" : "string", - "readOnly" : true - }, - "policies" : { - "type" : "array", - "readOnly" : true, - "items" : { - "type" : "string" - } - }, - "rootFileName" : { - "type" : "string", - "readOnly" : true - }, - "scopes" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Scope" - } - }, - "publishedPortals" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "publishedToRegistry" : { - "type" : "boolean" - }, - "creationDate" : { - "type" : "string", - "readOnly" : true - }, - "lastModified" : { - "type" : "string", - "readOnly" : true - }, - "prevVersion" : { - "type" : "string", - "readOnly" : true - }, - "nextVersion" : { - "type" : "string", - "readOnly" : true - }, - "systemVersion" : { - "type" : "integer", - "format" : "int32", - "readOnly" : true - }, - "provider" : { - "type" : "string", - "readOnly" : true - }, - "centraSiteURL" : { - "type" : "string", - "readOnly" : true - }, - "mockService" : { - "$ref" : "#/definitions/MockService" - }, - "apiDocuments" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "id" : { - "type" : "string" - }, - "oauth2ScopeName" : { - "type" : "string" - } - } - }, - "MockService" : { - "type" : "object", - "properties" : { - "enableMock" : { - "type" : "boolean" - }, - "runAsUser" : { - "type" : "string" - }, - "service" : { - "type" : "string" - } - } - }, - "Scope" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string" - }, - "description" : { - "type" : "string" - }, - "getoAuth2ScopeName" : { - "type" : "string" - }, - "policies" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "mashedUpAPI" : { - "type" : "boolean" - } - } - }, - "InputVersion" : { - "type" : "object", - "required" : [ "newApiVersion" ], - "properties" : { - "retainApplications" : { - "type" : "boolean" - }, - "newApiVersion" : { - "type" : "string" - } - } - }, - "APIResponse" : { - "type" : "object", - "properties" : { - "apiId" : { - "type" : "string" - }, - "api" : { - "$ref" : "#/definitions/GatewayAPI" - }, - "responseStatus" : { - "type" : "string", - "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] - }, - "errorReason" : { - "type" : "string" - }, - "gatewayEndPoints" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "microgatewayEndPoints" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "reason" : { - "type" : "object" - }, - "pubSOAPFlavor" : { - "type" : "string" - }, - "restrictViewAsset" : { - "type" : "boolean" - }, - "rootFileLocation" : { - "type" : "string" - }, - "teams" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Team" - } - }, - "portalGatewayDataEntries" : { - "type" : "object" - } - } - }, - "APIResponseDelete" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "API Id" - }, - "apiName" : { - "type" : "string", - "description" : "API Name" - }, - "apiVersion" : { - "type" : "string", - "description" : "API Version" - }, - "type" : { - "type" : "string", - "description" : "API Type" - }, - "publishedPortals" : { - "type" : "array", - "description" : "Published portals of an API", - "items" : { - "type" : "string" - } - }, - "systemVersion" : { - "type" : "integer", - "format" : "int32", - "description" : "System version of an API" - }, - "teams" : { - "type" : "array", - "description" : "Contains teams belonging to an API.", - "items" : { - "$ref" : "#/definitions/Team" - } - }, - "active" : { - "type" : "boolean" - }, - "apiId" : { - "type" : "string" - }, - "errorReason" : { - "type" : "string" - }, - "responseStatus" : { - "type" : "string", - "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] - } - }, - "description" : "This model contains the basics details of an API." - }, - "InputPublish" : { - "type" : "object", - "properties" : { - "portalGatewayId" : { - "type" : "string" - }, - "communities" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "endpoints" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "APIResponseGetAPI" : { - "type" : "object", - "properties" : { - "versions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Version" - } - }, - "gatewayEndPoints" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - "api" : { - "$ref" : "#/definitions/GatewayAPI" - }, - "apiId" : { - "type" : "string" - }, - "errorReason" : { - "type" : "string" - }, - "responseStatus" : { - "type" : "string", - "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] - } - } - }, - "Version" : { - "type" : "object", - "properties" : { - "versionNumber" : { - "type" : "string" - }, - "apiId" : { - "type" : "string" - } - } - }, - "APIAccessKey" : { - "type" : "object", - "properties" : { - "apiAccessKey" : { - "type" : "string", - "description" : "API access key" - }, - "expirationInterval" : { - "type" : "string", - "description" : "expiration interval of the api key" - }, - "expirationDate" : { - "type" : "string", - "description" : "expiration date of the api key" - } - } - }, - "Application" : { - "type" : "object", - "properties" : { - "applicationID" : { - "type" : "string", - "description" : "unique identifier of an application" - }, - "name" : { - "type" : "string", - "description" : "name of the application" - }, - "description" : { - "type" : "string", - "description" : "description of the application" - }, - "owner" : { - "type" : "string", - "description" : "owner of the application" - }, - "identifiers" : { - "type" : "array", - "description" : "list of all application identifiers", - "items" : { - "$ref" : "#/definitions/ApplicationIdentifier" - } - }, - "contactEmails" : { - "type" : "array", - "description" : "list of email contacts", - "items" : { - "type" : "string" - } - }, - "iconbyteArray" : { - "type" : "string", - "description" : "application icon byte array" - }, - "accessTokens" : { - "$ref" : "#/definitions/ApplicationToken" - }, - "creationDate" : { - "type" : "string", - "description" : "application creation time" - }, - "lastModified" : { - "type" : "string", - "description" : "last modified time of the application" - }, - "lastUpdated" : { - "type" : "integer", - "format" : "int64", - "description" : "last modified time of the application in milliseconds" - }, - "siteURLs" : { - "type" : "array", - "description" : "list of all site URLs", - "items" : { - "type" : "string" - } - }, - "jsOrigins" : { - "type" : "array", - "description" : "list of all javascript origins", - "items" : { - "type" : "string" - } - }, - "version" : { - "type" : "string" - }, - "isSuspended" : { - "type" : "boolean", - "description" : "holds the suspended state of an application" - }, - "authStrategyIds" : { - "type" : "array", - "uniqueItems" : true, - "items" : { - "type" : "string" - } - }, - "subscription" : { - "type" : "boolean" - } - } - }, - "ApplicationIdentifier" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "unique identifier of the application identifier" - }, - "key" : { - "type" : "string", - "description" : "identifier type" - }, - "name" : { - "type" : "string", - "description" : "name of the identifier" - }, - "value" : { - "type" : "array", - "description" : "list of identifier values", - "items" : { - "type" : "string" - } - } - } - }, - "ApplicationToken" : { - "type" : "object", - "properties" : { - "apiAccessKey" : { - "$ref" : "#/definitions/APIAccessKey" - }, - "oauth2Token" : { - "$ref" : "#/definitions/OAuth2Token" - } - } - }, - "OAuth2Token" : { - "type" : "object", - "properties" : { - "type" : { - "type" : "string", - "description" : "type of the oauth2 client" - }, - "clientId" : { - "type" : "string", - "description" : "unique identifier of the oauth2 client" - }, - "clientSecret" : { - "type" : "string", - "description" : "the client secret" - }, - "clientName" : { - "type" : "string", - "description" : "the name of the client" - }, - "scopes" : { - "type" : "array", - "description" : "the scopes associated with the client", - "items" : { - "type" : "string" - } - }, - "expirationInterval" : { - "type" : "string", - "description" : "the expiration interval" - }, - "refreshCount" : { - "type" : "string", - "description" : "number of times an access token can be refreshed" - }, - "redirectUris" : { - "type" : "array", - "description" : "list of redirect uris", - "items" : { - "type" : "string" - } - } - } - }, - "CommandInfo" : { - "type" : "object", - "properties" : { - "commandName" : { - "type" : "string" - }, - "commandClass" : { - "type" : "string" - } - } - }, - "DataFlavor" : { - "type" : "object", - "properties" : { - "mimeType" : { - "type" : "string" - }, - "humanPresentableName" : { - "type" : "string" - }, - "subType" : { - "type" : "string" - }, - "mimeTypeSerializedObject" : { - "type" : "boolean" - }, - "defaultRepresentationClassAsString" : { - "type" : "string" - }, - "representationClassInputStream" : { - "type" : "boolean" - }, - "representationClassReader" : { - "type" : "boolean" - }, - "representationClassCharBuffer" : { - "type" : "boolean" - }, - "representationClassByteBuffer" : { - "type" : "boolean" - }, - "representationClassSerializable" : { - "type" : "boolean" - }, - "representationClassRemote" : { - "type" : "boolean" - }, - "flavorSerializedObjectType" : { - "type" : "boolean" - }, - "flavorRemoteObjectType" : { - "type" : "boolean" - }, - "flavorJavaFileListType" : { - "type" : "boolean" - }, - "flavorTextType" : { - "type" : "boolean" - }, - "primaryType" : { - "type" : "string" - } - } - }, - "DataHandler" : { - "type" : "object", - "properties" : { - "dataSource" : { - "$ref" : "#/definitions/DataSource" - }, - "name" : { - "type" : "string" - }, - "inputStream" : { - "$ref" : "#/definitions/InputStream" - }, - "content" : { - "type" : "object" - }, - "contentType" : { - "type" : "string" - }, - "outputStream" : { - "$ref" : "#/definitions/OutputStream" - }, - "transferDataFlavors" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/DataFlavor" - } - }, - "preferredCommands" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/CommandInfo" - } - }, - "allCommands" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/CommandInfo" - } - } - } - }, - "DataSource" : { - "type" : "object", - "properties" : { - "name" : { - "type" : "string" - }, - "inputStream" : { - "$ref" : "#/definitions/InputStream" - }, - "contentType" : { - "type" : "string" - }, - "outputStream" : { - "$ref" : "#/definitions/OutputStream" - } - } - }, - "Enumeration" : { - "type" : "object" - }, - "InputStream" : { - "type" : "object" - }, - "Multipart" : { - "type" : "object", - "properties" : { - "contentType" : { - "type" : "string" - }, - "parent" : { - "$ref" : "#/definitions/Part" - }, - "count" : { - "type" : "integer", - "format" : "int32" - } - } - }, - "OutputStream" : { - "type" : "object" - }, - "Part" : { - "type" : "object", - "properties" : { - "size" : { - "type" : "integer", - "format" : "int32" - }, - "inputStream" : { - "$ref" : "#/definitions/InputStream" - }, - "content" : { - "type" : "object" - }, - "fileName" : { - "type" : "string" - }, - "contentType" : { - "type" : "string" - }, - "description" : { - "type" : "string" - }, - "dataHandler" : { - "$ref" : "#/definitions/DataHandler" - }, - "allHeaders" : { - "$ref" : "#/definitions/Enumeration" - }, - "disposition" : { - "type" : "string" - }, - "lineCount" : { - "type" : "integer", - "format" : "int32" - } - } - }, - "APIResponseGetGlobalPolicies" : { - "type" : "object", - "properties" : { - "globalPolicies" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "ScopeInformation" : { - "type" : "object", - "properties" : { - "resourcePath" : { - "type" : "string" - }, - "supportedOperations" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "ScopeResourceIndex" : { - "type" : "object", - "properties" : { - "references" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ScopeInformation" - } - }, - "scope" : { - "$ref" : "#/definitions/Scope" - } - } - }, - "InputServiceRegistryUnpublish" : { - "type" : "object", - "properties" : { - "unpublishInfo" : { - "$ref" : "#/definitions/UnpublishInfo" - }, - "unpublishInfos" : { - "type" : "array", - "description" : "This contains the unpublish information for multiple APIs. Required when publishing more than one API from one or more service registries.", - "items" : { - "$ref" : "#/definitions/UnpublishInfo" - } - } - } - }, - "UnpublishInfo" : { - "type" : "object", - "properties" : { - "apiId" : { - "type" : "string", - "description" : "API id for the API to be unpublished. This field is required." - }, - "serviceRegistryIds" : { - "type" : "array", - "description" : "List of ids of the service registries from which the API has to be unpublished. This field is required.", - "items" : { - "type" : "string" - } - } - } - }, - "ServiceRegistryUnpublishPutResponse" : { - "type" : "object", - "properties" : { - "unpublishResponse" : { - "$ref" : "#/definitions/UnpublishResponse" - }, - "unpublishResponses" : { - "type" : "array", - "description" : "This contains the service registry unpublish status for requests unpublishing more than one API from one or more service registries.", - "items" : { - "$ref" : "#/definitions/UnpublishResponse" - } - } - } - }, - "ServiceRegistryUnpublishResponse" : { - "type" : "object", - "properties" : { - "serviceRegistryId" : { - "type" : "string", - "description" : "Id i.e, UDDI key of the service registry" - }, - "serviceRegistryName" : { - "type" : "string", - "description" : "Name of the service registry" - }, - "success" : { - "type" : "boolean", - "description" : "Represents whether the unpublish operation of API from the service registry is success. Possible values: true/false" - }, - "description" : { - "type" : "string", - "description" : "Represents the status of the unpublish operation of the API from the service registry eg: Unpublish successful, Unpublish failed, etc" - }, - "failureReason" : { - "type" : "string", - "description" : "Provides the reason for the failure when the unpublish operation is not successful" - } - } - }, - "UnpublishResponse" : { - "type" : "object", - "properties" : { - "apiId" : { - "type" : "string", - "description" : "API id of the API published." - }, - "apiName" : { - "type" : "string", - "description" : "API name of the API published." - }, - "serviceRegistryUnpublishResponses" : { - "type" : "array", - "description" : "Contains unpublish status of the API for each service registry in the request.", - "items" : { - "$ref" : "#/definitions/ServiceRegistryUnpublishResponse" - } - }, - "apiVersion" : { - "type" : "string", - "description" : "API version of the API published." - } - } - }, - "Endpoints" : { - "type" : "object", - "properties" : { - "gatewayEndpoint" : { - "type" : "string", - "description" : "API's access endpoint exposed in API Gateway." - }, - "status" : { - "type" : "string", - "description" : "Status of the API endpoint. Shows whether this endpoint is published to the service registry.Possible values are NEW, PUBLISHED and SUSPENDED. NEW represents the endpoint is not published to the service registry. PUBLISHED represents the endpoint is published to the service registry. SUSPENDED represents the endpoint is published to service registry, but is not currently active (for example: during deactivation of API or shutdown of API Gateway or disabling ports).", - "enum" : [ "NEW", "PUBLISHED", "SUSPENDED" ] - } - }, - "description" : "This defines the service registry publish information for API Gateway's API endpoints" - }, - "InputServiceRegistryPublish" : { - "type" : "object", - "properties" : { - "publishInfo" : { - "$ref" : "#/definitions/PublishPayload" - }, - "publishInfos" : { - "type" : "array", - "description" : "This contains the publish information for multiple APIs. Required when publishing more than one API to one or more service registries.", - "items" : { - "$ref" : "#/definitions/PublishPayload" - } - } - } - }, - "IntegrationServerPublishInfo" : { - "type" : "object", - "properties" : { - "integrationServerId" : { - "type" : "string", - "description" : "Uddi key of the integration server created in API Gateway. This field is required." - }, - "packageName" : { - "type" : "string", - "description" : "Name of the package in the integration server in which the API to be published. This field is required." - }, - "folderName" : { - "type" : "string", - "description" : "Name of the folder under the package (mentioned on 'packageName' property) in which the API to be published. This field is required." - }, - "status" : { - "type" : "string", - "enum" : [ "NEW", "PUBLISHED", "SUSPENDED" ] - }, - "integrationServerName" : { - "type" : "string" - } - } - }, - "PublishPayload" : { - "type" : "object", - "properties" : { - "apiId" : { - "type" : "string", - "description" : "API id for the API to be published. This field is required. The API will be published to the service registry with the value configured in 'Service registry display name' field of the API" - }, - "serviceRegistryPublishInfo" : { - "type" : "array", - "description" : "List of service registry publish information for the API. Each element of the list contains the publish information of the API for one service registry.", - "items" : { - "$ref" : "#/definitions/ServiceRegistryPublishInfo" - } - }, - "integrationServerPublishInfo" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/IntegrationServerPublishInfo" - } - } - } - }, - "ServiceRegistryPublishInfo" : { - "type" : "object", - "properties" : { - "serviceRegistryId" : { - "type" : "string", - "description" : "Uddi key of the service registry created in API Gateway. This field is required." - }, - "status" : { - "type" : "string", - "description" : "Publish Status of the API for this service registry. This field is shown only in response and should not be sent by clients in requests. Possible values are NEW, PUBLISHED and SUSPENDED. NEW represents the API is not published to the service registry. PUBLISHED represents the API is published to the service registry. SUSPENDED represents the API is published to service registry, but is not currently active (during deactivation of API or shutdown of API Gateway).", - "enum" : [ "NEW", "PUBLISHED", "SUSPENDED" ] - }, - "name" : { - "type" : "string", - "description" : "Name of the service registry. This field is shown only in response and should not be sent by clients in requests. Only the serviceRegistryId is considered for uniquely identifying the registry." - }, - "gatewayEndpoints" : { - "type" : "array", - "description" : "List of API endpoints of the API. Each element contains an endpoint and the information about the publish status of that endpoint for the current service registry.", - "uniqueItems" : true, - "items" : { - "$ref" : "#/definitions/Endpoints" - } - } - } - }, - "IntegrationServerPublishResponse" : { - "type" : "object", - "properties" : { - "integrationServerId" : { - "type" : "string", - "description" : "Id i.e, UDDI key of the service registry" - }, - "integrationServerName" : { - "type" : "string" - }, - "status" : { - "type" : "string", - "enum" : [ "NEW", "PUBLISHED", "SUSPENDED" ] - }, - "success" : { - "type" : "boolean", - "description" : "Represents whether the publish of API to the service registry is success. Possible values: true/false" - }, - "description" : { - "type" : "string", - "description" : "Represents the status of the publish operation of the API to the service registry eg: Publish successful, Publish failed, etc" - }, - "failureReason" : { - "type" : "string", - "description" : "Provides the reason for the failure when the publish operation is not successful" - } - } - }, - "PublishResponse" : { - "type" : "object", - "properties" : { - "apiId" : { - "type" : "string", - "description" : "API id of the API published." - }, - "apiName" : { - "type" : "string", - "description" : "API name of the API published." - }, - "apiVersion" : { - "type" : "string", - "description" : "API version of the API published." - }, - "serviceRegistryPublishResponses" : { - "type" : "array", - "description" : "Contains publish status of the API for each service registry in the request.", - "items" : { - "$ref" : "#/definitions/ServiceRegistryPublishResponse" - } - }, - "integrationServerPublishResponses" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/IntegrationServerPublishResponse" - } - } - } - }, - "ServiceRegistryPublishPutResponse" : { - "type" : "object", - "properties" : { - "publishResponse" : { - "$ref" : "#/definitions/PublishResponse" - }, - "publishResponses" : { - "type" : "array", - "description" : "This contains the service registry publish status for requests publishing more than one API to one or more service registries.", - "items" : { - "$ref" : "#/definitions/PublishResponse" - } - } - } - }, - "ServiceRegistryPublishResponse" : { - "type" : "object", - "properties" : { - "serviceRegistryId" : { - "type" : "string", - "description" : "Id i.e, UDDI key of the service registry" - }, - "serviceRegistryName" : { - "type" : "string", - "description" : "Name of the service registry" - }, - "status" : { - "type" : "string", - "description" : "Publish Status of the API for this service registry. Possible values are NEW, PUBLISHED and SUSPENDED. NEW represents the API is not published to the service registry. PUBLISHED represents the API is published to the service registry. SUSPENDED represents the API is published to service registry, but is not currently active (during deactivation of API or shutdown of API Gateway).", - "enum" : [ "NEW", "PUBLISHED", "SUSPENDED" ] - }, - "gatewayEndpoints" : { - "type" : "array", - "description" : "List of API endpoints of the API. Each element contains an endpoint and the information about the publish status of that endpoint for the current service registry.", - "uniqueItems" : true, - "items" : { - "$ref" : "#/definitions/Endpoints" - } - }, - "success" : { - "type" : "boolean", - "description" : "Represents whether the publish of API to the service registry is success. Possible values: true/false" - }, - "description" : { - "type" : "string", - "description" : "Represents the status of the publish operation of the API to the service registry eg: Publish successful, Publish failed, etc" - }, - "failureReason" : { - "type" : "string", - "description" : "Provides the reason for the failure when the publish operation is not successful" - } - } - }, - "ServiceRegistryPublishGetResponse" : { - "type" : "object", - "properties" : { - "publishInfo" : { - "$ref" : "#/definitions/PublishPayload" - } - } - }, - "InputIntegrationServerPublish" : { - "type" : "object", - "properties" : { - "publishInfo" : { - "$ref" : "#/definitions/PublishPayload" - }, - "publishInfos" : { - "type" : "array", - "description" : "This contains the publish information for multiple APIs. Required when publishing more than one API to one or more integration servers.", - "items" : { - "$ref" : "#/definitions/PublishPayload" - } - } - } - } - } +{ + "swagger" : "2.0", + "info" : { + "description" : "API Gateway Service Management Service allows you to manage the APIs in the API Gateway. Any user with the 'Manage APIs' functional privilege can manage the APIs in the API Gateway. By default, the users who are part of either API-Gateway-Providers or API-Gateway-Administrators groups will have this privilege.\n\nAPI Gateway supports four types of APIs - REST APIs, SOAP APIs, WebSocket APIs and OData APIs. REST APIs can be created by providing the swagger (file/url), openAPI (file/url), raml (file/url) or can be created from scratch. SOAP APIs can be created using the WSDL (file/url). If the API definitions has reference schemas, then an archive containing all the definitions can be provided as an input. WebSocket APIs can be created from scratch. OData APIs can be created using their service document or metadata document url.\n\nThis service provides you with the options to create, update, read and delete of all the above API types.\n\nAn API can either be in an Active or an InActive state. An Active state indicates that the API is available for consumers. The users can use this service to activate or deactivate the API. Post activation, API Gateway generates 'Gateway Endpoints' which can be used by the API consumers to access the API. Generally API consumers use their applications to consume the APIs.\n\nThis service can also be used to manage the API Scopes. An API Scope is a collection of resources or operations in the API. Users can create multiple scopes for a single API.\n\nOnce the API is created, users can enforce the access restrictions and other rules on the API by add the policies to the API. Policies can be attached to REST, SOAP and OData APIs. Refer to the Policy Management API documentation for more details on the policies. Refer to the Document Management API documentation for more details on attaching documents to an API.\n\nThis service can also be used to publish/unpublish the APIs to/from a service registry. An API in an active state can be registered (published) to one or more service registries.", + "version" : "10.3", + "title" : "API Gateway Service Management Service" + }, + "host" : "localhost:5555", + "basePath" : "/rest/apigateway", + "schemes" : [ "http" ], + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "paths" : { + "/apis" : { + "get" : { + "description" : "Get all APIs or subset of APIs", + "operationId" : "getAPIs", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiIds", + "in" : "query", + "description" : "API Ids for the API to be retrieved", + "required" : false, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864,353bd366-47d4-4703-aecf-9cb40cdcc345" + }, { + "name" : "from", + "in" : "query", + "description" : "Starting index from the list of APIs to be retrieved", + "required" : false, + "type" : "integer" + }, { + "name" : "size", + "in" : "query", + "description" : "Number of APIs to be retrieved", + "required" : false, + "type" : "integer" + } ], + "responses" : { + "200" : { + "description" : "Returns the list of all APIs", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/APIResponseDelete" + } + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": [\r\n {\r\n \"api\": {\r\n \"apiName\": \"ChuckNorrisAPI\",\r\n \"apiVersion\": \"v2\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 2,\r\n \"id\": \"46df4227-a100-486c-9580-0bf388ec6ec7\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n },\r\n {\r\n \"api\": {\r\n \"apiName\": \"ChuckNorrisAPI\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"publishedPortals\": [],\r\n \"systemVersion\": 1,\r\n \"id\": \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "This REST operation is used to create an API by importing a file, url or from scratch", + "operationId" : "createAPI", + "consumes" : [ "application/json", "multipart/form-data" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "file", + "in" : "formData", + "description" : "Input swagger / raml / wsdl file to be imported", + "required" : true, + "type" : "file", + "x-example" : "petstore.json" + }, { + "name" : "apiName", + "in" : "formData", + "description" : "Name of the API", + "required" : true, + "type" : "string", + "x-example" : "Swagger Petstore" + }, { + "name" : "apiDescription", + "in" : "formData", + "description" : "Description of the API", + "required" : false, + "type" : "string", + "x-example" : "This is a sample server Petstore server" + }, { + "name" : "apiVersion", + "in" : "formData", + "description" : "Version of the API", + "required" : false, + "type" : "string", + "x-example" : "V1" + }, { + "name" : "type", + "in" : "formData", + "description" : "Input file type", + "required" : true, + "type" : "string", + "x-example" : "swagger", + "enum" : [ "swagger", "raml", "wsdl", "openapi" ] + }, { + "name" : "rootFileName", + "in" : "formData", + "description" : "Name of the main file in the zip. Required only when the input file is zip format", + "required" : false, + "type" : "string", + "x-example" : "mainFile.wsdl" + }, { + "in" : "body", + "name" : "body", + "description" : "API request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/InputAPI" + }, + "x-examples" : { + "application/json" : "{\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }" + } + } ], + "responses" : { + "200" : { + "description" : "Returns the created API object", + "schema" : { + "$ref" : "#/definitions/APIResponseCreate" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the user missed the mandatory fields like type, file/url/apiDefinition in the request or provide a invalid request body" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "Delete the inactive APIs", + "operationId" : "deleteAPIs", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiIds", + "in" : "query", + "description" : "API Ids for the APIs to be deleted. Multiple API ids combined by comma", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864,353bd366-47d4-4703-aecf-9cb40cdcc854" + }, { + "name" : "forceDelete", + "in" : "query", + "description" : "Flag for force delete. Required when API is associated with some applications", + "required" : false, + "type" : "boolean", + "default" : true, + "x-example" : true + } ], + "responses" : { + "200" : { + "description" : "Returns the apiId along with the error when unsuccessful", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/APIResponseDelete" + } + } + }, + "400" : { + "description" : "This response code returns when the mandatory parameter apiIds is missing in the query parameter" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "204" : { + "description" : "Success" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}" : { + "get" : { + "description" : "Retrieve an API based on the API id.", + "operationId" : "getAPI", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be retrieved", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "name" : "format", + "in" : "query", + "description" : "Output format of the API. If the value is 'swagger', you get a API definition in swagger format. If the value is 'raml', you get a raml document. If the value is 'openapi', you get a open API document. If the value is 'odata', you get a zip file holding the OData metadata and service document.", + "required" : false, + "type" : "string", + "x-example" : "raml" + }, { + "name" : "url", + "in" : "query", + "description" : "User selected endpoint for API definition in swagger/raml format.", + "required" : false, + "type" : "string", + "x-example" : "http://hostname:5555/gateway/servicename/1.0" + } ], + "responses" : { + "200" : { + "description" : "If the format is swagger, returns the swagger content in json and raml returns the raml content in yaml. If the format is openapi, returns the open api content in json. If the format is odata, you get a zip file holding the OData metadata and service document.", + "schema" : { + "$ref" : "#/definitions/APIResponseGetAPI" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "This REST operation is used to update an API by importing a file, url or inline.\n\nWhile updating the API, visibility of the operations can be set by enabling or disabling the operations. Disabled operations will not be exposed to the customers. By default, all the operations are exposed to the consumers.\n\nWhen updating the API using file or url, API Gateway overwrite the resources/operations for the API. But it will retain the maturity state, scopes, visibility and if API mocking is enabled, then default mocked responses, mocked conditions and IS services will also be retained.", + "operationId" : "updateAPI", + "consumes" : [ "application/json", "multipart/form-data" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be updated", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "name" : "file", + "in" : "formData", + "description" : "Input swagger / raml / wsdl file", + "required" : true, + "type" : "file", + "x-example" : "petstore.json" + }, { + "name" : "apiName", + "in" : "formData", + "description" : "Name of the API", + "required" : true, + "type" : "string", + "x-example" : "Swagger Petstore" + }, { + "name" : "apiDescription", + "in" : "formData", + "description" : "Description of the API", + "required" : false, + "type" : "string", + "x-example" : "This is a sample server Petstore server" + }, { + "name" : "apiVersion", + "in" : "formData", + "description" : "Version of the API", + "required" : false, + "type" : "string", + "x-example" : "V1" + }, { + "name" : "type", + "in" : "formData", + "description" : "Input file type", + "required" : true, + "type" : "string", + "x-example" : "swagger", + "enum" : [ "swagger", "raml", "wsdl", "openapi" ] + }, { + "name" : "rootFileName", + "in" : "formData", + "description" : "Name of the main file in the zip. Required when the input file is zip format", + "required" : false, + "type" : "string", + "x-example" : "mainFile.wsdl" + }, { + "in" : "body", + "name" : "body", + "description" : "API request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/GatewayAPI" + }, + "x-examples" : { + "application/json" : "{\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }" + } + } ], + "responses" : { + "200" : { + "description" : "Returns the updated API object", + "schema" : { + "$ref" : "#/definitions/APIResponseCreate" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "400" : { + "description" : "This status code shows when the user missed the mandatory fields like type, file/url/apiDefinition in the request or provide a invalid request body" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "Delete the inactive API", + "operationId" : "deleteAPI", + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be deleted", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "name" : "forceDelete", + "in" : "query", + "description" : "Flag for force delete. Required when API is associated with some applications", + "required" : false, + "type" : "boolean", + "default" : true, + "x-example" : true + } ], + "responses" : { + "200" : { + "description" : "Returns the apiId along with the error when unsuccessful", + "schema" : { + "$ref" : "#/definitions/APIResponseDelete" + } + }, + "400" : { + "description" : "This response code returns when the deleted API is published to API portal or in active state" + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API" + }, + "204" : { + "description" : "Success" + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/applications" : { + "get" : { + "description" : "Retrieves the list of registered applications of an API", + "operationId" : "getApplications", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to find the associated applications", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the list of associated applications", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Application" + } + }, + "examples" : { + "application/json" : "{\r\n \"applications\": [\r\n {\r\n \"name\": \"app1\",\r\n \"description\": null,\r\n \"contactEmails\": [],\r\n \"identifiers\": [],\r\n \"siteURLs\": [],\r\n \"version\": \"1.0\",\r\n \"id\": \"ae48cd69-421e-4bdf-a4d0-e86996a78f68\",\r\n \"created\": \"2017-03-13 13:12:03 GMT\",\r\n \"lastupdated\": null,\r\n \"consumingAPIs\": [\r\n \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n ],\r\n \"accessTokens\": {\r\n \"apiAccessKey_credentials\": {\r\n \"apiAccessKey\": \"cec4b46b-3569-4f73-a561-172dd67c182a\",\r\n \"expirationInterval\": null\r\n },\r\n \"oauth_credentials\": {\r\n \"clientID\": \"40b78ed3-d171-4bd3-99db-51dd2fa71753\",\r\n \"clientSecret\": \"024b9525-6526-45c8-a66c-d192442064e1\",\r\n \"clientName\": \"app1-6b753c2a-0567-462d-a4ea-1b143ab7a381\",\r\n \"scopes\": [\r\n \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n ],\r\n \"token_lifetime\": \"3600\",\r\n \"token_refresh_limit\": \"0\",\r\n \"redirect_uris\": [\r\n \"https://placeholder_redirect_uri\"\r\n ],\r\n \"Type\": \"confidential\"\r\n }\r\n }\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/source" : { + "get" : { + "description" : "Download the API definition that was used to create the API. This is applicable only for SOAP APIs.", + "operationId" : "getSource", + "produces" : [ "multipart/mixed" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to download the source content", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the source files along with the root file name", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Multipart" + } + }, + "examples" : { + "multipart/mixed" : "Message-ID: <296841806.5.1489555643275.JavaMail.MRIZ@MCMRIZ01>\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; \r\n\tboundary=\"----=_Part_4_1098332532.1489555643274\"\r\n\r\n------=_Part_4_1098332532.1489555643274\r\ncontent-type: application/zip\r\nContent-Disposition: attachment; filename=\"echoService.zip\"\r\n\r\nfile content in zip format\r\n------=_Part_4_1098332532.1489555643274\r\ncontent-type: text/plain\r\nContent-Disposition: inline; name=\"rootFileName\"\r\n\r\necho.wsdl\r\n------=_Part_4_1098332532.1489555643274--" + } + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "400" : { + "description" : "This status code returns when the specified API is not a SOAP API" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/globalPolicies" : { + "get" : { + "description" : "Retrieves the list of active global policies applicable to this API", + "operationId" : "getAssociatedGlobalPolicies", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to find the list of applicable global policies", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the list of global policy names", + "schema" : { + "$ref" : "#/definitions/APIResponseGetGlobalPolicies" + }, + "examples" : { + "application/json" : "{\r\n \"globalPolicies\": [\r\n \"GlobalLogInvocationPolicy\"\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/versions" : { + "get" : { + "description" : "Retrieve all the versions of the API", + "operationId" : "getVersions", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to retrieve the versions", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the API versions", + "schema" : { + "$ref" : "#/definitions/APIResponseDelete" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "Create a new version of an API and retain applications if required", + "operationId" : "createVersion", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be versioned", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "in" : "body", + "name" : "body", + "description" : "Create version request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/InputVersion" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"newApiVersion\" : \"v2\",\r\n\t\"retainApplications\" : true\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "Return the newly created version of the API", + "schema" : { + "$ref" : "#/definitions/APIResponse" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code returns when the specified api is not the latest version or if the newApiVersion is empty" + }, + "404" : { + "description" : "Not Found" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/scopes" : { + "get" : { + "description" : "An API Scope is a collection of resources or operations in an API. Users can create multiple scopes for a single API. Policies can be attached to an API level or scope level. This method retrieves the scopes of an API.\n\nYou can create, modify or delete the scopes in the update API operation using PUT /api/{apiId}", + "operationId" : "getScopes", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to retrieve the versions", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns API scopes", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ScopeResourceIndex" + } + }, + "examples" : { + "application/json" : "{\r\n \"scopeReferences\": [\r\n {\r\n \"references\": [\r\n {\r\n \"resourcePath\": \"/random\",\r\n \"supportedOperations\": []\r\n }\r\n ],\r\n \"scope\": {\r\n \"name\": \"Get_Scopes\",\r\n \"description\": \"Dummy description of the scope\",\r\n \"policies\": [\r\n \"db1a42f4-e038-4a1b-82f4-8fee6fbd5687\"\r\n ]\r\n }\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/scopes/{scopeName}" : { + "get" : { + "description" : "Retrieve scopes of an API based on the scope name", + "operationId" : "getScopeByScopeName", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to retrieve the versions", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "name" : "scopeName", + "in" : "path", + "description" : "Name of the scope", + "required" : true, + "type" : "string", + "x-example" : "getScope" + } ], + "responses" : { + "200" : { + "description" : "Returns API scopes", + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ScopeResourceIndex" + } + }, + "examples" : { + "application/json" : "{\r\n \"scopeReferences\": [\r\n {\r\n \"references\": [\r\n {\r\n \"resourcePath\": \"/random\",\r\n \"supportedOperations\": []\r\n }\r\n ],\r\n \"scope\": {\r\n \"name\": \"Get_Scopes\",\r\n \"description\": \"Dummy description of the scope\",\r\n \"policies\": [\r\n \"db1a42f4-e038-4a1b-82f4-8fee6fbd5687\"\r\n ]\r\n }\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway or scopeName is not found in the list of scopes" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/activate" : { + "put" : { + "description" : "Activate an API so that API is exposed to consumers", + "operationId" : "activateAPI", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be activated", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the API object after successful activation", + "schema" : { + "$ref" : "#/definitions/APIResponse" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the API is already in activated state or when no operations/resources are present or none are enabled" + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/deactivate" : { + "put" : { + "description" : "Deactivate an API so that API is not exposed to consumers", + "operationId" : "deactivateAPI", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be deactivated", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the API object after successful deactivation", + "schema" : { + "$ref" : "#/definitions/APIResponse" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"https://api.chucknorris.io/jokes\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {}\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorris\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"08afbfa9-78e1-4c23-bb19-c0012464047e\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-09-03 11:56:21 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"1.0\",\r\n \"apiId\": \"badc18e6-446f-4aa3-96cd-33e46bd40fb5\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the API is already in de-activated state" + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/publish" : { + "put" : { + "description" : "This REST operation is used to publish API to the registered API Portal", + "operationId" : "publishAPI", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be published", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "in" : "body", + "name" : "body", + "description" : "API publish request payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/InputPublish" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"portalGatewayId\" : \"69bac781-6c60-4db3-86f7-50af3ec4963a\",\r\n\t\"communities\" : [\"3bdf8005-5685-3ef5-b132-de4681963fb6\"],\r\n\t\"endpoints\" : [\"https://api.chucknorris.io/jokes\"]\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "Returns the API object after successful publish", + "schema" : { + "$ref" : "#/definitions/APIResponseCreate" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"vendorExtensions\": {},\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"parameters\": [],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"definitions\": {}\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorrisAPI\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"879068cd-8628-4f2a-b903-4e6613ca12ba\"\r\n ],\r\n \"referencedFiles\": {\r\n \"ChuckNorrisAPI.json\": \"{\\r\\n \\\"swagger\\\": \\\"2.0\\\",\\r\\n \\\"info\\\": {\\r\\n \\\"description\\\": \\\"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\\\",\\r\\n \\\"title\\\": \\\"ChuckNorrisAPI\\\",\\r\\n \\\"version\\\": \\\"1.0\\\"\\r\\n },\\r\\n \\\"host\\\": \\\"api.chucknorris.io\\\",\\r\\n \\\"basePath\\\": \\\"/jokes\\\",\\r\\n \\\"schemes\\\": [\\r\\n \\\"https\\\"\\r\\n ],\\r\\n \\\"paths\\\": {\\r\\n \\\"/random\\\": {\\r\\n \\\"get\\\": {\\r\\n \\\"summary\\\": \\\"GET\\\",\\r\\n \\\"deprecated\\\": false,\\r\\n \\\"produces\\\": [\\r\\n \\\"application/json\\\"\\r\\n ],\\r\\n \\\"description\\\": \\\"\\\",\\r\\n \\\"operationId\\\": \\\"GET\\\"\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\"\r\n },\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2017-03-13 09:38:30 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"25fb937a-8360-41ab-8be5-987b14fe631d\",\r\n \"oauth2ScopeName\": \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the user missed the mandatory portalGatewayId or invalid portalGatewayId in the request body" + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/unpublish" : { + "put" : { + "description" : "Unpublish API from the registered API Portal", + "operationId" : "unpublishAPI", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be unpublished", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the API object after successful unpublish", + "schema" : { + "$ref" : "#/definitions/APIResponseCreate" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"vendorExtensions\": {},\r\n \"description\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"version\": \"1.0\",\r\n \"title\": \"ChuckNorrisAPI\"\r\n },\r\n \"host\": \"api.chucknorris.io\",\r\n \"basePath\": \"/jokes\",\r\n \"schemes\": [\r\n \"https\"\r\n ],\r\n \"paths\": {\r\n \"/random\": {\r\n \"get\": {\r\n \"summary\": \"GET\",\r\n \"description\": \"\",\r\n \"operationId\": \"GET\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"parameters\": [],\r\n \"responses\": {},\r\n \"enabled\": true\r\n },\r\n \"enabled\": true\r\n }\r\n },\r\n \"definitions\": {}\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"https://api.chucknorris.io/jokes\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"ChuckNorrisAPI\",\r\n \"apiVersion\": \"1.0\",\r\n \"apiDescription\": \"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"879068cd-8628-4f2a-b903-4e6613ca12ba\"\r\n ],\r\n \"referencedFiles\": {\r\n \"ChuckNorrisAPI.json\": \"{\\r\\n \\\"swagger\\\": \\\"2.0\\\",\\r\\n \\\"info\\\": {\\r\\n \\\"description\\\": \\\"Chuck Norris facts are satirical factoids about martial artist and actor Chuck Norris that have become an Internet phenomenon and as a result have become widespread in popular culture. The 'facts' are normally absurd hyperbolic claims about Norris' toughness, attitude, virility, sophistication, and masculinity.\\\",\\r\\n \\\"title\\\": \\\"ChuckNorrisAPI\\\",\\r\\n \\\"version\\\": \\\"1.0\\\"\\r\\n },\\r\\n \\\"host\\\": \\\"api.chucknorris.io\\\",\\r\\n \\\"basePath\\\": \\\"/jokes\\\",\\r\\n \\\"schemes\\\": [\\r\\n \\\"https\\\"\\r\\n ],\\r\\n \\\"paths\\\": {\\r\\n \\\"/random\\\": {\\r\\n \\\"get\\\": {\\r\\n \\\"summary\\\": \\\"GET\\\",\\r\\n \\\"deprecated\\\": false,\\r\\n \\\"produces\\\": [\\r\\n \\\"application/json\\\"\\r\\n ],\\r\\n \\\"description\\\": \\\"\\\",\\r\\n \\\"operationId\\\": \\\"GET\\\"\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\"\r\n },\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2017-03-13 09:38:30 GMT\",\r\n \"systemVersion\": 1,\r\n \"id\": \"25fb937a-8360-41ab-8be5-987b14fe631d\",\r\n \"oauth2ScopeName\": \"25fb937a-8360-41ab-8be5-987b14fe631d\"\r\n },\r\n \"responseStatus\": \"SUCCESS\"\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the user missed the mandatory portalGatewayId or invalid portalGatewayId in the request body" + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/mock/enable" : { + "put" : { + "description" : "In API Gateway, you can mock an API implementation. API Gateway lets you mock an API by simulating the native service. API Mocking is useful feature in API first approach, where in the provider may choose to expose the mocked API to the consumers when the actual API doesn't exist or isn't complete. \n In API Gateway, when you enable mocking for an API, a default mock response is created for each combination of resource, operation, status code and content-type based on the example and schema set in the API definition. As an API Provider, you can add or modify the default mock responses.\n\nYou can specify conditions at the operation level and configure IS services at the API level for a mocked API in the update API operation. At runtime, when the mocked API is invoked instead of calling the native service, API Gateway returns the mocked response to the consumer based on the below priorities:\n1. If any of the conditions for the invoked operation satisfies, API Gateway returns the associated mocked response.\n2. If no condition is specified or none of the condition for the invoked operation is satisfied, then API Gateway will return \na. the response from an IS service, if an IS service is configured b. default mocked response, if no IS services are configured", + "operationId" : "enableMockAPI", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be activated", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + }, { + "name" : "retainDefaultMockResponses", + "in" : "query", + "description" : "Flag to retain generated mocked responses. When this is set to true, default mocked responses will be retained. If it's set to false, new default mocked responses will be generated using the examples, schema in the API", + "required" : false, + "type" : "boolean", + "default" : false, + "x-example" : true + } ], + "responses" : { + "200" : { + "description" : "Returns the API object after successfully enabling mocking of an API", + "schema" : { + "$ref" : "#/definitions/APIResponse" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"API to demonstrate mocking functionality in international developers day\",\r\n \"version\": \"v1\",\r\n \"title\": \"API_MOCKING\"\r\n },\r\n \"host\": \"localhost\",\r\n \"schemes\": [\r\n \"http\"\r\n ],\r\n \"consumes\": [\r\n \"application/json\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/conditionBasedMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Configure condition and mocked response\",\r\n \"operationId\": \"conditionBasedMockedResponse\",\r\n \"produces\": [\r\n \"text/plain\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\",\r\n \"content\": {\r\n \"text/plain\": {\r\n \"example\": \"No condition evaluates to true. \\nSo API-Gateway sent this default response.\"\r\n }\r\n }\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"text/plain\": \"No condition evaluates to true. \\nSo API-Gateway sent this default response.\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/conditionBasedMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/customESBMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Configure custom ESB mocked response\",\r\n \"operationId\": \"customESBMockedResponse\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\"\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/customESBMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/dynamicMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Dynamic mocked response set\",\r\n \"operationId\": \"dynamicMockedResponse\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\"\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/dynamicMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/staticMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Default mocked response from example\",\r\n \"operationId\": \"generateFromExample\",\r\n \"produces\": [\r\n \"application/json\",\r\n \"application/xml\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response generated from example\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"example\": \"{\\\"resource\\\" : \\\"/generateFromExample\\\",\\\"description\\\" : \\\"Default mocked response from example for status code 200\\\"}\"\r\n },\r\n \"application/xml\": {\r\n \"example\": \"/generateFromExampleDefault mocked response from example for status code 200\"\r\n }\r\n }\r\n },\r\n \"201\": {\r\n \"description\": \"201 response generated from schema\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Pet\"\r\n }\r\n },\r\n \"application/xml\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Pet\"\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"{\\\"resource\\\" : \\\"/generateFromExample\\\",\\\"description\\\" : \\\"Default mocked response from example for status code 200\\\"}\",\r\n \"application/xml\": \"/generateFromExampleDefault mocked response from example for status code 200\"\r\n }\r\n },\r\n \"201\": {\r\n \"responseBody\": {\r\n \"application/json\": \"{\\\"birthday\\\":2059397944,\\\"name\\\":\\\"\\\"}\",\r\n \"application/xml\": \"921604684\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/staticMockedResponse\",\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"http://localhost\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {\r\n \"Pet\": {\r\n \"required\": [\r\n \"name\"\r\n ],\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"birthday\": {\r\n \"type\": \"integer\",\r\n \"format\": \"int32\"\r\n },\r\n \"name\": {\r\n \"type\": \"string\"\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"http://localhost\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"APIMocking\",\r\n \"apiVersion\": \"v1\",\r\n \"apiDescription\": \"API to demonstrate mocking functionality in international developers day\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"19773e29-2838-4efc-aa04-793b48f4d22b\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-11-01 13:44:58 GMT\",\r\n \"systemVersion\": 1,\r\n \"mockService\": {\r\n \"enableMock\": true\r\n },\r\n \"id\": \"afd8eb5e-bba8-447b-8e28-76aac23ba074\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"v1\",\r\n \"apiId\": \"afd8eb5e-bba8-447b-8e28-76aac23ba074\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the API is already in activated state or when invalid json or xml is provided in the example part of the operation" + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/apis/{apiId}/mock/disable" : { + "put" : { + "description" : "Once API is disabled from mocking capability, at runtime all the API invocations are redirected to the native service instead of sending the mocked response", + "operationId" : "disableMockAPI", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "path", + "description" : "API Id for the API to be deactivated", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the API object after successful disabling mocking of an API", + "schema" : { + "$ref" : "#/definitions/APIResponse" + }, + "examples" : { + "application/json" : "{\r\n \"apiResponse\": {\r\n \"api\": {\r\n \"apiDefinition\": {\r\n \"type\": \"rest\",\r\n \"info\": {\r\n \"description\": \"API to demonstrate mocking functionality in international developers day\",\r\n \"version\": \"v1\",\r\n \"title\": \"API_MOCKING\"\r\n },\r\n \"host\": \"localhost\",\r\n \"schemes\": [\r\n \"http\"\r\n ],\r\n \"consumes\": [\r\n \"application/json\"\r\n ],\r\n \"security\": [],\r\n \"paths\": {\r\n \"/conditionBasedMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Configure condition and mocked response\",\r\n \"operationId\": \"conditionBasedMockedResponse\",\r\n \"produces\": [\r\n \"text/plain\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\",\r\n \"content\": {\r\n \"text/plain\": {\r\n \"example\": \"No condition evaluates to true. \\nSo API-Gateway sent this default response.\"\r\n }\r\n }\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"text/plain\": \"No condition evaluates to true. \\nSo API-Gateway sent this default response.\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/conditionBasedMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/customESBMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Configure custom ESB mocked response\",\r\n \"operationId\": \"customESBMockedResponse\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\"\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/customESBMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/dynamicMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Dynamic mocked response set\",\r\n \"operationId\": \"dynamicMockedResponse\",\r\n \"produces\": [\r\n \"application/json\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response\"\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/dynamicMockedResponse\",\r\n \"enabled\": true\r\n },\r\n \"/staticMockedResponse\": {\r\n \"post\": {\r\n \"summary\": \"Default mocked response from example\",\r\n \"operationId\": \"generateFromExample\",\r\n \"produces\": [\r\n \"application/json\",\r\n \"application/xml\"\r\n ],\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"200 response generated from example\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"example\": \"{\\\"resource\\\" : \\\"/generateFromExample\\\",\\\"description\\\" : \\\"Default mocked response from example for status code 200\\\"}\"\r\n },\r\n \"application/xml\": {\r\n \"example\": \"/generateFromExampleDefault mocked response from example for status code 200\"\r\n }\r\n }\r\n },\r\n \"201\": {\r\n \"description\": \"201 response generated from schema\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Pet\"\r\n }\r\n },\r\n \"application/xml\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Pet\"\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"mockedResponses\": {\r\n \"200\": {\r\n \"responseBody\": {\r\n \"application/json\": \"{\\\"resource\\\" : \\\"/generateFromExample\\\",\\\"description\\\" : \\\"Default mocked response from example for status code 200\\\"}\",\r\n \"application/xml\": \"/generateFromExampleDefault mocked response from example for status code 200\"\r\n }\r\n },\r\n \"201\": {\r\n \"responseBody\": {\r\n \"application/json\": \"{\\\"birthday\\\":2059397944,\\\"name\\\":\\\"\\\"}\",\r\n \"application/xml\": \"921604684\"\r\n }\r\n }\r\n },\r\n \"enabled\": true\r\n },\r\n \"parameters\": [],\r\n \"displayName\": \"/staticMockedResponse\",\r\n \"enabled\": true\r\n }\r\n },\r\n \"securityDefinitions\": {},\r\n \"definitions\": {},\r\n \"baseUriParameters\": [],\r\n \"externalDocs\": [],\r\n \"servers\": [\r\n {\r\n \"url\": \"http://localhost\"\r\n }\r\n ],\r\n \"components\": {\r\n \"schemas\": {\r\n \"Pet\": {\r\n \"required\": [\r\n \"name\"\r\n ],\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"birthday\": {\r\n \"type\": \"integer\",\r\n \"format\": \"int32\"\r\n },\r\n \"name\": {\r\n \"type\": \"string\"\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"nativeEndpoint\": [\r\n {\r\n \"passSecurityHeaders\": true,\r\n \"uri\": \"http://localhost\",\r\n \"connectionTimeoutDuration\": 0,\r\n \"alias\": false\r\n }\r\n ],\r\n \"apiName\": \"APIMocking\",\r\n \"apiVersion\": \"v1\",\r\n \"apiDescription\": \"API to demonstrate mocking functionality in international developers day\",\r\n \"maturityState\": \"Beta\",\r\n \"isActive\": false,\r\n \"type\": \"REST\",\r\n \"owner\": \"Administrator\",\r\n \"policies\": [\r\n \"19773e29-2838-4efc-aa04-793b48f4d22b\"\r\n ],\r\n \"scopes\": [],\r\n \"publishedPortals\": [],\r\n \"creationDate\": \"2018-11-01 13:44:58 GMT\",\r\n \"systemVersion\": 1,\r\n \"mockService\": {\r\n \"enableMock\": false\r\n },\r\n \"id\": \"afd8eb5e-bba8-447b-8e28-76aac23ba074\"\r\n },\r\n \"responseStatus\": \"SUCCESS\",\r\n \"versions\": [\r\n {\r\n \"versionNumber\": \"v1\",\r\n \"apiId\": \"afd8eb5e-bba8-447b-8e28-76aac23ba074\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code shows when the API is already in activated state or in mocked state" + }, + "404" : { + "description" : "This status code indicates that the apiId specified is not found in the API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/serviceRegistry/publish" : { + "get" : { + "description" : "Retrieve the service registry publish information for the API", + "operationId" : "getServiceRegistryPublishInfo", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiId", + "in" : "query", + "description" : "API Id of the API for which ServiceRegistryPublishInfo is to be fetched", + "required" : true, + "type" : "string", + "x-example" : "353bd366-47d4-4703-aecf-9cb40cdcc864" + } ], + "responses" : { + "200" : { + "description" : "Returns the service registry publish info for the API", + "schema" : { + "$ref" : "#/definitions/ServiceRegistryPublishGetResponse" + }, + "examples" : { + "application/json" : "{\r\n \"publishInfo\": {\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\",\r\n \"serviceRegistryPublishInfo\": [\r\n {\r\n \"serviceRegistryId\": \"aec973cd-1e4c-4a93-93a4-950e32d39156\",\r\n \"status\": \"PUBLISHED\",\r\n \"name\": \"MyServiceConsul\",\r\n \"gatewayEndpoints\": [\r\n {\r\n \"gatewayEndpoint\": \"http://localhost:5555/ws/calc/1\",\r\n \"status\": \"PUBLISHED\"\r\n },\r\n {\r\n \"gatewayEndpoint\": \"http://localhost:1111/ws/calc/1\",\r\n \"status\": \"NEW\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that Publish Info for the apiId specified is not found in API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "Publish one or more APIs to one or more service registries", + "operationId" : "publishToServiceRegistry", + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "Service registry publish payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/InputServiceRegistryPublish" + }, + "x-examples" : { + "application/json" : "{\r\n \"publishInfo\": {\r\n \"serviceRegistryPublishInfo\": [\r\n {\r\n \"gatewayEndpoints\": [\r\n {\r\n \"gatewayEndpoint\": \"http://localhost:5555/ws/calc/1\"\r\n }\r\n ],\r\n \"serviceRegistryId\": \"aec973cd-1e4c-4a93-93a4-950e32d39156\"\r\n }\r\n ],\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\"\r\n }\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "Returns the status of the publish operations given in the request.", + "schema" : { + "$ref" : "#/definitions/ServiceRegistryPublishPutResponse" + }, + "examples" : { + "application/json" : "{\r\n \"publishResponse\": {\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\",\r\n \"apiName\": \"CalcService\",\r\n \"apiVersion\": \"10.3\",\r\n \"serviceRegistryPublishResponses\": [\r\n {\r\n \"serviceRegistryId\": \"aec973cd-1e4c-4a93-93a4-950e32d39156\",\r\n \"serviceRegistryName\": \"MyServiceConsul\",\r\n \"status\": \"PUBLISHED\",\r\n \"gatewayEndpoints\": [\r\n {\r\n \"gatewayEndpoint\": \"http://localhost:5555/ws/calc/1\",\r\n \"status\": \"PUBLISHED\",\r\n }\r\n ],\r\n \"success\": true,\r\n \"description\": \"Publish successful\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "400" : { + "description" : "This status code indicates an invalid request body" + }, + "404" : { + "description" : "This status code indicates that API with given apiId is not found in API Gateway" + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/serviceRegistry/unpublish" : { + "put" : { + "description" : "Unpublish one or more APIs from one or more service registries", + "operationId" : "unpublishFromServiceRegistry", + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "Service registry unpublish payload", + "required" : true, + "schema" : { + "$ref" : "#/definitions/InputServiceRegistryUnpublish" + }, + "x-examples" : { + "application/json" : "{\r\n \"unpublishInfo\": {\r\n \"serviceRegistryIds\": [\r\n \"aec973cd-1e4c-4a93-93a4-950e32d39156\"\r\n ],\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\"\r\n },\r\n \"forceUnpublish\": false\r\n}ds" + } + } ], + "responses" : { + "200" : { + "description" : "Returns the service registry unpublish response", + "schema" : { + "$ref" : "#/definitions/ServiceRegistryUnpublishPutResponse" + }, + "examples" : { + "application/json" : "{\r\n \"unpublishResponse\": {\r\n \"apiId\": \"afe8b72e-e1a5-47c6-9b43-e7f12858c091\",\r\n \"apiName\": \"CalcService\",\r\n \"apiVersion\": \"10.3\",\r\n \"serviceRegistryUnpublishResponses\": [\r\n {\r\n \"serviceRegistryId\": \"aec973cd-1e4c-4a93-93a4-950e32d39156\",\r\n \"serviceRegistryName\": \"MyServiceConsul\",\r\n \"success\": true,\r\n \"description\": \" Unpublish successful\"\r\n }\r\n ]\r\n }\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + } + }, + "securityDefinitions" : { + "Basic" : { + "description" : "API Gateway Administrator and API Gateway provider", + "type" : "basic" + } + }, + "definitions" : { + "APIResponseDelete" : { + "type" : "object", + "properties" : { + "apiId" : { + "type" : "string" + }, + "responseStatus" : { + "type" : "string", + "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] + }, + "errorReason" : { + "type" : "string" + } + } + }, + "API" : { + "type" : "object", + "discriminator" : "type", + "properties" : { + "title" : { + "type" : "string" + }, + "version" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "uri" : { + "type" : "array", + "uniqueItems" : true, + "items" : { + "type" : "string" + } + }, + "serviceRegistryDisplayName" : { + "type" : "string" + }, + "type" : { + "type" : "string" + } + } + }, + "APIResponseGetAPI" : { + "type" : "object", + "properties" : { + "versions" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Version" + } + }, + "gatewayEndPoints" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "api" : { + "$ref" : "#/definitions/GatewayAPI" + }, + "apiId" : { + "type" : "string" + }, + "responseStatus" : { + "type" : "string", + "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] + }, + "errorReason" : { + "type" : "string" + } + } + }, + "AbstractParameter" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + } + } + }, + "ActionImport" : { + "type" : "object", + "properties" : { + "action" : { + "type" : "string" + }, + "enabled" : { + "type" : "boolean" + } + } + }, + "ArrayModel" : { + "allOf" : [ { + "$ref" : "#/definitions/Model" + }, { + "type" : "object", + "properties" : { + "items" : { + "$ref" : "#/definitions/Property" + }, + "minItems" : { + "type" : "integer", + "format" : "int32" + }, + "maxItems" : { + "type" : "integer", + "format" : "int32" + } + } + } ] + }, + "ArrayProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "uniqueItems" : { + "type" : "boolean" + }, + "items" : { + "$ref" : "#/definitions/Property" + }, + "maxItems" : { + "type" : "integer", + "format" : "int32" + }, + "minItems" : { + "type" : "integer", + "format" : "int32" + } + } + } ] + }, + "ArraySchema" : { + "allOf" : [ { + "$ref" : "#/definitions/Schema" + }, { + "type" : "object", + "properties" : { + "type" : { + "type" : "string" + }, + "items" : { + "description" : "Value MUST be an object and not an array. Inline or referenced schema MUST be of a Schema Object and not a standard JSON Schema. items MUST be present if the type is array", + "$ref" : "#/definitions/Schema" + } + } + } ] + }, + "BaseIntegerProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "minimum" : { + "type" : "number" + }, + "maximum" : { + "type" : "number" + }, + "multipleOf" : { + "type" : "number" + }, + "exclusiveMinimum" : { + "type" : "boolean" + }, + "exclusiveMaximum" : { + "type" : "boolean" + } + } + } ] + }, + "BodyParameter" : { + "allOf" : [ { + "$ref" : "#/definitions/Parameter" + }, { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "schema" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/Model" + } + }, + "examples" : { + "type" : "object", + "additionalProperties" : { + "type" : "string" + } + } + } + } ] + }, + "BooleanProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "enum" : { + "type" : "array", + "items" : { + "type" : "boolean" + } + } + } + } ] + }, + "BooleanSchema" : { + "allOf" : [ { + "$ref" : "#/definitions/Schema" + }, { + "type" : "object", + "properties" : { + "type" : { + "type" : "string" + } + } + } ] + }, + "Callback" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "get$ref" : { + "type" : "string" + }, + "callbacksMap" : { + "type" : "object", + "description" : "A Path Item Object used to define a callback request and expected responses", + "additionalProperties" : { + "$ref" : "#/definitions/Path" + } + } + } + }, + "Components" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "schemas" : { + "type" : "object", + "description" : "An object to hold reusable schema objects", + "additionalProperties" : { + "$ref" : "#/definitions/Schema" + } + }, + "responses" : { + "type" : "object", + "description" : "An object to hold reusable response objects", + "additionalProperties" : { + "$ref" : "#/definitions/Response" + } + }, + "parameters" : { + "type" : "object", + "description" : "An object to hold reusable parameter objects", + "additionalProperties" : { + "$ref" : "#/definitions/Parameter" + } + }, + "examples" : { + "type" : "object", + "description" : "An object to hold reusable example objects", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "requestBodies" : { + "type" : "object", + "description" : "An object to hold reusable requestBody objects", + "additionalProperties" : { + "$ref" : "#/definitions/RequestBody" + } + }, + "headers" : { + "type" : "object", + "description" : "An object to hold reusable header objects", + "additionalProperties" : { + "$ref" : "#/definitions/Header" + } + }, + "securitySchemes" : { + "type" : "object", + "description" : "An object to hold reusable securityScheme objects", + "additionalProperties" : { + "$ref" : "#/definitions/SecurityScheme" + } + }, + "links" : { + "type" : "object", + "description" : "An object to hold reusable link objects", + "additionalProperties" : { + "$ref" : "#/definitions/Link" + } + }, + "callbacks" : { + "type" : "object", + "description" : "An object to hold reusable callback objects", + "additionalProperties" : { + "$ref" : "#/definitions/Callback" + } + } + } + }, + "ComposedModel" : { + "allOf" : [ { + "$ref" : "#/definitions/Model" + }, { + "type" : "object", + "properties" : { + "allOf" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Model" + } + }, + "anyOf" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Model" + } + }, + "oneOf" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Model" + } + }, + "parent" : { + "$ref" : "#/definitions/Model" + }, + "child" : { + "$ref" : "#/definitions/Model" + }, + "interfaces" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Model" + } + } + } + } ] + }, + "ComposedProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "allOf" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Property" + } + }, + "anyOf" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Property" + } + }, + "oneOf" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Property" + } + } + } + } ] + }, + "ComposedSchema" : { + "allOf" : [ { + "$ref" : "#/definitions/Schema" + }, { + "type" : "object", + "properties" : { + "allOf" : { + "type" : "array", + "description" : "Must be valid against all of the subschemas", + "items" : { + "$ref" : "#/definitions/Schema" + } + }, + "anyOf" : { + "type" : "array", + "description" : "Must be valid against any of the subschemas", + "items" : { + "$ref" : "#/definitions/Schema" + } + }, + "oneOf" : { + "type" : "array", + "description" : "Must be valid against exactly one of the subschemas", + "items" : { + "$ref" : "#/definitions/Schema" + } + } + } + } ] + }, + "Contact" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "The identifying name of the contact person/organization" + }, + "url" : { + "type" : "string", + "description" : "The URL pointing to the contact information" + }, + "email" : { + "type" : "string", + "description" : "The email address of the contact person/organization" + } + } + }, + "CookieParameter" : { + "allOf" : [ { + "$ref" : "#/definitions/Parameter" + }, { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "style" : { + "type" : "string", + "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", + "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] + }, + "explode" : { + "type" : "boolean", + "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" + }, + "allowReserved" : { + "type" : "boolean", + "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "extendedExample" : { + "type" : "object", + "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" + }, + "content" : { + "type" : "object", + "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "xpath" : { + "$ref" : "#/definitions/Xpath" + }, + "default" : { + "type" : "string" + }, + "parameterSchema" : { + "$ref" : "#/definitions/Schema" + }, + "_enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "DateTimeProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "enum" : { + "type" : "array", + "items" : { + "type" : "object" + } + } + } + } ] + }, + "DecimalProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "minimum" : { + "type" : "number" + }, + "maximum" : { + "type" : "number" + }, + "multipleOf" : { + "type" : "number" + }, + "exclusiveMinimum" : { + "type" : "boolean" + }, + "exclusiveMaximum" : { + "type" : "boolean" + } + } + } ] + }, + "Endpoint" : { + "type" : "object", + "properties" : { + "optimizationTechnique" : { + "type" : "string" + }, + "passSecurityHeaders" : { + "type" : "boolean" + }, + "uri" : { + "type" : "string" + }, + "connectionTimeoutDuration" : { + "type" : "integer", + "format" : "int32" + }, + "alias" : { + "type" : "boolean" + } + } + }, + "EntitySet" : { + "type" : "object", + "properties" : { + "entityType" : { + "type" : "string" + }, + "parameters" : { + "type" : "object", + "additionalProperties" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + }, + "enabled" : { + "type" : "boolean" + } + } + }, + "EntityType" : { + "type" : "object", + "properties" : { + "properties" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "navigationProperties" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/EntitySet" + } + }, + "methods" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/MethodParameters" + } + } + } + }, + "Example" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "summary" : { + "type" : "string", + "description" : "Short description for the example" + }, + "description" : { + "type" : "string", + "description" : "Long description for the example" + }, + "value" : { + "type" : "object", + "description" : "Embedded literal example. The value field and externalValue field are mutually exclusive. To represent examples of media types that cannot naturally represented in JSON or YAML, use a string value to contain the example, escaping where necessary" + }, + "externalValue" : { + "type" : "string", + "description" : "A URL that points to the literal example. This provides the capability to reference examples that cannot easily be included in JSON or YAML documents. The value field and externalValue field are mutually exclusive" + }, + "get$ref" : { + "type" : "string" + } + } + }, + "ExternalDocs" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "description" : { + "type" : "string", + "description" : "A short description of the target documentation" + }, + "url" : { + "type" : "string", + "description" : "The URL for the target documentation" + } + } + }, + "FormParameter" : { + "allOf" : [ { + "$ref" : "#/definitions/Parameter" + }, { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "style" : { + "type" : "string", + "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", + "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] + }, + "explode" : { + "type" : "boolean", + "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" + }, + "allowReserved" : { + "type" : "boolean", + "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "extendedExample" : { + "type" : "object", + "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" + }, + "content" : { + "type" : "object", + "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "xpath" : { + "$ref" : "#/definitions/Xpath" + }, + "default" : { + "type" : "string" + }, + "parameterSchema" : { + "$ref" : "#/definitions/Schema" + }, + "_enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "FunctionImport" : { + "type" : "object", + "properties" : { + "function" : { + "type" : "string" + }, + "enabled" : { + "type" : "boolean" + } + } + }, + "GatewayAPI" : { + "type" : "object", + "properties" : { + "apiDefinition" : { + "$ref" : "#/definitions/API" + }, + "nativeEndpoint" : { + "type" : "array", + "readOnly" : true, + "uniqueItems" : true, + "items" : { + "$ref" : "#/definitions/Endpoint" + } + }, + "apiName" : { + "type" : "string" + }, + "apiVersion" : { + "type" : "string" + }, + "apiEndpointPrefix" : { + "type" : "string" + }, + "apiDescription" : { + "type" : "string" + }, + "maturityState" : { + "type" : "string" + }, + "apiGroups" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "isActive" : { + "type" : "boolean", + "readOnly" : true + }, + "type" : { + "type" : "string" + }, + "owner" : { + "type" : "string", + "readOnly" : true + }, + "policies" : { + "type" : "array", + "readOnly" : true, + "items" : { + "type" : "string" + } + }, + "rootFileName" : { + "type" : "string", + "readOnly" : true + }, + "scopes" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Scope" + } + }, + "publishedPortals" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "publishedToRegistry" : { + "type" : "boolean" + }, + "creationDate" : { + "type" : "string", + "readOnly" : true + }, + "lastModified" : { + "type" : "string", + "readOnly" : true + }, + "prevVersion" : { + "type" : "string", + "readOnly" : true + }, + "nextVersion" : { + "type" : "string", + "readOnly" : true + }, + "systemVersion" : { + "type" : "integer", + "format" : "int32", + "readOnly" : true + }, + "mockService" : { + "$ref" : "#/definitions/MockService" + }, + "apiDocuments" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "id" : { + "type" : "string" + }, + "oauth2ScopeName" : { + "type" : "string" + } + } + }, + "GatewaySchema" : { + "allOf" : [ { + "$ref" : "#/definitions/Schema" + }, { + "type" : "object", + "properties" : { + "type" : { + "type" : "string" + }, + "schema" : { + "type" : "string" + } + } + } ] + }, + "Header" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "style" : { + "type" : "string", + "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", + "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] + }, + "explode" : { + "type" : "boolean", + "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" + }, + "allowReserved" : { + "type" : "boolean", + "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "extendedExample" : { + "type" : "object", + "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" + }, + "content" : { + "type" : "object", + "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "xpath" : { + "$ref" : "#/definitions/Xpath" + }, + "default" : { + "type" : "string" + }, + "parameterSchema" : { + "$ref" : "#/definitions/Schema" + }, + "_enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "HeaderParameter" : { + "allOf" : [ { + "$ref" : "#/definitions/Parameter" + }, { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "style" : { + "type" : "string", + "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", + "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] + }, + "explode" : { + "type" : "boolean", + "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" + }, + "allowReserved" : { + "type" : "boolean", + "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "extendedExample" : { + "type" : "object", + "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" + }, + "content" : { + "type" : "object", + "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "xpath" : { + "$ref" : "#/definitions/Xpath" + }, + "default" : { + "type" : "string" + }, + "parameterSchema" : { + "$ref" : "#/definitions/Schema" + }, + "_enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "Info" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "description" : { + "type" : "string", + "description" : "A short description of the application" + }, + "version" : { + "type" : "string", + "description" : "Version of the API" + }, + "title" : { + "type" : "string", + "description" : "The title of the application" + }, + "termsOfService" : { + "type" : "string", + "description" : "A URL to the Terms of Service for the API" + }, + "contact" : { + "description" : "The contact information for the exposed API", + "$ref" : "#/definitions/Contact" + }, + "license" : { + "description" : "The license information for the exposed API", + "$ref" : "#/definitions/Licence" + } + } + }, + "IntegerSchema" : { + "allOf" : [ { + "$ref" : "#/definitions/Schema" + }, { + "type" : "object", + "properties" : { + "type" : { + "type" : "string" + }, + "format" : { + "type" : "string" + }, + "enum" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Number" + } + }, + "default" : { + "$ref" : "#/definitions/Number" + } + } + } ] + }, + "Licence" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "name" : { + "type" : "string", + "description" : "The license name used for the API" + }, + "url" : { + "type" : "string", + "description" : "A URL to the license used for the API" + } + } + }, + "Link" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "operationRef" : { + "type" : "string", + "description" : "A relative or absolute reference to an OAS operation. This field is mutually exclusive of the operationId field, and MUST point to an Operation Object. Relative operationRef values MAY be used to locate an existing Operation Object in the API definition" + }, + "operationId" : { + "type" : "string", + "description" : "The name of an existing, resolvable OAS operation, as defined with a unique operationId. This field is mutually exclusive of the operationRef field" + }, + "parameters" : { + "type" : "object", + "description" : "A map representing parameters to pass to an operation as specified with operationId or identified via operationRef. The key is the parameter name to be used, whereas the value can be a constant or an expression to be evaluated and passed to the linked operation. The parameter name can be qualified using the parameter location [{in}.]{name} for operations that use the same parameter name in different locations (e.g. path.id)", + "additionalProperties" : { + "type" : "string" + } + }, + "requestBody" : { + "type" : "string", + "description" : "A literal value or {expression} to use as a request body when calling the target operation" + }, + "description" : { + "type" : "string", + "description" : "A description of the link" + }, + "get$ref" : { + "type" : "string" + } + } + }, + "MapProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "additionalProperties" : { + "$ref" : "#/definitions/Property" + }, + "minProperties" : { + "type" : "integer", + "format" : "int32" + }, + "maxProperties" : { + "type" : "integer", + "format" : "int32" + } + } + } ] + }, + "MediaType" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "schema" : { + "description" : "The schema defining the content of the request, response, or parameter", + "$ref" : "#/definitions/Schema" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example object SHOULD match the media type and specified schema if present. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "example" : { + "type" : "object", + "description" : "Example of the media type. The example object SHOULD be in the correct format as specified by the media type. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema" + } + } + }, + "MessageFrame" : { + "type" : "object", + "properties" : { + "origin" : { + "type" : "string", + "enum" : [ "Server", "Client" ] + }, + "type" : { + "type" : "string", + "enum" : [ "Binary", "Text" ] + }, + "messagePayload" : { + "type" : "string" + }, + "messageDescription" : { + "type" : "string" + } + } + }, + "MethodParameters" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "parameters" : { + "type" : "object", + "additionalProperties" : { + "type" : "string" + } + }, + "returnType" : { + "type" : "string" + } + } + }, + "MockService" : { + "type" : "object", + "properties" : { + "enableMock" : { + "type" : "boolean" + }, + "runAsUser" : { + "type" : "string" + }, + "service" : { + "type" : "string" + } + } + }, + "MockedCondition" : { + "type" : "object", + "properties" : { + "mockedConditionParameter" : { + "type" : "string", + "enum" : [ "BODY", "HEADER", "QUERYPARAMETER" ] + }, + "mockedLevel1Operator" : { + "type" : "string", + "enum" : [ "EQUALS", "NOTEQUALS", "CONTAINSKEY", "CONTAINSKEYVALUE" ] + }, + "mockedLevel2Operator" : { + "type" : "string", + "enum" : [ "EQUALS", "NOTEQUALS", "CONTAINS", "STARTSWITH", "ENDSWITH" ] + }, + "value1" : { + "type" : "string" + }, + "value2" : { + "type" : "string" + }, + "conditionName" : { + "type" : "string" + } + } + }, + "MockedConditionsBasedCustomResponse" : { + "type" : "object", + "properties" : { + "mockedConditionList" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/MockedCondition" + } + }, + "mockedResponse" : { + "$ref" : "#/definitions/MockedResponse" + } + } + }, + "MockedResponse" : { + "type" : "object", + "properties" : { + "responseBody" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "responseHeaders" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "statusCode" : { + "type" : "string" + } + } + }, + "Model" : { + "type" : "object", + "discriminator" : "type", + "properties" : { + "reference" : { + "type" : "string" + }, + "title" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "example" : { + "type" : "object" + }, + "type" : { + "type" : "string" + }, + "externalDocs" : { + "$ref" : "#/definitions/ExternalDocs" + }, + "properties" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + } + } + }, + "ModelImpl" : { + "allOf" : [ { + "$ref" : "#/definitions/Model" + }, { + "type" : "object", + "properties" : { + "format" : { + "type" : "string" + }, + "name" : { + "type" : "string" + }, + "required" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "properties" : { + "type" : "object", + "readOnly" : true, + "additionalProperties" : { + "$ref" : "#/definitions/Property" + } + }, + "discriminator" : { + "type" : "string" + }, + "xml" : { + "$ref" : "#/definitions/Xml" + }, + "defaultValue" : { + "type" : "object" + }, + "allowEmptyValue" : { + "type" : "boolean" + }, + "uniqueItems" : { + "type" : "boolean" + }, + "minimum" : { + "type" : "number" + }, + "maximum" : { + "type" : "number" + }, + "enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "Namespaces" : { + "type" : "object", + "properties" : { + "prefix" : { + "type" : "string" + }, + "uri" : { + "type" : "string" + } + } + }, + "Number" : { + "type" : "object" + }, + "NumberSchema" : { + "allOf" : [ { + "$ref" : "#/definitions/Schema" + }, { + "type" : "object", + "properties" : { + "type" : { + "type" : "string" + }, + "enum" : { + "type" : "array", + "items" : { + "type" : "number" + } + }, + "default" : { + "type" : "number" + } + } + } ] + }, + "OAuth2Definition" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "description" : { + "type" : "string" + }, + "type" : { + "type" : "string" + }, + "authorizationUrl" : { + "type" : "string" + }, + "authorizationGrants" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "tokenUrl" : { + "type" : "string" + }, + "flow" : { + "type" : "string" + }, + "scopes" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "refreshUrl" : { + "type" : "string" + }, + "securitySchemeDescriptor" : { + "$ref" : "#/definitions/SecuritySchemeDescriptor" + } + } + }, + "OAuthFlows" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "implicit" : { + "$ref" : "#/definitions/OAuth2Definition" + }, + "password" : { + "$ref" : "#/definitions/OAuth2Definition" + }, + "clientCredentials" : { + "$ref" : "#/definitions/OAuth2Definition" + }, + "authorizationCode" : { + "$ref" : "#/definitions/OAuth2Definition" + } + } + }, + "ODataAPI" : { + "allOf" : [ { + "$ref" : "#/definitions/API" + }, { + "type" : "object", + "properties" : { + "odataVersion" : { + "type" : "string" + }, + "serviceRoot" : { + "type" : "string" + }, + "serviceDocument" : { + "type" : "string" + }, + "metaDataDocument" : { + "type" : "string" + }, + "entitySets" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/EntitySet" + } + }, + "singletons" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/EntitySet" + } + }, + "actionImports" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/ActionImport" + } + }, + "functionImports" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/FunctionImport" + } + }, + "entityTypes" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/EntityType" + } + }, + "actions" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/EntityType" + } + }, + "functions" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/EntityType" + } + }, + "tags" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Tag" + } + }, + "apiTags" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "serviceRegistryDisplayName" : { + "type" : "string", + "description" : "The name of the API in service registry when the API is published to a service registry." + } + } + } ] + }, + "ObjectProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "properties" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/Property" + } + } + } + } ] + }, + "ObjectSchema" : { + "allOf" : [ { + "$ref" : "#/definitions/Schema" + }, { + "type" : "object", + "properties" : { + "type" : { + "type" : "string" + } + } + } ] + }, + "Operation" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "tags" : { + "type" : "array", + "description" : "A list of tags for API documentation control. Tags can be used for logical grouping of operations by resources or any other qualifier", + "items" : { + "type" : "string" + } + }, + "summary" : { + "type" : "string", + "description" : "A short summary of what the operation does" + }, + "description" : { + "type" : "string", + "description" : "A verbose explanation of the operation behavior" + }, + "operationId" : { + "type" : "string", + "description" : "Unique string used to identify the operation. The id MUST be unique among all operations described in the API. The operationId value is case-sensitive" + }, + "parameters" : { + "type" : "array", + "description" : "A list of parameters that are applicable for this operation. If a parameter is already defined at the Path Item, the new definition will override it but can never remove it", + "items" : { + "$ref" : "#/definitions/Parameter" + } + }, + "responses" : { + "type" : "object", + "description" : "The list of possible responses as they are returned from executing this operation", + "additionalProperties" : { + "$ref" : "#/definitions/Response" + } + }, + "mockedResponses" : { + "type" : "object", + "description" : "The list of possible mocked responses as they are returned from executing this operation and it's applicable only for mocked APIs", + "additionalProperties" : { + "$ref" : "#/definitions/MockedResponse" + } + }, + "mockedConditionsBasedCustomResponsesList" : { + "type" : "array", + "description" : "The list of mocked conditions and it's applicable only for mocked APIs", + "items" : { + "$ref" : "#/definitions/MockedConditionsBasedCustomResponse" + } + }, + "externalDocs" : { + "description" : "Additional external documentation for this operation", + "$ref" : "#/definitions/ExternalDocs" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Declares this operation to be deprecated. Consumers SHOULD refrain from usage of the declared operation. Default value is false" + }, + "enabled" : { + "type" : "boolean" + }, + "scopes" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "requestBody" : { + "description" : "The request body applicable for this operation", + "$ref" : "#/definitions/RequestBody" + }, + "callbacks" : { + "type" : "object", + "description" : "An optional, string description, intended to apply to all operations in this path", + "additionalProperties" : { + "$ref" : "#/definitions/Callback" + } + } + } + }, + "Parameter" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "style" : { + "type" : "string", + "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", + "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] + }, + "explode" : { + "type" : "boolean", + "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" + }, + "allowReserved" : { + "type" : "boolean", + "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "extendedExample" : { + "type" : "object", + "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" + }, + "content" : { + "type" : "object", + "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "xpath" : { + "$ref" : "#/definitions/Xpath" + }, + "default" : { + "type" : "string" + }, + "parameterSchema" : { + "$ref" : "#/definitions/Schema" + }, + "_enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "Path" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "get" : { + "description" : "A definition of a GET operation on this path", + "$ref" : "#/definitions/Operation" + }, + "put" : { + "description" : "A definition of a PUT operation on this path", + "$ref" : "#/definitions/Operation" + }, + "post" : { + "description" : "A definition of a POST operation on this path", + "$ref" : "#/definitions/Operation" + }, + "head" : { + "description" : "A definition of a HEAD operation on this path", + "$ref" : "#/definitions/Operation" + }, + "delete" : { + "description" : "A definition of a DELETE operation on this path", + "$ref" : "#/definitions/Operation" + }, + "patch" : { + "description" : "A definition of a PATCH operation on this path", + "$ref" : "#/definitions/Operation" + }, + "options" : { + "description" : "A definition of a OPTIONS operation on this path", + "$ref" : "#/definitions/Operation" + }, + "trace" : { + "description" : "A definition of a TRACE operation on this path", + "$ref" : "#/definitions/Operation" + }, + "parameters" : { + "type" : "array", + "description" : "A list of parameters that are applicable for all the operations described under this path. These parameters can be overridden at the operation level, but cannot be removed there", + "items" : { + "type" : "object" + } + }, + "scopes" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "displayName" : { + "type" : "string" + }, + "description" : { + "type" : "string", + "description" : "An optional, string description, intended to apply to all operations in this path" + }, + "enabled" : { + "type" : "boolean" + }, + "get$ref" : { + "type" : "string", + "description" : "Allows for an external definition of this path item" + }, + "summary" : { + "type" : "string", + "description" : "An optional, string summary, intended to apply to all operations in this path" + } + } + }, + "PathParameter" : { + "allOf" : [ { + "$ref" : "#/definitions/Parameter" + }, { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "style" : { + "type" : "string", + "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", + "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] + }, + "explode" : { + "type" : "boolean", + "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" + }, + "allowReserved" : { + "type" : "boolean", + "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "extendedExample" : { + "type" : "object", + "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" + }, + "content" : { + "type" : "object", + "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "xpath" : { + "$ref" : "#/definitions/Xpath" + }, + "default" : { + "type" : "string" + }, + "parameterSchema" : { + "$ref" : "#/definitions/Schema" + }, + "_enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "Property" : { + "type" : "object", + "discriminator" : "type", + "properties" : { + "position" : { + "type" : "integer", + "format" : "int32" + }, + "title" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "required" : { + "type" : "boolean" + }, + "access" : { + "type" : "string" + }, + "example" : { + "type" : "object" + }, + "format" : { + "type" : "string" + }, + "xml" : { + "$ref" : "#/definitions/Xml" + }, + "allowEmptyValue" : { + "type" : "boolean" + }, + "name" : { + "type" : "string" + }, + "readOnly" : { + "type" : "boolean" + }, + "type" : { + "type" : "string" + } + } + }, + "QueryParameter" : { + "allOf" : [ { + "$ref" : "#/definitions/Parameter" + }, { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "style" : { + "type" : "string", + "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", + "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] + }, + "explode" : { + "type" : "boolean", + "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" + }, + "allowReserved" : { + "type" : "boolean", + "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "extendedExample" : { + "type" : "object", + "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" + }, + "content" : { + "type" : "object", + "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "xpath" : { + "$ref" : "#/definitions/Xpath" + }, + "default" : { + "type" : "string" + }, + "parameterSchema" : { + "$ref" : "#/definitions/Schema" + }, + "_enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "RefModel" : { + "allOf" : [ { + "$ref" : "#/definitions/Model" + }, { + "type" : "object", + "properties" : { + "simpleRef" : { + "type" : "string" + }, + "get$ref" : { + "type" : "string" + }, + "refFormat" : { + "type" : "string", + "enum" : [ "URL", "RELATIVE", "INTERNAL" ] + } + } + } ] + }, + "RefParameter" : { + "allOf" : [ { + "$ref" : "#/definitions/Parameter" + }, { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "description" : "The name of the parameter. Parameter names are case sensitive" + }, + "in" : { + "type" : "string", + "description" : "The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"" + }, + "description" : { + "type" : "string", + "description" : "A brief description of the parameter. This could contain examples of use" + }, + "required" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "get$ref" : { + "type" : "string", + "description" : "The available paths and operations for the API" + }, + "allowEmptyValue" : { + "type" : "boolean", + "description" : "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false" + }, + "style" : { + "type" : "string", + "description" : "Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form", + "enum" : [ "MATRIX", "LABEL", "FORM", "SIMPLE", "SPACEDELIMITED", "PIPEDELIMITED", "DEEPOBJECT" ] + }, + "explode" : { + "type" : "boolean", + "description" : "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false" + }, + "allowReserved" : { + "type" : "boolean", + "description" : "Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false" + }, + "examples" : { + "type" : "object", + "description" : "Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema which contains an example, the examples value SHALL override the example provided by the schema", + "additionalProperties" : { + "$ref" : "#/definitions/Example" + } + }, + "extendedExample" : { + "type" : "object", + "description" : "Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary" + }, + "content" : { + "type" : "object", + "description" : "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "xpath" : { + "$ref" : "#/definitions/Xpath" + }, + "default" : { + "type" : "string" + }, + "parameterSchema" : { + "$ref" : "#/definitions/Schema" + }, + "_enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "RefProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "simpleRef" : { + "type" : "string" + }, + "get$ref" : { + "type" : "string" + }, + "refFormat" : { + "type" : "string", + "enum" : [ "URL", "RELATIVE", "INTERNAL" ] + } + } + } ] + }, + "RequestBody" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "description" : { + "type" : "string", + "description" : "A brief description of the request body. This could contain examples of use" + }, + "content" : { + "type" : "object", + "description" : "The content of the request body. The key is a media type or media type range and the value describes it", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "required" : { + "type" : "boolean", + "description" : "Determines if the request body is required in the request. Defaults to false" + }, + "get$ref" : { + "type" : "string" + } + } + }, + "Response" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "description" : { + "type" : "string", + "description" : "A short description of the response" + }, + "headersV3" : { + "type" : "object", + "description" : "Maps a header name to its definition. RFC7230 states header names are case insensitive. If a response header is defined with the name \"Content-Type\", it SHALL be ignored", + "additionalProperties" : { + "$ref" : "#/definitions/Header" + } + }, + "content" : { + "type" : "object", + "description" : "A map containing descriptions of potential response payloads. The key is a media type or media type range and the value describes it", + "additionalProperties" : { + "$ref" : "#/definitions/MediaType" + } + }, + "links" : { + "type" : "object", + "description" : "A map of operations links that can be followed from the response. The key of the map is a short name for the link, following the naming constraints of the names for Component Objects.", + "additionalProperties" : { + "$ref" : "#/definitions/Link" + } + }, + "get$ref" : { + "type" : "string" + } + } + }, + "RestAPI" : { + "allOf" : [ { + "$ref" : "#/definitions/API" + }, { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "info" : { + "description" : "Provides metadata about the API", + "$ref" : "#/definitions/Info" + }, + "serviceRegistryDisplayName" : { + "type" : "string", + "description" : "The name of the API in service registry when the API is published to a service registry." + }, + "tags" : { + "type" : "array", + "description" : "A list of tags with additional metadata", + "items" : { + "$ref" : "#/definitions/Tag" + } + }, + "paths" : { + "type" : "object", + "description" : "The available paths and operations for the API", + "additionalProperties" : { + "$ref" : "#/definitions/Path" + } + }, + "externalDocs" : { + "type" : "array", + "description" : "Additional external documentation", + "items" : { + "$ref" : "#/definitions/ExternalDocs" + } + }, + "servers" : { + "type" : "array", + "description" : "An array of Server Objects, which provide connectivity information to a target server", + "items" : { + "$ref" : "#/definitions/Server" + } + }, + "components" : { + "description" : "An element to hold various schemas for the specification", + "$ref" : "#/definitions/Components" + }, + "apiTags" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "RestEnabledPath" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "get" : { + "description" : "A definition of a GET operation on this path", + "$ref" : "#/definitions/Operation" + }, + "put" : { + "description" : "A definition of a PUT operation on this path", + "$ref" : "#/definitions/Operation" + }, + "post" : { + "description" : "A definition of a POST operation on this path", + "$ref" : "#/definitions/Operation" + }, + "head" : { + "description" : "A definition of a HEAD operation on this path", + "$ref" : "#/definitions/Operation" + }, + "delete" : { + "description" : "A definition of a DELETE operation on this path", + "$ref" : "#/definitions/Operation" + }, + "patch" : { + "description" : "A definition of a PATCH operation on this path", + "$ref" : "#/definitions/Operation" + }, + "options" : { + "description" : "A definition of a OPTIONS operation on this path", + "$ref" : "#/definitions/Operation" + }, + "trace" : { + "description" : "A definition of a TRACE operation on this path", + "$ref" : "#/definitions/Operation" + }, + "parameters" : { + "type" : "array", + "description" : "A list of parameters that are applicable for all the operations described under this path. These parameters can be overridden at the operation level, but cannot be removed there", + "items" : { + "type" : "object" + } + }, + "scopes" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "displayName" : { + "type" : "string" + }, + "description" : { + "type" : "string", + "description" : "An optional, string description, intended to apply to all operations in this path" + }, + "enabled" : { + "type" : "boolean" + }, + "get$ref" : { + "type" : "string", + "description" : "Allows for an external definition of this path item" + }, + "summary" : { + "type" : "string", + "description" : "An optional, string summary, intended to apply to all operations in this path" + }, + "name" : { + "type" : "string" + }, + "invokePath" : { + "type" : "string" + } + } + }, + "SOAPAPI" : { + "allOf" : [ { + "$ref" : "#/definitions/API" + }, { + "type" : "object", + "properties" : { + "wsdl" : { + "type" : "string" + }, + "baseWsdlUri" : { + "type" : "string" + }, + "nativeUri" : { + "type" : "array", + "uniqueItems" : true, + "items" : { + "type" : "string" + } + }, + "rootFileFolder" : { + "type" : "string" + }, + "serviceName" : { + "type" : "string" + }, + "operationsInfo" : { + "type" : "array", + "uniqueItems" : true, + "items" : { + "$ref" : "#/definitions/SOAPOperation" + } + }, + "serviceRegistryDisplayName" : { + "type" : "string", + "description" : "The name of the API in service registry when the API is published to a service registry." + }, + "operationPolicies" : { + "type" : "object", + "additionalProperties" : { + "type" : "string" + } + }, + "isRESTInvokeEnabled" : { + "type" : "boolean" + }, + "tags" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Tag" + } + }, + "apiTags" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "primaryEndpoint" : { + "type" : "object", + "additionalProperties" : { + "type" : "boolean" + } + } + } + } ] + }, + "SOAPBinding" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string" + }, + "type" : { + "type" : "string" + }, + "specifier" : { + "type" : "string" + }, + "interFace" : { + "$ref" : "#/definitions/SOAPInterface" + }, + "inputMessage" : { + "type" : "string" + }, + "outputMessage" : { + "type" : "string" + }, + "faultMessages" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "SOAPInterface" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string" + }, + "operations" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/SOAPOperation" + } + } + } + }, + "SOAPOperation" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string" + }, + "namespace" : { + "type" : "string" + }, + "enabled" : { + "type" : "boolean" + }, + "bindings" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/SOAPBinding" + } + }, + "mockedResponses" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/MockedResponse" + } + }, + "mockedConditionsBasedCustomResponsesList" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/MockedConditionsBasedCustomResponse" + } + }, + "defined" : { + "type" : "boolean" + }, + "soapAction" : { + "type" : "string" + }, + "isRESTInvokeEnabled" : { + "type" : "boolean" + }, + "restEnabledPath" : { + "$ref" : "#/definitions/RestEnabledPath" + }, + "scopes" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "Schema" : { + "type" : "object", + "discriminator" : "type", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "name" : { + "type" : "string", + "description" : "User defined name for the property" + }, + "title" : { + "type" : "string", + "description" : "User defined title for the property" + }, + "multipleOf" : { + "type" : "number", + "description" : "Numbers can be restricted to a multiple of a given number, using the multipleOf keyword. It may be set to any positive number." + }, + "maximum" : { + "type" : "number", + "description" : "Upper limit in the ranges of numbers, (or exclusiveMinimum and exclusiveMaximum for expressing exclusive range)" + }, + "exclusiveMaximum" : { + "type" : "boolean", + "description" : "Indicate whether maximum are exclusive of the value" + }, + "minimum" : { + "type" : "number", + "description" : "Lower limit in the ranges of numbers" + }, + "exclusiveMinimum" : { + "type" : "boolean", + "description" : "Indicate whether minimum are exclusive of the value" + }, + "maxLength" : { + "type" : "integer", + "format" : "int32", + "description" : "The maximum length of a string can be constrained using the minLength" + }, + "minLength" : { + "type" : "integer", + "format" : "int32", + "description" : "The minimum length of a string can be constrained using the minLength" + }, + "pattern" : { + "type" : "string", + "description" : "The pattern keyword is used to restrict a string to a particular regular expression. The regular expression syntax is the one defined in JavaScript (ECMA 262 specifically)" + }, + "maxItems" : { + "type" : "integer", + "format" : "int32", + "description" : "The maximum length of the array can be specified" + }, + "minItems" : { + "type" : "integer", + "format" : "int32", + "description" : "The minimum length of the array can be specified" + }, + "uniqueItems" : { + "type" : "boolean", + "description" : "A schema can ensure that each of the items in an array is unique. Simply set the uniqueItems keyword to true" + }, + "maxProperties" : { + "type" : "integer", + "format" : "int32", + "description" : "The maximum number of properties on an object can be restricted" + }, + "minProperties" : { + "type" : "integer", + "format" : "int32", + "description" : "The minimum number of properties on an object can be restricted" + }, + "required" : { + "type" : "array", + "description" : "By default, the properties defined by the properties keyword are not required. However, one can provide a list of required properties using the required keyword.\nThe required keyword takes an array of zero or more strings. Each of these strings must be unique.", + "items" : { + "type" : "string" + } + }, + "type" : { + "type" : "string", + "description" : "It specifies the data type for a schema" + }, + "not" : { + "description" : "Must not be valid against the given schema", + "$ref" : "#/definitions/Schema" + }, + "properties" : { + "type" : "object", + "description" : "The properties (key-value pairs) on an object are defined using the properties keyword. The value of properties is an object, where each key is the name of a property and each value is of type schema used to validate that property", + "additionalProperties" : { + "$ref" : "#/definitions/Schema" + } + }, + "additionalProperties" : { + "description" : "Value can be boolean or object. Inline or referenced schema MUST be of a Schema Object and not a standard JSON Schema. Consistent with JSON Schema, additionalProperties defaults to true", + "$ref" : "#/definitions/Schema" + }, + "description" : { + "type" : "string", + "description" : "Provide a more lengthy explanation about the purpose of the data described by the schema" + }, + "format" : { + "type" : "string", + "description" : "The format keyword allows for basic semantic validation on certain kinds of string values that are commonly used" + }, + "get$ref" : { + "type" : "string" + }, + "nullable" : { + "type" : "boolean", + "description" : "Allows sending a null value for the defined schema. Default value is false" + }, + "readOnly" : { + "type" : "boolean", + "description" : "Relevant only for Schema \"properties\" definitions. Declares the property as \"read only\". This means that it MAY be sent as part of a response but SHOULD NOT be sent as part of the request. If the property is marked as readOnly being true and is in the required list, the required will take effect on the response only. A property MUST NOT be marked as both readOnly and writeOnly being true. Default value is false" + }, + "writeOnly" : { + "type" : "boolean", + "description" : "Relevant only for Schema \"properties\" definitions. Declares the property as \"write only\". Therefore, it MAY be sent as part of a request but SHOULD NOT be sent as part of the response. If the property is marked as writeOnly being true and is in the required list, the required will take effect on the request only. A property MUST NOT be marked as both readOnly and writeOnly being true. Default value is false" + }, + "example" : { + "type" : "object", + "description" : "A free-form property to include an example of an instance for this schema. To represent examples that cannot be naturally represented in JSON or YAML, a string value can be used to contain the example with escaping where necessary" + }, + "externalDocs" : { + "description" : "Additional external documentation for this schema", + "$ref" : "#/definitions/ExternalDocs" + }, + "deprecated" : { + "type" : "boolean", + "description" : "Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is false" + }, + "xml" : { + "description" : "This MAY be used only on properties schemas. It has no effect on root schemas. Adds additional metadata to describe the XML representation of this property", + "$ref" : "#/definitions/Xml" + }, + "enum" : { + "type" : "array", + "items" : { + "type" : "object" + } + }, + "default" : { + "type" : "object" + } + } + }, + "Scope" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "getoAuth2ScopeName" : { + "type" : "string" + }, + "policies" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "mashedUpAPI" : { + "type" : "boolean" + } + } + }, + "SecurityScheme" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "type" : { + "type" : "string", + "enum" : [ "APIKEY", "HTTP", "OAUTH2", "OPENIDCONNECT" ] + }, + "description" : { + "type" : "string" + }, + "name" : { + "type" : "string" + }, + "get$ref" : { + "type" : "string" + }, + "in" : { + "type" : "string", + "enum" : [ "COOKIE", "HEADER", "QUERY" ] + }, + "scheme" : { + "type" : "string" + }, + "bearerFormat" : { + "type" : "string" + }, + "flows" : { + "$ref" : "#/definitions/OAuthFlows" + }, + "openIdConnectUrl" : { + "type" : "string" + } + } + }, + "SecuritySchemeDescriptor" : { + "type" : "object", + "properties" : { + "headers" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "queryParameters" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "responses" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + } + } + }, + "Server" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "url" : { + "type" : "string", + "description" : "A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the OpenAPI document is being served. Variable substitutions will be made when a variable is named in {brackets}" + }, + "description" : { + "type" : "string", + "description" : "An optional string describing the host designated by the URL" + }, + "variables" : { + "type" : "object", + "description" : "A map between a variable name and its value. The value is used for substitution in the server's URL template", + "additionalProperties" : { + "$ref" : "#/definitions/ServerVariable" + } + } + } + }, + "ServerVariable" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "description" : { + "type" : "string", + "description" : "An optional description for the server variable" + }, + "enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "default" : { + "type" : "string" + } + } + }, + "StringProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "minLength" : { + "type" : "integer", + "format" : "int32" + }, + "maxLength" : { + "type" : "integer", + "format" : "int32" + }, + "pattern" : { + "type" : "string" + }, + "enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "default" : { + "type" : "string" + } + } + } ] + }, + "StringSchema" : { + "allOf" : [ { + "$ref" : "#/definitions/Schema" + }, { + "type" : "object", + "properties" : { + "type" : { + "type" : "string" + }, + "enum" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "default" : { + "type" : "string" + } + } + } ] + }, + "StringSchemaModel" : { + "allOf" : [ { + "$ref" : "#/definitions/Model" + }, { + "type" : "object", + "properties" : { + "schema" : { + "type" : "string" + } + } + } ] + }, + "StringSchemaProperty" : { + "allOf" : [ { + "$ref" : "#/definitions/Property" + }, { + "type" : "object", + "properties" : { + "schema" : { + "type" : "string" + } + } + } ] + }, + "Tag" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "name" : { + "type" : "string", + "description" : "The name of the tag" + }, + "description" : { + "type" : "string", + "description" : "A short description for the tag" + }, + "externalDocs" : { + "description" : "Additional external documentation for this tag", + "$ref" : "#/definitions/ExternalDocs" + } + } + }, + "Version" : { + "type" : "object", + "properties" : { + "versionNumber" : { + "type" : "string" + }, + "apiId" : { + "type" : "string" + } + } + }, + "WebsocketAPI" : { + "allOf" : [ { + "$ref" : "#/definitions/API" + }, { + "type" : "object", + "properties" : { + "nativeUri" : { + "type" : "array", + "uniqueItems" : true, + "items" : { + "type" : "string" + } + }, + "supportedSubProtocols" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "tags" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Tag" + } + }, + "externalDocs" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ExternalDocs" + } + }, + "messages" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/MessageFrame" + } + }, + "parameters" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/definitions/AbstractParameter" + } + }, + "apiTags" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } ] + }, + "Xml" : { + "type" : "object", + "properties" : { + "vendorExtensions" : { + "type" : "object", + "additionalProperties" : { + "type" : "object" + } + }, + "name" : { + "type" : "string", + "description" : "Replaces the name of the element/attribute used for the described schema property. When defined within items, it will affect the name of the individual XML elements within the list. When defined alongside type being array (outside the items), it will affect the wrapping element and only if wrapped is true. If wrapped is false, it will be ignored" + }, + "namespace" : { + "type" : "string", + "description" : "The URI of the namespace definition" + }, + "prefix" : { + "type" : "string", + "description" : "The prefix to be used for the name" + }, + "attribute" : { + "type" : "boolean", + "description" : "Declares whether the property definition translates to an attribute instead of an element. Default value is false" + }, + "wrapped" : { + "type" : "boolean", + "description" : "MAY be used only for an array definition. Signifies whether the array is wrapped (for example, ) or unwrapped (). Default value is false" + } + } + }, + "Xpath" : { + "type" : "object", + "properties" : { + "xpath" : { + "type" : "string" + }, + "namespaces" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/Namespaces" + } + } + } + }, + "APIAccessKey" : { + "type" : "object", + "properties" : { + "apiAccessKey" : { + "type" : "string", + "description" : "API access key" + }, + "expirationInterval" : { + "type" : "string", + "description" : "expiration interval of the api key" + }, + "expirationDate" : { + "type" : "string", + "description" : "expiration date of the api key" + } + } + }, + "Application" : { + "type" : "object", + "properties" : { + "applicationID" : { + "type" : "string", + "description" : "unique identifier of an application" + }, + "name" : { + "type" : "string", + "description" : "name of the application" + }, + "description" : { + "type" : "string", + "description" : "description of the application" + }, + "owner" : { + "type" : "string", + "description" : "owner of the application" + }, + "identifiers" : { + "type" : "array", + "description" : "list of all application identifiers", + "items" : { + "$ref" : "#/definitions/ApplicationIdentifier" + } + }, + "contactEmails" : { + "type" : "array", + "description" : "list of email contacts", + "items" : { + "type" : "string" + } + }, + "iconbyteArray" : { + "type" : "string", + "description" : "application icon byte array" + }, + "accessTokens" : { + "description" : "access tokens associated with the application", + "$ref" : "#/definitions/ApplicationToken" + }, + "creationDate" : { + "type" : "string", + "description" : "application creation time" + }, + "lastModified" : { + "type" : "string", + "description" : "last modified time of the application" + }, + "lastUpdated" : { + "type" : "integer", + "format" : "int64", + "description" : "last modified time of the application in milliseconds" + }, + "siteURLs" : { + "type" : "array", + "description" : "list of all site URLs", + "items" : { + "type" : "string" + } + }, + "jsOrigins" : { + "type" : "array", + "description" : "list of all javascript origins", + "items" : { + "type" : "string" + } + }, + "version" : { + "type" : "string" + }, + "isSuspended" : { + "type" : "boolean", + "description" : "holds the suspended state of an application" + }, + "authStrategyIds" : { + "type" : "array", + "uniqueItems" : true, + "items" : { + "type" : "string" + } + }, + "subscription" : { + "type" : "boolean" + } + } + }, + "ApplicationIdentifier" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "unique identifier of the application identifier" + }, + "key" : { + "type" : "string", + "description" : "identifier type, one of [apiKey, httpBasicAuth, token,kerberosToken,oAuth2Token,openIdClaims,jwtClaims,wssecX509Token,wssecUsernameToken, httpsCertificate,payloadElement,hostNameAddress, ipAddressRange, XPathExpression,partnerId]" + }, + "name" : { + "type" : "string", + "description" : "name of the identifier" + }, + "value" : { + "type" : "array", + "description" : "list of identifier values", + "items" : { + "type" : "string" + } + } + } + }, + "ApplicationToken" : { + "type" : "object", + "properties" : { + "apiAccessKey" : { + "description" : "the API KEY access credentials", + "$ref" : "#/definitions/APIAccessKey" + }, + "oauth2Token" : { + "$ref" : "#/definitions/OAuth2Token" + } + } + }, + "OAuth2Token" : { + "type" : "object", + "properties" : { + "type" : { + "type" : "string", + "description" : "type of the oauth2 client" + }, + "clientId" : { + "type" : "string", + "description" : "unique identifier of the oauth2 client" + }, + "clientSecret" : { + "type" : "string", + "description" : "the client secret" + }, + "clientName" : { + "type" : "string", + "description" : "the name of the client" + }, + "scopes" : { + "type" : "array", + "description" : "the scopes associated with the client", + "items" : { + "type" : "string" + } + }, + "expirationInterval" : { + "type" : "string", + "description" : "the expiration interval" + }, + "refreshCount" : { + "type" : "string", + "description" : "number of times an access token can be refreshed" + }, + "redirectUris" : { + "type" : "array", + "description" : "list of redirect uris", + "items" : { + "type" : "string" + } + } + } + }, + "CommandInfo" : { + "type" : "object", + "properties" : { + "commandName" : { + "type" : "string" + }, + "commandClass" : { + "type" : "string" + } + } + }, + "DataFlavor" : { + "type" : "object", + "properties" : { + "mimeType" : { + "type" : "string" + }, + "humanPresentableName" : { + "type" : "string" + }, + "primaryType" : { + "type" : "string" + }, + "subType" : { + "type" : "string" + }, + "mimeTypeSerializedObject" : { + "type" : "boolean" + }, + "defaultRepresentationClassAsString" : { + "type" : "string" + }, + "representationClassInputStream" : { + "type" : "boolean" + }, + "representationClassReader" : { + "type" : "boolean" + }, + "representationClassCharBuffer" : { + "type" : "boolean" + }, + "representationClassByteBuffer" : { + "type" : "boolean" + }, + "representationClassSerializable" : { + "type" : "boolean" + }, + "representationClassRemote" : { + "type" : "boolean" + }, + "flavorSerializedObjectType" : { + "type" : "boolean" + }, + "flavorRemoteObjectType" : { + "type" : "boolean" + }, + "flavorJavaFileListType" : { + "type" : "boolean" + }, + "flavorTextType" : { + "type" : "boolean" + } + } + }, + "DataHandler" : { + "type" : "object", + "properties" : { + "dataSource" : { + "$ref" : "#/definitions/DataSource" + }, + "contentType" : { + "type" : "string" + }, + "outputStream" : { + "$ref" : "#/definitions/OutputStream" + }, + "transferDataFlavors" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/DataFlavor" + } + }, + "preferredCommands" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/CommandInfo" + } + }, + "allCommands" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/CommandInfo" + } + }, + "name" : { + "type" : "string" + }, + "inputStream" : { + "$ref" : "#/definitions/InputStream" + }, + "content" : { + "type" : "object" + } + } + }, + "DataSource" : { + "type" : "object", + "properties" : { + "contentType" : { + "type" : "string" + }, + "outputStream" : { + "$ref" : "#/definitions/OutputStream" + }, + "name" : { + "type" : "string" + }, + "inputStream" : { + "$ref" : "#/definitions/InputStream" + } + } + }, + "Enumeration" : { + "type" : "object" + }, + "InputStream" : { + "type" : "object" + }, + "Multipart" : { + "type" : "object", + "properties" : { + "contentType" : { + "type" : "string" + }, + "parent" : { + "$ref" : "#/definitions/Part" + }, + "count" : { + "type" : "integer", + "format" : "int32" + } + } + }, + "OutputStream" : { + "type" : "object" + }, + "Part" : { + "type" : "object", + "properties" : { + "contentType" : { + "type" : "string" + }, + "description" : { + "type" : "string" + }, + "fileName" : { + "type" : "string" + }, + "content" : { + "type" : "object" + }, + "disposition" : { + "type" : "string" + }, + "allHeaders" : { + "$ref" : "#/definitions/Enumeration" + }, + "dataHandler" : { + "$ref" : "#/definitions/DataHandler" + }, + "lineCount" : { + "type" : "integer", + "format" : "int32" + }, + "size" : { + "type" : "integer", + "format" : "int32" + }, + "inputStream" : { + "$ref" : "#/definitions/InputStream" + } + } + }, + "APIResponseGetGlobalPolicies" : { + "type" : "object", + "properties" : { + "globalPolicies" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "ScopeInformation" : { + "type" : "object", + "properties" : { + "resourcePath" : { + "type" : "string" + }, + "supportedOperations" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "ScopeResourceIndex" : { + "type" : "object", + "properties" : { + "references" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/ScopeInformation" + } + }, + "scope" : { + "$ref" : "#/definitions/Scope" + } + } + }, + "AuthorizationValue" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "string" + }, + "type" : { + "type" : "string" + }, + "keyName" : { + "type" : "string" + } + } + }, + "InputAPI" : { + "type" : "object", + "required" : [ "apiName", "type" ], + "properties" : { + "url" : { + "type" : "string", + "description" : "Required when creating an API by importing URL" + }, + "authorizationValue" : { + "description" : "Required when creating an API by importing protected URL", + "$ref" : "#/definitions/AuthorizationValue" + }, + "apiDefinition" : { + "description" : "Required when creating an API from scratch", + "$ref" : "#/definitions/API" + }, + "apiName" : { + "type" : "string" + }, + "apiVersion" : { + "type" : "string" + }, + "apiDescription" : { + "type" : "string" + }, + "maturityState" : { + "type" : "string" + }, + "type" : { + "type" : "string" + }, + "rootFileName" : { + "type" : "string", + "description" : "Required when creating an API by importing protected URL" + } + } + }, + "APIResponseCreate" : { + "type" : "object", + "properties" : { + "api" : { + "$ref" : "#/definitions/GatewayAPI" + }, + "apiId" : { + "type" : "string" + }, + "responseStatus" : { + "type" : "string", + "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] + }, + "errorReason" : { + "type" : "string" + } + } + }, + "InputVersion" : { + "type" : "object", + "required" : [ "newApiVersion" ], + "properties" : { + "retainApplications" : { + "type" : "boolean" + }, + "newApiVersion" : { + "type" : "string" + } + } + }, + "APIResponse" : { + "type" : "object", + "properties" : { + "apiId" : { + "type" : "string" + }, + "api" : { + "$ref" : "#/definitions/GatewayAPI" + }, + "responseStatus" : { + "type" : "string", + "enum" : [ "SUCCESS", "ERROR", "NOT_FOUND", "BAD_REQUEST", "PARTIAL_SUCCESS" ] + }, + "errorReason" : { + "type" : "string" + }, + "gatewayEndPoints" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "reason" : { + "type" : "object" + }, + "pubSOAPFlavor" : { + "type" : "string" + }, + "portalGatewayDataEntries" : { + "type" : "object" + } + } + }, + "InputPublish" : { + "type" : "object", + "properties" : { + "communities" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "endpoints" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "portalGatewayId" : { + "type" : "string" + } + } + }, + "Endpoints" : { + "type" : "object", + "properties" : { + "gatewayEndpoint" : { + "type" : "string", + "description" : "API's access endpoint exposed in API Gateway." + }, + "status" : { + "type" : "string", + "description" : "Status of the API endpoint. Shows whether this endpoint is published to the service registry.Possible values are NEW, PUBLISHED and SUSPENDED. NEW represents the endpoint is not published to the service registry. PUBLISHED represents the endpoint is published to the service registry. SUSPENDED represents the endpoint is published to service registry, but is not currently active (for example: during deactivation of API or shutdown of API Gateway or disabling ports).", + "enum" : [ "NEW", "PUBLISHED", "SUSPENDED" ] + } + }, + "description" : "This defines the service registry publish information for API Gateway's API endpoints" + }, + "PublishPayload" : { + "type" : "object", + "properties" : { + "apiId" : { + "type" : "string", + "description" : "API id for the API to be published. This field is required. The API will be published to the service registry with the value configured in 'Service registry display name' field of the API" + }, + "serviceRegistryPublishInfo" : { + "type" : "array", + "description" : "List of service registry publish information for the API. Each element of the list contains the publish information of the API for one service registry.", + "items" : { + "$ref" : "#/definitions/ServiceRegistryPublishInfo" + } + } + } + }, + "ServiceRegistryPublishGetResponse" : { + "type" : "object", + "properties" : { + "publishInfo" : { + "description" : "Contains the service registry publish information for the API.", + "$ref" : "#/definitions/PublishPayload" + } + } + }, + "ServiceRegistryPublishInfo" : { + "type" : "object", + "properties" : { + "serviceRegistryId" : { + "type" : "string", + "description" : "Uddi key of the service registry created in API Gateway. This field is required." + }, + "status" : { + "type" : "string", + "description" : "Publish Status of the API for this service registry. This field is shown only in response and should not be sent by clients in requests. Possible values are NEW, PUBLISHED and SUSPENDED. NEW represents the API is not published to the service registry. PUBLISHED represents the API is published to the service registry. SUSPENDED represents the API is published to service registry, but is not currently active (during deactivation of API or shutdown of API Gateway).", + "enum" : [ "NEW", "PUBLISHED", "SUSPENDED" ] + }, + "name" : { + "type" : "string", + "description" : "Name of the service registry. This field is shown only in response and should not be sent by clients in requests. Only the serviceRegistryId is considered for uniquely identifying the registry." + }, + "gatewayEndpoints" : { + "type" : "array", + "description" : "List of API endpoints of the API. Each element contains an endpoint and the information about the publish status of that endpoint for the current service registry.", + "uniqueItems" : true, + "items" : { + "$ref" : "#/definitions/Endpoints" + } + } + } + }, + "InputServiceRegistryPublish" : { + "type" : "object", + "properties" : { + "publishInfo" : { + "description" : "This contains the publish information for one API. This is used when publishing exactly one API to one or more service registries.", + "$ref" : "#/definitions/PublishPayload" + }, + "publishInfos" : { + "type" : "array", + "description" : "This contains the publish information for multiple APIs. Required when publishing more than one API to one or more service registries.", + "items" : { + "$ref" : "#/definitions/PublishPayload" + } + } + } + }, + "PublishResponse" : { + "type" : "object", + "properties" : { + "apiId" : { + "type" : "string", + "description" : "API id of the API published." + }, + "apiName" : { + "type" : "string", + "description" : "API name of the API published." + }, + "apiVersion" : { + "type" : "string", + "description" : "API version of the API published." + }, + "serviceRegistryPublishResponses" : { + "type" : "array", + "description" : "Contains publish status of the API for each service registry in the request.", + "items" : { + "$ref" : "#/definitions/ServiceRegistryPublishResponse" + } + } + } + }, + "ServiceRegistryPublishPutResponse" : { + "type" : "object", + "properties" : { + "publishResponse" : { + "description" : "This contains the service registry publish status for requests publishing exactly one API to one or more service registries.", + "$ref" : "#/definitions/PublishResponse" + }, + "publishResponses" : { + "type" : "array", + "description" : "This contains the service registry publish status for requests publishing more than one API to one or more service registries.", + "items" : { + "$ref" : "#/definitions/PublishResponse" + } + } + } + }, + "ServiceRegistryPublishResponse" : { + "type" : "object", + "properties" : { + "serviceRegistryId" : { + "type" : "string", + "description" : "Id i.e, UDDI key of the service registry" + }, + "serviceRegistryName" : { + "type" : "string", + "description" : "Name of the service registry" + }, + "status" : { + "type" : "string", + "description" : "Publish Status of the API for this service registry. Possible values are NEW, PUBLISHED and SUSPENDED. NEW represents the API is not published to the service registry. PUBLISHED represents the API is published to the service registry. SUSPENDED represents the API is published to service registry, but is not currently active (during deactivation of API or shutdown of API Gateway).", + "enum" : [ "NEW", "PUBLISHED", "SUSPENDED" ] + }, + "gatewayEndpoints" : { + "type" : "array", + "description" : "List of API endpoints of the API. Each element contains an endpoint and the information about the publish status of that endpoint for the current service registry.", + "uniqueItems" : true, + "items" : { + "$ref" : "#/definitions/Endpoints" + } + }, + "success" : { + "type" : "boolean", + "description" : "Represents whether the publish of API to the service registry is success. Possible values: true/false" + }, + "description" : { + "type" : "string", + "description" : "Represents the status of the publish operation of the API to the service registry eg: Publish successful, Publish failed, etc" + }, + "failureReason" : { + "type" : "string", + "description" : "Provides the reason for the failure when the publish operation is not successful" + } + } + }, + "InputServiceRegistryUnpublish" : { + "type" : "object", + "properties" : { + "unpublishInfo" : { + "description" : "This contains the unpublish information for one API. This is used when unpublishing exactly one API from one or more service registries.", + "$ref" : "#/definitions/UnpublishInfo" + }, + "unpublishInfos" : { + "type" : "array", + "description" : "This contains the unpublish information for multiple APIs. Required when publishing more than one API from one or more service registries.", + "items" : { + "$ref" : "#/definitions/UnpublishInfo" + } + } + } + }, + "UnpublishInfo" : { + "type" : "object", + "properties" : { + "apiId" : { + "type" : "string", + "description" : "API id for the API to be unpublished. This field is required." + }, + "serviceRegistryIds" : { + "type" : "array", + "description" : "List of ids of the service registries from which the API has to be unpublished. This field is required.", + "items" : { + "type" : "string" + } + } + } + }, + "ServiceRegistryUnpublishPutResponse" : { + "type" : "object", + "properties" : { + "unpublishResponse" : { + "description" : "This contains the service registry unpublish status for requests unpublishing exactly one API from one or more service registries.", + "$ref" : "#/definitions/UnpublishResponse" + }, + "unpublishResponses" : { + "type" : "array", + "description" : "This contains the service registry unpublish status for requests unpublishing more than one API from one or more service registries.", + "items" : { + "$ref" : "#/definitions/UnpublishResponse" + } + } + } + }, + "ServiceRegistryUnpublishResponse" : { + "type" : "object", + "properties" : { + "serviceRegistryId" : { + "type" : "string", + "description" : "Id i.e, UDDI key of the service registry" + }, + "serviceRegistryName" : { + "type" : "string", + "description" : "Name of the service registry" + }, + "success" : { + "type" : "boolean", + "description" : "Represents whether the unpublish operation of API from the service registry is success. Possible values: true/false" + }, + "description" : { + "type" : "string", + "description" : "Represents the status of the unpublish operation of the API from the service registry eg: Unpublish successful, Unpublish failed, etc" + }, + "failureReason" : { + "type" : "string", + "description" : "Provides the reason for the failure when the unpublish operation is not successful" + } + } + }, + "UnpublishResponse" : { + "type" : "object", + "properties" : { + "apiId" : { + "type" : "string", + "description" : "API id of the API published." + }, + "apiName" : { + "type" : "string", + "description" : "API name of the API published." + }, + "serviceRegistryUnpublishResponses" : { + "type" : "array", + "description" : "Contains unpublish status of the API for each service registry in the request.", + "items" : { + "$ref" : "#/definitions/ServiceRegistryUnpublishResponse" + } + }, + "apiVersion" : { + "type" : "string", + "description" : "API version of the API published." + } + } + } + } } \ No newline at end of file diff --git a/apigatewayservices/APIGatewayTransactionalEvent.json b/apigatewayservices/APIGatewayTransactionalEvent.json index 97b1ab9..a94966e 100644 --- a/apigatewayservices/APIGatewayTransactionalEvent.json +++ b/apigatewayservices/APIGatewayTransactionalEvent.json @@ -1,514 +1,437 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "API Gateway Transactions service allows you to query the API transactions. API Transactions are generated (as events) everytime an API invocation happens. API Transactions may contain the details about the invocation such as request/response headers, request/response payloads, consumer applications and so on. API Provider may choose to store these events to one or more destinations by using Log Invocation Policy. API Gateway provides different destination options to the API Provider (like API Gateway own data store, relational databases, Elastic Search etc.) where he/she would like to store these events to. By default, API Gateway is chosen as a storage destination for these events.\n\nIt is important to note that this REST API queries for the transactions data only from the API Gateway's default datastore.\n\nThere are multiple use cases for these transactions data. For instance, you can integrate this API with your billing system wherein these transactional data can be used to compute the usage history of your API for different consumers for monetization usecases. In other scenarios, the data extracted from this service can be used for custom report generation.Any valid API Gateway user can consume this REST service.", - "version" : "10.7", - "title" : "API Gateway Transactions Data Service" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "plain/text" ], - "produces" : [ "application/json" ], - "paths" : { - "/transactionalEvents/_search" : { - "get" : { - "description" : "This method can be used to retrieve the transaction events for a given API/Application/Plan/Package for a specific period of time. Multiple request parameters of this method provide options to specify the request criteria to match the expected result and most of these input parameters supports regular expression in their values. Along with the mandatory parameters - fromDate and toDate, any one of the other filter criteria should be passed in the request.", - "operationId" : "getTransactions", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiName", - "in" : "query", - "description" : "The name of the API for which the invocation details is required.The exact name must be provided or regular expressions can be used like API_.*", - "required" : false, - "type" : "string", - "x-example" : "apiName=PetStore" - }, { - "name" : "apiVersion", - "in" : "query", - "description" : "The version of the API", - "required" : false, - "type" : "string", - "x-example" : "apiVersion=1.0" - }, { - "name" : "apiId", - "in" : "query", - "description" : "The system generated id for an API.The id of an can be retrieved from the API details screen", - "required" : false, - "type" : "string", - "x-example" : "apiId=105e99ee-0e1b-4afa-8ff3-4322cf296558" - }, { - "name" : "applicationName", - "in" : "query", - "description" : "The name of the Application for which the invocation details is required.The exact name must be provided or regular expressions can be used like APP_.*", - "required" : false, - "type" : "string", - "x-example" : "applicationName=HostBasedIdentifier" - }, { - "name" : "applicationId", - "in" : "query", - "description" : "The system generated id for an Application.The id of an can be retrieved from the Application details screen", - "required" : false, - "type" : "string", - "x-example" : "applicationId=995e99ee-0e1b-4afa-8ff3-4322cf296587" - }, { - "name" : "packageName", - "in" : "query", - "description" : "The name of the Package for which the invocation details is required.The exact name must be provided or regular expressions can be used like Package_.*", - "required" : false, - "type" : "string", - "x-example" : "pakageName=TravelPackage" - }, { - "name" : "packageId", - "in" : "query", - "description" : "The system generated id for a Package.The id of an can be retrieved from the Package details screen", - "required" : false, - "type" : "string", - "x-example" : "packageId=685023ee-0e1b-4afa-8ff3-4322cf296566" - }, { - "name" : "planName", - "in" : "query", - "description" : "The name of the Plan for which the invocation details is required.The exact name must be provided or regular expressions can be used like Plan_.*", - "required" : false, - "type" : "string", - "x-example" : "planName=GoldPlan" - }, { - "name" : "planId", - "in" : "query", - "description" : "The system generated id for a Plan.The id of an can be retrieved from the Plan details screen", - "required" : false, - "type" : "string", - "x-example" : "planId=785e99ee-0e1b-4afa-8ff3-4322cf296566" - }, { - "name" : "from", - "in" : "query", - "description" : "This parameter specifies the index from which the data has to be retrieved from the store. It is mainly used during pagination where the data is retrieved in batches", - "required" : false, - "type" : "integer", - "format" : "int32", - "x-example" : "from=0" - }, { - "name" : "size", - "in" : "query", - "description" : "This parameter specifies the number of records that should be present in the response. This can be combined with the parameter - from to get the records in batches during pagination.", - "required" : false, - "type" : "integer", - "format" : "int32", - "x-example" : "size=1" - }, { - "name" : "fromDate", - "in" : "query", - "description" : "This is the date from which the invocation details has to be retrieved for the matching filter criteria.It is a mandatory parameter and it should be of the format YYYY-MM-DD. Regular expression support is not available for this parameter", - "required" : true, - "type" : "string", - "format" : "date", - "x-example" : "fromDate=2017-02-26" - }, { - "name" : "toDate", - "in" : "query", - "description" : "This is the date to which the invocation details has to be retrieved for the matching filter criteria.It is a mandatory parameter and it should be of the format YYYY-MM-DD. Regular expression support is not available for this parameter", - "required" : true, - "type" : "string", - "format" : "date", - "x-example" : "toDate=2017-02-27" - } ], - "responses" : { - "200" : { - "description" : "Array of transactional events.", - "examples" : { - "application/json" : "{\r\n \"transaction\": [\r\n {\r\n \"creationDate\": 1487229288461,\r\n \"apiName\": \"PetStoreTest\",\r\n \"apiVersion\": \"1.0.0\",\r\n \"apiId\": \"73c40484-678a-4fb0-a56c-21119869e5f4\",\r\n \"totalTime\": 1386,\r\n \"providerTime\": 1336,\r\n \"applicationName\": \"testApp\",\r\n \"applicationId\": \"10727b01-e13a-4c5d-b39e-c5c336101e21\",\r\n \"status\": \"SUCCESS\",\r\n \"totalDataSize\": 1341,\r\n \"responseCode\": \"200\",\r\n \"operationName\": \"/pet\",\r\n \"httpMethod\": \"post\",\r\n \"packageName\": \"TestPackage\",\r\n \"packageId\": \"7aafd5c8-3ea4-454f-ae78-d9ffc328672a\",\r\n \"planName\": \"TestPlan\",\r\n \"planId\": \"70369925-27f9-4c8a-b078-ca057516735e\"\r\n }\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/TransactionEvent" - } - }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "400" : { - "description" : "One optional parameter along with fromDate and toData is required", - "examples" : { - "application/json" : "{ \"errorDetails\": \" Insufficient parameters. At least one parameter in addition to the creation date range must be provided.\"}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/transactionalEvents/_count" : { - "get" : { - "description" : "This method can be used to retrieve the number of transaction events for a given API/Application/Plan/Package for a specific period of time. Multiple request parameters of this method provide options to specify the request criteria to match the expected result and most of these input parameters supports regular expression in their values. Along with the mandatory parameters - fromDate and toDate, any one of the other filter criteria should be passed in the request.", - "operationId" : "getTransactionsCount", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "apiName", - "in" : "query", - "description" : "The name of the API for which the invocation count is required.The exact name must be provided or regular expressions can be used like API_.*", - "required" : false, - "type" : "string", - "x-example" : "apiName=PetStore" - }, { - "name" : "apiVersion", - "in" : "query", - "description" : "The version of the API", - "required" : false, - "type" : "string", - "x-example" : "apiVersion=1.0" - }, { - "name" : "apiId", - "in" : "query", - "description" : "The system generated id for an API.The id of an can be retrieved from the API details screen", - "required" : false, - "type" : "string", - "x-example" : "apiId=105e99ee-0e1b-4afa-8ff3-4322cf296558" - }, { - "name" : "applicationName", - "in" : "query", - "description" : "The name of the Application for which the invocation count is required.The exact name must be provided or regular expressions can be used like APP_.*", - "required" : false, - "type" : "string", - "x-example" : "applicationName=HostBasedIdentifier" - }, { - "name" : "applicationId", - "in" : "query", - "description" : "The system generated id for an Application.The id of an can be retrieved from the Application details screen", - "required" : false, - "type" : "string", - "x-example" : "applicationId=995e99ee-0e1b-4afa-8ff3-4322cf296587" - }, { - "name" : "packageName", - "in" : "query", - "description" : "The name of the Package for which the invocation count is required.The exact name must be provided or regular expressions can be used like Package_.*", - "required" : false, - "type" : "string", - "x-example" : "pakageName=TravelPackage" - }, { - "name" : "packageId", - "in" : "query", - "description" : "The system generated id for a Package.The id of an can be retrieved from the Package details screen", - "required" : false, - "type" : "string", - "x-example" : "apiId=685023ee-0e1b-4afa-8ff3-4322cf296566" - }, { - "name" : "planName", - "in" : "query", - "description" : "The name of the Plan for which the invocation count is required.The exact name must be provided or regular expressions can be used like Plan_.*", - "required" : false, - "type" : "string", - "x-example" : "planName=GoldPlan" - }, { - "name" : "planId", - "in" : "query", - "description" : "The system generated id for a Plan.The id of an can be retrieved from the Plan details screen", - "required" : false, - "type" : "string", - "x-example" : "planId=785e99ee-0e1b-4afa-8ff3-4322cf296566" - }, { - "name" : "fromDate", - "in" : "query", - "description" : "This is the date from which the count has to be retrieved for the matching filter criteria.It is a mandatory parameter and it should be of the format YYYY-MM-DD. Regular expression support is not available for this parameter", - "required" : true, - "type" : "string", - "format" : "date", - "x-example" : "fromDate=2017-02-26 or fromDate=1488091324" - }, { - "name" : "toDate", - "in" : "query", - "description" : "This is the date to which the count has to be retrieved for the matching filter criteria.It is a mandatory parameter and it should be of the format YYYY-MM-DD. Regular expression support is not available for this parameter", - "required" : true, - "type" : "string", - "format" : "date", - "x-example" : "toDate=2017-02-27 or toDate=1488177724" - } ], - "responses" : { - "200" : { - "description" : "Array of transactional events count grouped by apiId and api version.", - "examples" : { - "application/json" : "{\r\n \"count\": [\r\n {\r\n \"apiName\": \"PetStoreTest\",\r\n \"apiVersion\": \"1.0.0\",\r\n \"count\": 2\r\n }\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/TransactionResponse" - } - }, - "401" : { - "description" : "This response indicates that invalid credentials have been provided for the request." - }, - "400" : { - "description" : "One optional parameter along with fromDate and toDate is mandatory", - "examples" : { - "application/json" : "{ \"errorDetails\": \" Insufficient parameters. At least one parameter in addition to the creation date range must be provided.\"}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "ExternalCallData" : { - "type" : "object", - "properties" : { - "externalCallType" : { - "type" : "string" - }, - "externalURL" : { - "type" : "string" - }, - "callStartTime" : { - "type" : "integer", - "format" : "int64" - }, - "callEndTime" : { - "type" : "integer", - "format" : "int64" - }, - "callDuration" : { - "type" : "integer", - "format" : "int64" - }, - "responseCode" : { - "type" : "string" - } - } - }, - "TransactionEvent" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string" - }, - "eventType" : { - "type" : "string" - }, - "sourceGateway" : { - "type" : "string" - }, - "sourceGatewayDetails" : { - "type" : "string" - }, - "creationDate" : { - "type" : "integer", - "format" : "int64", - "description" : "Creation time of the transaction." - }, - "apiName" : { - "type" : "string", - "description" : "API name" - }, - "apiVersion" : { - "type" : "string", - "description" : "API version" - }, - "apiId" : { - "type" : "string", - "description" : "API Id" - }, - "totalTime" : { - "type" : "integer", - "format" : "int64", - "description" : "Total time taken for processing the request" - }, - "sessionId" : { - "type" : "string", - "description" : "Unique Id of the session" - }, - "providerTime" : { - "type" : "integer", - "format" : "int64", - "description" : "Time taken by the native provider for processing the request" - }, - "applicationName" : { - "type" : "string", - "description" : "Application name" - }, - "consumerIp" : { - "type" : "string", - "description" : "IP address of the consumer for the current request" - }, - "applicationIp" : { - "type" : "string", - "description" : "IP address of the application for the current request" - }, - "applicationId" : { - "type" : "string", - "description" : "Unique Id of the application" - }, - "status" : { - "type" : "string", - "description" : "Status of the request" - }, - "reqPayload" : { - "type" : "string", - "description" : "The complete request payload" - }, - "resPayload" : { - "type" : "string", - "description" : "The complete response payload" - }, - "totalDataSize" : { - "type" : "integer", - "format" : "int64", - "description" : "Total size of the payload" - }, - "responseCode" : { - "type" : "string", - "description" : "Response status code" - }, - "cachedResponse" : { - "type" : "string", - "description" : "Boolean value to indicate whether the response is served from cache" - }, - "operationName" : { - "type" : "string", - "description" : "Operation name of the incoming request" - }, - "httpMethod" : { - "type" : "string", - "description" : "Name of the method" - }, - "packageName" : { - "type" : "string", - "description" : "Package name" - }, - "packageId" : { - "type" : "string", - "description" : "Id of the package." - }, - "planName" : { - "type" : "string", - "description" : "Plan name" - }, - "planId" : { - "type" : "string", - "description" : "Id of the Plan" - }, - "origin" : { - "type" : "string", - "description" : "Origin of a Websocket message" - }, - "messagePayload" : { - "type" : "string", - "description" : "Payload of a Websocket message" - }, - "messageType" : { - "type" : "string", - "description" : "Websocket message type" - }, - "requestHeaders" : { - "type" : "object", - "description" : "Incoming request headers", - "additionalProperties" : { - "type" : "string" - } - }, - "responseHeaders" : { - "type" : "object", - "description" : "Outgoing response headers", - "additionalProperties" : { - "type" : "string" - } - }, - "queryParameters" : { - "type" : "object", - "description" : "Incoming query parameters", - "additionalProperties" : { - "type" : "string" - } - }, - "correlationID" : { - "type" : "string", - "description" : "Correlation ID used in the logging" - }, - "customFields" : { - "type" : "object", - "description" : "Custom fields to be added.", - "additionalProperties" : { - "type" : "string" - } - }, - "errorOrigin" : { - "type" : "string", - "description" : "Information of error orgination" - }, - "nativeRequestHeaders" : { - "type" : "object", - "description" : "Request headers sent in native call", - "additionalProperties" : { - "type" : "string" - } - }, - "nativeReqPayload" : { - "type" : "string", - "description" : "Request payload sent in native call" - }, - "nativeResponseHeaders" : { - "type" : "object", - "description" : "Response headers received from native call", - "additionalProperties" : { - "type" : "string" - } - }, - "nativeResPayload" : { - "type" : "string", - "description" : "Response payload received from native call" - }, - "nativeHttpMethod" : { - "type" : "string", - "description" : "Finally resolved HTTP method of native endpoint call" - }, - "nativeURL" : { - "type" : "string", - "description" : "Finally resolved URL of native endpoint call" - }, - "externalCalls" : { - "type" : "array", - "description" : "Details of external calls made", - "items" : { - "$ref" : "#/definitions/ExternalCallData" - } - }, - "sourceGatewayNode" : { - "type" : "string", - "description" : "The node which processed the request, in a multi node gateway" - }, - "callbackRequest" : { - "type" : "boolean" - } - } - }, - "TransactionResponse" : { - "type" : "object", - "properties" : { - "apiId" : { - "type" : "string", - "description" : "API Id" - }, - "apiName" : { - "type" : "string", - "description" : "API name" - }, - "apiVersion" : { - "type" : "string", - "description" : "API version" - }, - "count" : { - "type" : "integer", - "format" : "int64", - "description" : "The total number of invocations based on the provided filter criteria" - } - } - } - } +{ + "swagger" : "2.0", + "info" : { + "description" : "API Gateway Transactions service allows you to query the API transactions. API Transactions are generated (as events) everytime an API invocation happens. API Transactions may contain the details about the invocation such as request/response headers, request/response payloads, consumer applications and so on. API Provider may choose to store these events to one or more destinations by using Log Invocation Policy. API Gateway provides different destination options to the API Provider (like API Gateway own data store, relational databases, Elastic Search etc.) where he/she would like to store these events to. By default, API Gateway is chosen as a storage destination for these events.\n\nIt is important to note that this REST API queries for the transactions data only from the API Gateway's default datastore.\n\nThere are multiple use cases for these transactions data. For instance, you can integrate this API with your billing system wherein these transactional data can be used to compute the usage history of your API for different consumers for monetization usecases. In other scenarios, the data extracted from this service can be used for custom report generation.Any valid API Gateway user can consume this REST service.", + "version" : "10.3", + "title" : "API Gateway Transactions Data Service" + }, + "host" : "localhost:5555", + "basePath" : "/rest/apigateway", + "schemes" : [ "http" ], + "consumes" : [ "plain/text" ], + "produces" : [ "application/json" ], + "paths" : { + "/transactionalEvents/_search" : { + "get" : { + "description" : "This method can be used to retrieve the transaction events for a given API/Application/Plan/Package for a specific period of time. Multiple request parameters of this method provide options to specify the request criteria to match the expected result and most of these input parameters supports regular expression in their values. Along with the mandatory parameters - fromDate and toDate, any one of the other filter criteria should be passed in the request.", + "operationId" : "getTransactions", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiName", + "in" : "query", + "description" : "The name of the API for which the invocation details is required.The exact name must be provided or regular expressions can be used like API_.*", + "required" : false, + "type" : "string", + "x-example" : "apiName=PetStore" + }, { + "name" : "apiVersion", + "in" : "query", + "description" : "The version of the API", + "required" : false, + "type" : "string", + "x-example" : "apiVersion=1.0" + }, { + "name" : "apiId", + "in" : "query", + "description" : "The system generated id for an API.The id of an can be retrieved from the API details screen", + "required" : false, + "type" : "string", + "x-example" : "apiId=105e99ee-0e1b-4afa-8ff3-4322cf296558" + }, { + "name" : "applicationName", + "in" : "query", + "description" : "The name of the Application for which the invocation details is required.The exact name must be provided or regular expressions can be used like APP_.*", + "required" : false, + "type" : "string", + "x-example" : "applicationName=HostBasedIdentifier" + }, { + "name" : "applicationId", + "in" : "query", + "description" : "The system generated id for an Application.The id of an can be retrieved from the Application details screen", + "required" : false, + "type" : "string", + "x-example" : "applicationId=995e99ee-0e1b-4afa-8ff3-4322cf296587" + }, { + "name" : "packageName", + "in" : "query", + "description" : "The name of the Package for which the invocation details is required.The exact name must be provided or regular expressions can be used like Package_.*", + "required" : false, + "type" : "string", + "x-example" : "pakageName=TravelPackage" + }, { + "name" : "packageId", + "in" : "query", + "description" : "The system generated id for a Package.The id of an can be retrieved from the Package details screen", + "required" : false, + "type" : "string", + "x-example" : "packageId=685023ee-0e1b-4afa-8ff3-4322cf296566" + }, { + "name" : "planName", + "in" : "query", + "description" : "The name of the Plan for which the invocation details is required.The exact name must be provided or regular expressions can be used like Plan_.*", + "required" : false, + "type" : "string", + "x-example" : "planName=GoldPlan" + }, { + "name" : "planId", + "in" : "query", + "description" : "The system generated id for a Plan.The id of an can be retrieved from the Plan details screen", + "required" : false, + "type" : "string", + "x-example" : "planId=785e99ee-0e1b-4afa-8ff3-4322cf296566" + }, { + "name" : "from", + "in" : "query", + "description" : "This parameter specifies the index from which the data has to be retrieved from the store. It is mainly used during pagination where the data is retrieved in batches", + "required" : false, + "type" : "integer", + "format" : "int32", + "x-example" : "from=0" + }, { + "name" : "size", + "in" : "query", + "description" : "This parameter specifies the number of records that should be present in the response. This can be combined with the parameter - from to get the records in batches during pagination.", + "required" : false, + "type" : "integer", + "format" : "int32", + "x-example" : "size=1" + }, { + "name" : "fromDate", + "in" : "query", + "description" : "This is the date from which the invocation details has to be retrieved for the matching filter criteria.It is a mandatory parameter and it should be of the format YYYY-MM-DD. Regular expression support is not available for this parameter", + "required" : true, + "type" : "string", + "format" : "date", + "x-example" : "fromDate=2017-02-26" + }, { + "name" : "toDate", + "in" : "query", + "description" : "This is the date to which the invocation details has to be retrieved for the matching filter criteria.It is a mandatory parameter and it should be of the format YYYY-MM-DD. Regular expression support is not available for this parameter", + "required" : true, + "type" : "string", + "format" : "date", + "x-example" : "toDate=2017-02-27" + } ], + "responses" : { + "200" : { + "description" : "Array of transactional events.", + "schema" : { + "$ref" : "#/definitions/TransactionEvent" + }, + "examples" : { + "application/json" : "{\r\n \"transaction\": [\r\n {\r\n \"creationDate\": 1487229288461,\r\n \"apiName\": \"PetStoreTest\",\r\n \"apiVersion\": \"1.0.0\",\r\n \"apiId\": \"73c40484-678a-4fb0-a56c-21119869e5f4\",\r\n \"totalTime\": 1386,\r\n \"providerTime\": 1336,\r\n \"applicationName\": \"testApp\",\r\n \"applicationId\": \"10727b01-e13a-4c5d-b39e-c5c336101e21\",\r\n \"status\": \"SUCCESS\",\r\n \"totalDataSize\": 1341,\r\n \"responseCode\": \"200\",\r\n \"operationName\": \"/pet\",\r\n \"httpMethod\": \"post\",\r\n \"packageName\": \"TestPackage\",\r\n \"packageId\": \"7aafd5c8-3ea4-454f-ae78-d9ffc328672a\",\r\n \"planName\": \"TestPlan\",\r\n \"planId\": \"70369925-27f9-4c8a-b078-ca057516735e\"\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "400" : { + "description" : "One optional parameter along with fromDate and toData is required", + "examples" : { + "application/json" : "{ \"errorDetails\": \" Insufficient parameters. At least one parameter in addition to the creation date range must be provided.\"}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/transactionalEvents/_count" : { + "get" : { + "description" : "This method can be used to retrieve the number of transaction events for a given API/Application/Plan/Package for a specific period of time. Multiple request parameters of this method provide options to specify the request criteria to match the expected result and most of these input parameters supports regular expression in their values. Along with the mandatory parameters - fromDate and toDate, any one of the other filter criteria should be passed in the request.", + "operationId" : "getTransactionsCount", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "apiName", + "in" : "query", + "description" : "The name of the API for which the invocation count is required.The exact name must be provided or regular expressions can be used like API_.*", + "required" : false, + "type" : "string", + "x-example" : "apiName=PetStore" + }, { + "name" : "apiVersion", + "in" : "query", + "description" : "The version of the API", + "required" : false, + "type" : "string", + "x-example" : "apiVersion=1.0" + }, { + "name" : "apiId", + "in" : "query", + "description" : "The system generated id for an API.The id of an can be retrieved from the API details screen", + "required" : false, + "type" : "string", + "x-example" : "apiId=105e99ee-0e1b-4afa-8ff3-4322cf296558" + }, { + "name" : "applicationName", + "in" : "query", + "description" : "The name of the Application for which the invocation count is required.The exact name must be provided or regular expressions can be used like APP_.*", + "required" : false, + "type" : "string", + "x-example" : "applicationName=HostBasedIdentifier" + }, { + "name" : "applicationId", + "in" : "query", + "description" : "The system generated id for an Application.The id of an can be retrieved from the Application details screen", + "required" : false, + "type" : "string", + "x-example" : "applicationId=995e99ee-0e1b-4afa-8ff3-4322cf296587" + }, { + "name" : "packageName", + "in" : "query", + "description" : "The name of the Package for which the invocation count is required.The exact name must be provided or regular expressions can be used like Package_.*", + "required" : false, + "type" : "string", + "x-example" : "pakageName=TravelPackage" + }, { + "name" : "packageId", + "in" : "query", + "description" : "The system generated id for a Package.The id of an can be retrieved from the Package details screen", + "required" : false, + "type" : "string", + "x-example" : "apiId=685023ee-0e1b-4afa-8ff3-4322cf296566" + }, { + "name" : "planName", + "in" : "query", + "description" : "The name of the Plan for which the invocation count is required.The exact name must be provided or regular expressions can be used like Plan_.*", + "required" : false, + "type" : "string", + "x-example" : "planName=GoldPlan" + }, { + "name" : "planId", + "in" : "query", + "description" : "The system generated id for a Plan.The id of an can be retrieved from the Plan details screen", + "required" : false, + "type" : "string", + "x-example" : "planId=785e99ee-0e1b-4afa-8ff3-4322cf296566" + }, { + "name" : "fromDate", + "in" : "query", + "description" : "This is the date from which the count has to be retrieved for the matching filter criteria.It is a mandatory parameter and it should be of the format YYYY-MM-DD. Regular expression support is not available for this parameter", + "required" : true, + "type" : "string", + "format" : "date", + "x-example" : "fromDate=2017-02-26 or fromDate=1488091324" + }, { + "name" : "toDate", + "in" : "query", + "description" : "This is the date to which the count has to be retrieved for the matching filter criteria.It is a mandatory parameter and it should be of the format YYYY-MM-DD. Regular expression support is not available for this parameter", + "required" : true, + "type" : "string", + "format" : "date", + "x-example" : "toDate=2017-02-27 or toDate=1488177724" + } ], + "responses" : { + "200" : { + "description" : "Array of transactional events count grouped by apiId and api version.", + "schema" : { + "$ref" : "#/definitions/TransactionResponse" + }, + "examples" : { + "application/json" : "{\r\n \"count\": [\r\n {\r\n \"apiName\": \"PetStoreTest\",\r\n \"apiVersion\": \"1.0.0\",\r\n \"count\": 2\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This response indicates that invalid credentials have been provided for the request." + }, + "400" : { + "description" : "One optional parameter along with fromDate and toDate is mandatory", + "examples" : { + "application/json" : "{ \"errorDetails\": \" Insufficient parameters. At least one parameter in addition to the creation date range must be provided.\"}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + } + }, + "securityDefinitions" : { + "Basic" : { + "description" : "API Gateway Administrator and API Gateway provider", + "type" : "basic" + } + }, + "definitions" : { + "TransactionEvent" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string" + }, + "eventType" : { + "type" : "string" + }, + "creationDate" : { + "type" : "integer", + "format" : "int64", + "description" : "Creation time of the transaction." + }, + "apiName" : { + "type" : "string", + "description" : "API name" + }, + "apiVersion" : { + "type" : "string", + "description" : "API version" + }, + "apiId" : { + "type" : "string", + "description" : "API Id" + }, + "totalTime" : { + "type" : "integer", + "format" : "int64", + "description" : "Total time taken for processing the request" + }, + "sessionId" : { + "type" : "string", + "description" : "Unique Id of the session" + }, + "providerTime" : { + "type" : "integer", + "format" : "int64", + "description" : "Time taken by the native provider for processing the request" + }, + "applicationName" : { + "type" : "string", + "description" : "Application name" + }, + "consumerIp" : { + "type" : "string", + "description" : "IP address of the consumer for the current request" + }, + "applicationId" : { + "type" : "string", + "description" : "Unique Id of the application" + }, + "status" : { + "type" : "string", + "description" : "Status of the request" + }, + "reqPayload" : { + "type" : "string", + "description" : "The complete request payload" + }, + "resPayload" : { + "type" : "string", + "description" : "The complete response payload" + }, + "totalDataSize" : { + "type" : "integer", + "format" : "int64", + "description" : "Total size of the payload" + }, + "responseCode" : { + "type" : "string", + "description" : "Response status code" + }, + "cachedResponse" : { + "type" : "string", + "description" : "Boolean value to indicate whether the response is served from cache" + }, + "operationName" : { + "type" : "string", + "description" : "Operation name of the incoming request" + }, + "httpMethod" : { + "type" : "string", + "description" : "Name of the method" + }, + "packageName" : { + "type" : "string", + "description" : "Package name" + }, + "packageId" : { + "type" : "string", + "description" : "Id of the package." + }, + "planName" : { + "type" : "string", + "description" : "Plan name" + }, + "planId" : { + "type" : "string", + "description" : "Id of the Plan" + }, + "origin" : { + "type" : "string", + "description" : "Origin of a Websocket message" + }, + "messagePayload" : { + "type" : "string", + "description" : "Payload of a Websocket message" + }, + "messageType" : { + "type" : "string", + "description" : "Websocket message type" + }, + "requestHeaders" : { + "type" : "object", + "description" : "Incoming request headers", + "additionalProperties" : { + "type" : "string" + } + }, + "responseHeaders" : { + "type" : "object", + "description" : "Outgoing response headers", + "additionalProperties" : { + "type" : "string" + } + }, + "queryParameters" : { + "type" : "object", + "description" : "Incoming query parameters", + "additionalProperties" : { + "type" : "string" + } + }, + "correlationID" : { + "type" : "string", + "description" : "Correlation ID used in the logging" + }, + "customFields" : { + "type" : "object", + "description" : "Custom fields to be added.", + "additionalProperties" : { + "type" : "string" + } + }, + "errorOrigin" : { + "type" : "string", + "description" : "Information of error orgination" + }, + "callbackRequest" : { + "type" : "boolean" + } + } + }, + "TransactionResponse" : { + "type" : "object", + "properties" : { + "apiId" : { + "type" : "string", + "description" : "API Id" + }, + "apiName" : { + "type" : "string", + "description" : "API name" + }, + "apiVersion" : { + "type" : "string", + "description" : "API version" + }, + "count" : { + "type" : "integer", + "format" : "int64", + "description" : "The total number of invocations based on the provided filter criteria" + } + } + } + } } \ No newline at end of file diff --git a/apigatewayservices/APIGatewayUserManagementSwagger.json b/apigatewayservices/APIGatewayUserManagement.json similarity index 79% rename from apigatewayservices/APIGatewayUserManagementSwagger.json rename to apigatewayservices/APIGatewayUserManagement.json index 6891cc8..bab116c 100644 --- a/apigatewayservices/APIGatewayUserManagementSwagger.json +++ b/apigatewayservices/APIGatewayUserManagement.json @@ -1,858 +1,809 @@ -{ - "swagger" : "2.0", - "info" : { - "description" : "API Gateway User Management Service allows you to manage Users, Groups and Access profiles in the API Gateway. Any user with the 'Manage user administration' functional privilege can manage the Users, Groups and Access profiles in API Gateway. By default, the users who are part of API-Gateway-Administrators groups will have this privilege.\n\nAPI Gateway allows you to manage the password restrictions settings. For security purposes, API Gateway places length and character restrictions on passwords for administrator and non-administrator users. API Gateway contains a default set of password requirements. However, you can change these using the API Gateway Administration Service. Refer the REST resource '/configurations/passwordRestrictions' in the API Gateway Administration Service. \n\nAPI Gateway allows you to manage the password expiration settings. For security purposes, API Gateway allows administrators to set password expiration requirements on passwords for administrator and non-administrator users. API Gateway contains a default set of password expiry settings. However, you can change these with the API Gateway Administration service. Refer the REST resource '/configurations/passwordExpiry' in the API Gateway Administration Service. \n\nAPI Gateway allows you to manage the account locking settings. For security purposes, it is important to lock a user account when the user fails to provide the correct password after a specified number of failed login attempts to API Gateway. A locked user account remains locked for a specific period of time, after which the account gets unlocked. API Gateway allows administrators to configure these account locking settings for administrator and non-administrator users. Using API Gateway Administration Service, you can set the values for number of attempts by a user before locking the account and also the duration of the lock interval. Refer the REST resource '/configurations/accountLockSettings' in the API Gateway Administration Service.\n\nAPI Gateway allows you to view the locked user accounts and also allows to manually unlock locked user accounts before the automatic unlocking period. This can be achieved using the REST resource '/is/lockedAccounts' in the API Gateway User Management Service. \n\nAPI Gateway allows you to configure LDAP directories. If your server uses Lightweight Directory Access Protocol (LDAP) for user and group information, you can configure API Gateway to obtain user and group information from the external LDAP directory. You can configure API Gateway to use more than one LDAP directory at a time, allowing API Gateway to work with different LDAP directories for users in different locations or different organizations. You can manage the LDAP directories and LDAP configurations using the API Gateway Administration service. Refer the REST resource '/configurations/ldapConfig' in the API Gateway Administration Service.\n\nGlobal Team Assignments : When Teamwork feature is enabled, one can automate the team assignment for assets, by defining Global Team Assignment rules. Rules are defined by specifying one or more asset based conditions, and by configuring the rule output if the conditions are met. Management of such rules are exposed through an REST API. Refer the REST resource '/rule' in the API Gateway Administration Service.", - "version" : "10.7", - "title" : "API Gateway User Management Service" - }, - "host" : "localhost:5555", - "basePath" : "/rest/apigateway", - "schemes" : [ "http" ], - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "paths" : { - "/installedLanguages" : { - "get" : { - "description" : "The method retrieves list of installed language packs in API Gateway.", - "operationId" : "getInstalledLanguages", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the list of installed language packs is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"installedLanguages\": [\r\n \"ja\"\r\n ]\r\n}" - }, - "schema" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/accessProfiles" : { - "get" : { - "description" : "The method retrieves list of all teams in API Gateway.", - "operationId" : "getAccessProfiles", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the list of teams is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"accessProfiles\": [\r\n {\r\n \"id\": \"Administrators\",\r\n \"name\": \"Administrators\",\r\n \"description\": \"Groups associated to this team are allowed to perform all the administration related tasks. \",\r\n \"systemDefined\": true,\r\n \"privilege\": \"1111111111111111111111111111111111111111111111111111111111111111\",\r\n \"groupIds\": [\r\n \"Administrators\",\r\n \"API-Gateway-Administrators\"\r\n ]\r\n },\r\n {\r\n \"id\": \"API-Gateway-Providers\",\r\n \"name\": \"API-Gateway-Providers\",\r\n \"description\": \"Groups associated to this team are allowed to access an asset based on the functional privileges assigned to this team.\",\r\n \"systemDefined\": true,\r\n \"privilege\": \"111100101101100000001\",\r\n \"groupIds\": [\r\n \"API-Gateway-Providers\"\r\n ]\r\n },\r\n {\r\n \"id\": \"8b6f2e10-1d82-4813-b927-4c1cf4a4d029\",\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"systemDefined\": false,\r\n \"privilege\": \"101110000001100000110101\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ],\r\n \"teamAdmin\": {\r\n \"userIds\": [\r\n \"user1\"\r\n ],\r\n \"groupIds\": [\r\n \"group1\"\r\n ]\r\n }\r\n\r\n }\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AccessProfile" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "The method creates a team in API Gateway. The API request body must contain the payload for the team. Each bit infers the applicability of the functional privilege permission. Value 1 implies permission granted for that functional privilege. Value 0 implies denied permission. Function Privileges and its positions from left most bit to the right most bit. 1.Manage APIs2.Activate / Deactivate APIs3.Manage applications4.Manage aliases5.Manage global policies6.Activate / Deactivate global policies7.Manage policy templates8.Manage threat protection configurations9.Manage packages and plans10.Activate / Deactivate packages11.Publish to API Portal12.Import assets13.Export assets14.View administration configurations15.Manage general administration configurations16.Manage security configurations17.Manage destination configurations18.Manage system settings19.Manage user administration20.Manage purge and restore runtime events21.Execute service result cache APIs22.Manage Promotion23.Publish API to Service Registry24.Manage Service Registries", - "operationId" : "createAccessProfile", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a accessProfile that is to be created in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/AccessProfile" - }, - "x-examples" : { - "application/json" : "{\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"privilege\": \"101110000001100000110101\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ],\r\n \"teamAdmin\": {\r\n \"userIds\": [\r\n \"Administrator\"\r\n ],\r\n \"groupIds\": [\r\n \"Administrators\"\r\n ]\r\n }\r\n}" - } - } ], - "responses" : { - "201" : { - "description" : "This status code indicates that the team has been successfully created in API Gateway, and the newly created team is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"id\": \"8b6f2e10-1d82-4813-b927-4c1cf4a4d029\",\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"privilege\": \"101110000001100000110101\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ],\r\n \"teamAdmin\": {\r\n \"userIds\": [\r\n \"Administrator\"\r\n ],\r\n \"groupIds\": [\r\n \"Administrators\"\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AccessProfile" - } - }, - "400" : { - "description" : "This status code indicates that a team with the given name already exists in API Gateway or the request body is not correct." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/accessProfiles/{accessProfileId}" : { - "get" : { - "description" : "The method retrieves the details of a team in API Gateway.", - "operationId" : "getAccessProfile", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "accessProfileId", - "in" : "path", - "description" : "The path parameter specifies the id of a team whose details are to be retrieved.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the details of the team is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"id\": \"8b6f2e10-1d82-4813-b927-4c1cf4a4d029\",\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"systemDefined\": false,\r\n \"privilege\": \"1011100000011000001\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ],\r\n \"teamAdmin\": {\r\n \"userIds\": [\r\n \"Administrator\"\r\n ],\r\n \"groupIds\": [\r\n \"Administrators\"\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AccessProfile" - } - }, - "404" : { - "description" : "This status code indicates that a team with the given id could not be found in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" AccessProfile with id: 15fbeeb2-745c-4988-b7b6-61f359ecbfc8 does not exist.\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "The method updates the details of a specified team in API Gateway. The API request body must contain the payload for the updated accessProfile.", - "operationId" : "updateAccessProfile", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a accessProfile that is to be updated in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/AccessProfile" - }, - "x-examples" : { - "application/json" : "{\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"privilege\": \"101110000001100000110101\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ],\r\n \"teamAdmin\": {\r\n \"userIds\": [\r\n \"Administrator\"\r\n ],\r\n \"groupIds\": [\r\n \"Administrators\"\r\n ]\r\n }\r\n}" - } - }, { - "name" : "accessProfileId", - "in" : "path", - "description" : "The path parameter specifies the id of a team whose detail is to be updated in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the team has been successfully updated in API Gateway, and the updated team is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"id\": \"8b6f2e10-1d82-4813-b927-4c1cf4a4d029\",\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"systemDefined\": false,\r\n \"privilege\": \"1011100000011000001\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ],\r\n \"teamAdmin\": {\r\n \"userIds\": [\r\n \"Administrator\"\r\n ],\r\n \"groupIds\": [\r\n \"Administrators\"\r\n ]\r\n }\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/AccessProfile" - } - }, - "400" : { - "description" : "This status code indicates that the request body is invalid." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "The method deletes a team from API Gateway.", - "operationId" : "deleteAccessProfile", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "accessProfileId", - "in" : "path", - "description" : "This parameter specifies the ID of a team that is to be deleted in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "This status code indicates that the specified team has been successfully deleted from API Gateway." - }, - "404" : { - "description" : "This status code indicates that team with the given id could not be found in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" AccessProfile with id: 732c4526-db9a-4ef9-9782-edda1a6aa9bc does not exist.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/is/lockedAccounts" : { - "get" : { - "description" : "Retrieves the locked accounts in API Gateway", - "operationId" : "getLockedAccounts", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "", - "examples" : { - "application/json" : "{\r\n\t\"lockedAccounts\":[\"a\",\"b\"]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/LockedAccounts" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "Unlock user account(s) locked by API Gateway", - "operationId" : "unLockUserAccounts", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "", - "required" : true, - "schema" : { - "$ref" : "#/definitions/UnlockAccountsRequest" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"unLockAccounts\": { \r\n\t\t\"userName\": [\"c\"]\r\n\t}\r\n}" - } - } ], - "responses" : { - "200" : { - "description" : "", - "examples" : { - "application/json" : "{\r\n\t\"lockedAccounts\":[\"a\",\"b\"]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/LockedAccounts" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/groups" : { - "get" : { - "description" : "The method retrieves list of all groups in API Gateway.", - "operationId" : "getGroups", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the list of groups is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"groups\": [\r\n {\r\n \"id\": \"Administrators\",\r\n \"name\": \"Administrators\",\r\n \"description\": \"Users added to this group can perform similar local administrative tasks.\",\r\n \"type\": \"local\",\r\n \"systemDefined\": true,\r\n \"userIds\": [\r\n \"Administrator\"\r\n ]\r\n },\r\n {\r\n \"id\": \"API-Gateway-Administrators\",\r\n \"name\": \"API-Gateway-Administrators\",\r\n \"description\": \"Users added to this group can perform similar API Gateway Administrative tasks.\",\r\n \"type\": \"local\",\r\n \"systemDefined\": true,\r\n \"userIds\": [\r\n \"Administrator\"\r\n ]\r\n },\r\n {\r\n \"id\": \"API-Gateway-Providers\",\r\n \"name\": \"API-Gateway-Providers\",\r\n \"description\": \"Users added to this group can perform similar API Gateway Providers tasks.\",\r\n \"type\": \"local\",\r\n \"systemDefined\": true,\r\n \"userIds\": []\r\n },\r\n {\r\n \"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n \"name\": \"TestGrp\",\r\n \"description\": \"\",\r\n \"type\": \"local\",\r\n \"systemDefined\": false,\r\n \"userIds\": [\r\n \"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n ]\r\n }\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Group" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "The method creates a group in API Gateway. The API request body must contain the payload for the group.", - "operationId" : "createGroup", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a group that is to be created in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Group" - }, - "x-examples" : { - "application/json" : "{\r\n\t \"name\": \"TestGrp\",\r\n\t\"description\": \"Group has all QA Members\",\r\n\t\"userIds\": [\r\n\t\t\"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n\t]\r\n}" - } - } ], - "responses" : { - "201" : { - "description" : "This status code indicates that the group has been successfully created in API Gateway, and the newly created group is available in the response body.", - "examples" : { - "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n\t\"name\": \"TestGrp\",\r\n\t\"description\": \"Group has all QA Members\",\r\n\t\"type\": \"local\",\r\n\t\"userIds\": [\r\n\t\t\"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n\t]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Group" - } - }, - "400" : { - "description" : "This status code indicates that a group with the given name already exists in API Gateway or the request body is not correct." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/groups/{groupId}" : { - "get" : { - "description" : "The method retrieves the details of a group in API Gateway.", - "operationId" : "getGroup", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "groupId", - "in" : "path", - "description" : "The path parameter specifies the id of a group whose details are to be retrieved.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the details of the group is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"groups\": [\r\n {\r\n \"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n \"name\": \"TestGrp\",\r\n \"description\": \"Group has all QA Members\",\r\n \"type\": \"local\",\r\n \"userIds\": [\r\n \"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n ]\r\n }\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Group" - } - }, - "404" : { - "description" : "This status code indicates that a group with the given id could not be found in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Group with id: 15fbeeb2-745c-4988-b7b6-61f359ecbfc8 does not exist.\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either group didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "The method updates the details of a specified group in API Gateway. The API request body must contain the payload for the updated group.", - "operationId" : "updateGroup", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a group that is to be updated in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/Group" - }, - "x-examples" : { - "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n\t\"name\": \"TestGrp\",\r\n\t\"description\": \"Group has all QA Members\",\r\n\t\"userIds\": [\r\n\t\t\"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n\t]\r\n}" - } - }, { - "name" : "groupId", - "in" : "path", - "description" : "The path parameter specifies the id of a group whose detail is to be updated in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the group has been successfully updated in API Gateway, and the updated group is available in the response body.", - "examples" : { - "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n\t\"name\": \"TestGrp\",\r\n\t\"description\": \"Group has all QA Members\",\r\n\t\"type\": \"local\",\r\n\t\"userIds\": [\r\n\t\t\"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n\t]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/Group" - } - }, - "400" : { - "description" : "This status code indicates that the request body is invalid." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "The method deletes a group from API Gateway.", - "operationId" : "deleteGroup", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "groupId", - "in" : "path", - "description" : "The path parameter specifies the id of a group that is to be deleted from API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "This status code indicates that the specified group has been successfully deleted from API Gateway." - }, - "404" : { - "description" : "This status code indicates that group with the given id could not be found in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" Group with id: 732c4526-db9a-4ef9-9782-edda1a6aa9bc does not exist.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/users" : { - "get" : { - "description" : "The method retrieves list of all users in API Gateway.", - "operationId" : "getUsers", - "produces" : [ "application/json" ], - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "This status code indicates that the list of users is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"users\": [\r\n {\r\n \"id\": \"Administrator\",\r\n \"loginId\": \"Administrator\",\r\n \"firstName\": \"Administrator\",\r\n \"password\": \"********************************\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"active\": true,\r\n \"systemDefined\": true,\r\n \"language\": \"en\",\r\n \"emailAddresses\": []\r\n },\r\n {\r\n \"id\": \"15fbeeb2-745c-4988-b7b6-61f359ecbfc8\",\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"********************************\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"active\": true,\r\n \"systemDefined\": false,\r\n \"language\": \"ja\",\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }\r\n ]\r\n}\r\n" - }, - "schema" : { - "$ref" : "#/definitions/User" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "post" : { - "description" : "The method creates an user in API Gateway. The API request body must contain the payload for the user.", - "operationId" : "createUser", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a user that is to be created in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/User" - }, - "x-examples" : { - "application/json" : "{\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"test\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"language\": \"en\",\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }" - } - } ], - "responses" : { - "201" : { - "description" : "This status code indicates that the user has been successfully created in API Gateway, and the newly created user is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"id\": \"15fbeeb2-745c-4988-b7b6-61f359ecbfc8\",\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"********************************\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"active\": true,\r\n \"language\": \"en\",\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }" - }, - "schema" : { - "$ref" : "#/definitions/User" - } - }, - "400" : { - "description" : "This status code indicates that an user with the given loginId already exists in API Gateway or the request body is not correct." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/users/authenticate" : { - "post" : { - "description" : "This HTTP request authenticates an User in API Gateway.", - "operationId" : "authenticateUser", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a user that is to be created in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/User" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the user was successfully authenticated.", - "schema" : { - "$ref" : "#/definitions/User" - } - }, - "400" : { - "description" : "This status code indicates that the request payload is not correct or User is already exists" - }, - "401" : { - "description" : "This status code indicates that authorization has been refused for this HTTP request. This is possibly because, the user has not specified the required credentials (username and password), or has specified invalid credentials." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/users/{userId}" : { - "get" : { - "description" : "The method retrieves the details of an user in API Gateway.", - "operationId" : "getUser", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "userId", - "in" : "path", - "description" : "The path parameter specifies the id of an user whose details are to be retrieved.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the details of the user is successfully retrieved.", - "examples" : { - "application/json" : "{\r\n \"users\": [\r\n {\r\n \"id\": \"15fbeeb2-745c-4988-b7b6-61f359ecbfc8\",\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"********************************\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"active\": true,\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }\r\n ]\r\n}" - }, - "schema" : { - "$ref" : "#/definitions/User" - } - }, - "404" : { - "description" : "This status code indicates that an user with the given id could not be found in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" User with id: 15fbeeb2-745c-4988-b7b6-61f359ecbfc8 does not exist.\"\r\n}" - } - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "put" : { - "description" : "The method updates the details of a specified user in API Gateway. The API request body must contain the payload for the updated user.", - "operationId" : "updateUser", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a user that is to be updated in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/User" - }, - "x-examples" : { - "application/json" : "{\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"test\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }" - } - }, { - "name" : "userId", - "in" : "path", - "description" : "The path parameter specifies the id of an user whose detail is to be updated in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the user has been successfully updated in API Gateway, and the updated user is available in the response body.", - "examples" : { - "application/json" : "{\r\n \"id\": \"15fbeeb2-745c-4988-b7b6-61f359ecbfc8\",\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"test\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }" - }, - "schema" : { - "$ref" : "#/definitions/User" - } - }, - "400" : { - "description" : "This status code indicates that the request body is invalid." - }, - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - }, - "delete" : { - "description" : "This HTTP request deletes the specified application in API Gateway.", - "operationId" : "deleteUser", - "produces" : [ "application/json" ], - "parameters" : [ { - "name" : "userId", - "in" : "path", - "description" : "This parameter specifies the ID of an application that is to be deleted in API Gateway.", - "required" : true, - "type" : "string" - } ], - "responses" : { - "401" : { - "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." - }, - "204" : { - "description" : "This status code indicates that the specified user has been successfully deleted from API Gateway." - }, - "404" : { - "description" : "This status code indicates that an user with the given id could not be found in API Gateway.", - "examples" : { - "application/json" : "{\r\n \"errorDetails\": \" User with id: 732c4526-db9a-4ef9-9782-edda1a6aa9bc does not exist.\"\r\n}" - } - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - }, - "/authenticate" : { - "post" : { - "description" : "This HTTP request authenticates an User in API Gateway.", - "operationId" : "authorizeUser", - "consumes" : [ "application/json" ], - "produces" : [ "application/json" ], - "parameters" : [ { - "in" : "body", - "name" : "body", - "description" : "This parameter describes the request payload of a user that is to be created in API Gateway.", - "required" : true, - "schema" : { - "$ref" : "#/definitions/User" - } - } ], - "responses" : { - "200" : { - "description" : "This status code indicates that the user was successfully authenticated.", - "schema" : { - "$ref" : "#/definitions/User" - } - }, - "400" : { - "description" : "This status code indicates that the request payload is not correct or User is already exists" - }, - "401" : { - "description" : "This status code indicates that authorization has been refused for this HTTP request. This is possibly because, the user has not specified the required credentials (username and password), or has specified invalid credentials." - } - }, - "security" : [ { - "Basic" : [ ] - } ] - } - } - }, - "securityDefinitions" : { - "Basic" : { - "description" : "API Gateway Administrator and API Gateway provider", - "type" : "basic" - } - }, - "definitions" : { - "AccessProfile" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "AccessProfile ID", - "readOnly" : true - }, - "name" : { - "type" : "string", - "description" : "name of the accessprofile" - }, - "description" : { - "type" : "string", - "description" : "description of the accessprofile" - }, - "privilege" : { - "$ref" : "#/definitions/BitSet" - }, - "groupIds" : { - "type" : "array", - "description" : "list of groupIds assigned to the accessprofile", - "items" : { - "type" : "string" - } - }, - "teamAdmin" : { - "$ref" : "#/definitions/TeamAdmin" - } - }, - "description" : "This model contains details about a Team in API Gateway" - }, - "BitSet" : { - "type" : "object", - "properties" : { - "empty" : { - "type" : "boolean" - } - } - }, - "TeamAdmin" : { - "type" : "object", - "properties" : { - "userIds" : { - "type" : "array", - "description" : "list of userIds to be assigned as the team administrator.", - "items" : { - "type" : "string" - } - }, - "groupIds" : { - "type" : "array", - "description" : "list of groupIds to be assigned as the team administrator. All users in the group will become team administrator.", - "items" : { - "type" : "string" - } - } - } - }, - "UnlockAccounts" : { - "type" : "object", - "properties" : { - "userName" : { - "type" : "array", - "description" : "Username that needs to be unlocked.", - "items" : { - "type" : "string" - } - } - } - }, - "UnlockAccountsRequest" : { - "type" : "object", - "properties" : { - "unLockAccounts" : { - "$ref" : "#/definitions/UnlockAccounts" - } - } - }, - "LockedAccounts" : { - "type" : "object", - "properties" : { - "lockedAccounts" : { - "type" : "array", - "description" : "Comma separated list of user accounts which are locked.", - "items" : { - "type" : "string" - } - } - } - }, - "Group" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "Group ID", - "readOnly" : true - }, - "name" : { - "type" : "string", - "description" : "name of the group" - }, - "description" : { - "type" : "string", - "description" : "description of the group" - }, - "userIds" : { - "type" : "array", - "description" : "list of user's Ids assigned to the group", - "items" : { - "type" : "string" - } - } - }, - "description" : "This model contains details about a group in API Gateway" - }, - "User" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "string", - "description" : "unique identifier of a user", - "readOnly" : true - }, - "loginId" : { - "type" : "string", - "description" : "login name" - }, - "firstName" : { - "type" : "string", - "description" : "first name of the user" - }, - "lastName" : { - "type" : "string", - "description" : "last name of the user" - }, - "emailAddresses" : { - "type" : "array", - "description" : "list of email addresses of the user", - "items" : { - "type" : "string" - } - }, - "allowDigestAuth" : { - "type" : "boolean", - "description" : "list of email addresses of the user" - }, - "active" : { - "type" : "boolean", - "description" : "active status of the user" - }, - "language" : { - "type" : "string", - "description" : "preferred language of the user" - } - }, - "description" : "This model contains details about an User in API Gateway" - } - } +{ + "swagger" : "2.0", + "info" : { + "description" : "API Gateway User Management Service allows you to manage Users, Groups and Access profiles in the API Gateway. Any user with the 'Manage user administration' functional privilege can manage the Users, Groups and Access profiles in API Gateway. By default, the users who are part of API-Gateway-Administrators groups will have this privilege.\n\nAPI Gateway allows you to manage the password restrictions settings. For security purposes, API Gateway places length and character restrictions on passwords for administrator and non-administrator users. API Gateway contains a default set of password requirements. However, you can change these using the API Gateway Administration Service. Refer the REST resource '/configurations/passwordRestrictions' in the API Gateway Administration Service. \n\nAPI Gateway allows you to manage the password expiration settings. For security purposes, API Gateway allows administrators to set password expiration requirements on passwords for administrator and non-administrator users. API Gateway contains a default set of password expiry settings. However, you can change these with the API Gateway Administration service. Refer the REST resource '/configurations/passwordExpiry' in the API Gateway Administration Service. \n\nAPI Gateway allows you to manage the account locking settings. For security purposes, it is important to lock a user account when the user fails to provide the correct password after a specified number of failed login attempts to API Gateway. A locked user account remains locked for a specific period of time, after which the account gets unlocked. API Gateway allows administrators to configure these account locking settings for administrator and non-administrator users. Using API Gateway Administration Service, you can set the values for number of attempts by a user before locking the account and also the duration of the lock interval. Refer the REST resource '/configurations/accountLockSettings' in the API Gateway Administration Service.\n\nAPI Gateway allows you to view the locked user accounts and also allows to manually unlock locked user accounts before the automatic unlocking period. This can be achieved using the REST resource '/is/lockedAccounts' in the API Gateway User Management Service. \n\nAPI Gateway allows you to configure LDAP directories. If your server uses Lightweight Directory Access Protocol (LDAP) for user and group information, you can configure API Gateway to obtain user and group information from the external LDAP directory. You can configure API Gateway to use more than one LDAP directory at a time, allowing API Gateway to work with different LDAP directories for users in different locations or different organizations. You can manage the LDAP directories and LDAP configurations using the API Gateway Administration service. Refer the REST resource '/configurations/ldapConfig' in the API Gateway Administration Service. ", + "version" : "10.3", + "title" : "API Gateway User Management Service" + }, + "host" : "localhost:5555", + "basePath" : "/rest/apigateway", + "schemes" : [ "http" ], + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "paths" : { + "/groups/{groupId}" : { + "get" : { + "description" : "The method retrieves the details of a group in API Gateway.", + "operationId" : "getGroup", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "groupId", + "in" : "path", + "description" : "The path parameter specifies the id of a group whose details are to be retrieved.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the details of the group is successfully retrieved.", + "schema" : { + "$ref" : "#/definitions/Group" + }, + "examples" : { + "application/json" : "{\r\n \"groups\": [\r\n {\r\n \"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n \"name\": \"TestGrp\",\r\n \"description\": \"Group has all QA Members\",\r\n \"type\": \"local\",\r\n \"userIds\": [\r\n \"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that a group with the given id could not be found in API Gateway.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Group with id: 15fbeeb2-745c-4988-b7b6-61f359ecbfc8 does not exist.\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either group didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "The method updates the details of a specified group in API Gateway. The API request body must contain the payload for the updated group.", + "operationId" : "updateGroup", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "This parameter describes the request payload of a group that is to be updated in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Group" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n\t\"name\": \"TestGrp\",\r\n\t\"description\": \"Group has all QA Members\",\r\n\t\"userIds\": [\r\n\t\t\"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n\t]\r\n}" + } + }, { + "name" : "groupId", + "in" : "path", + "description" : "The path parameter specifies the id of a group whose detail is to be updated in API Gateway.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the group has been successfully updated in API Gateway, and the updated group is available in the response body.", + "schema" : { + "$ref" : "#/definitions/Group" + }, + "examples" : { + "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n\t\"name\": \"TestGrp\",\r\n\t\"description\": \"Group has all QA Members\",\r\n\t\"type\": \"local\",\r\n\t\"userIds\": [\r\n\t\t\"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n\t]\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that the request body is invalid." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "The method deletes a group from API Gateway.", + "operationId" : "deleteGroup", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "groupId", + "in" : "path", + "description" : "The path parameter specifies the id of a group that is to be deleted from API Gateway.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "204" : { + "description" : "This status code indicates that the specified group has been successfully deleted from API Gateway." + }, + "404" : { + "description" : "This status code indicates that group with the given id could not be found in API Gateway.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" Group with id: 732c4526-db9a-4ef9-9782-edda1a6aa9bc does not exist.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/groups" : { + "get" : { + "description" : "The method retrieves list of all groups in API Gateway.", + "operationId" : "getGroups", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This status code indicates that the list of groups is successfully retrieved.", + "schema" : { + "$ref" : "#/definitions/Group" + }, + "examples" : { + "application/json" : "{\r\n \"groups\": [\r\n {\r\n \"id\": \"Administrators\",\r\n \"name\": \"Administrators\",\r\n \"description\": \"Users added to this group can perform similar local administrative tasks.\",\r\n \"type\": \"local\",\r\n \"systemDefined\": true,\r\n \"userIds\": [\r\n \"Administrator\"\r\n ]\r\n },\r\n {\r\n \"id\": \"API-Gateway-Administrators\",\r\n \"name\": \"API-Gateway-Administrators\",\r\n \"description\": \"Users added to this group can perform similar API Gateway Administrative tasks.\",\r\n \"type\": \"local\",\r\n \"systemDefined\": true,\r\n \"userIds\": [\r\n \"Administrator\"\r\n ]\r\n },\r\n {\r\n \"id\": \"API-Gateway-Providers\",\r\n \"name\": \"API-Gateway-Providers\",\r\n \"description\": \"Users added to this group can perform similar API Gateway Providers tasks.\",\r\n \"type\": \"local\",\r\n \"systemDefined\": true,\r\n \"userIds\": []\r\n },\r\n {\r\n \"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n \"name\": \"TestGrp\",\r\n \"description\": \"\",\r\n \"type\": \"local\",\r\n \"systemDefined\": false,\r\n \"userIds\": [\r\n \"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "The method creates a group in API Gateway. The API request body must contain the payload for the group.", + "operationId" : "createGroup", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "This parameter describes the request payload of a group that is to be created in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/Group" + }, + "x-examples" : { + "application/json" : "{\r\n\t \"name\": \"TestGrp\",\r\n\t\"description\": \"Group has all QA Members\",\r\n\t\"userIds\": [\r\n\t\t\"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n\t]\r\n}" + } + } ], + "responses" : { + "201" : { + "description" : "This status code indicates that the group has been successfully created in API Gateway, and the newly created group is available in the response body.", + "schema" : { + "$ref" : "#/definitions/Group" + }, + "examples" : { + "application/json" : "{\r\n\t\"id\": \"be9147a8-6e53-4472-b1bd-16337a84d314\",\r\n\t\"name\": \"TestGrp\",\r\n\t\"description\": \"Group has all QA Members\",\r\n\t\"type\": \"local\",\r\n\t\"userIds\": [\r\n\t\t\"69aa914e-fbfc-4c74-87f1-2d48f589e115\"\r\n\t]\r\n}" + } + }, + "400" : { + "description" : "This status code indicates that a group with the given name already exists in API Gateway or the request body is not correct." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/authenticate" : { + "post" : { + "description" : "This HTTP request authenticates an User in API Gateway.", + "operationId" : "authorizeUser", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "This parameter describes the request payload of a user that is to be created in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/User" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the user was successfully authenticated.", + "schema" : { + "$ref" : "#/definitions/User" + } + }, + "400" : { + "description" : "This status code indicates that the request payload is not correct or User is already exists" + }, + "401" : { + "description" : "This status code indicates that authorization has been refused for this HTTP request. This is possibly because, the user has not specified the required credentials (username and password), or has specified invalid credentials." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/installedLanguages" : { + "get" : { + "description" : "The method retrieves list of installed language packs in API Gateway.", + "operationId" : "getInstalledLanguages", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This status code indicates that the list of installed language packs is successfully retrieved.", + "schema" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "examples" : { + "application/json" : "{\r\n \"installedLanguages\": [\r\n \"ja\"\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/accessProfiles/{accessProfileId}" : { + "get" : { + "description" : "The method retrieves the details of an access profile in API Gateway.", + "operationId" : "getAccessProfile", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "accessProfileId", + "in" : "path", + "description" : "The path parameter specifies the id of an access profile whose details are to be retrieved.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the details of the access profile is successfully retrieved.", + "schema" : { + "$ref" : "#/definitions/AccessProfile" + }, + "examples" : { + "application/json" : "{\r\n \"accessProfiles\": [\r\n {\r\n \"id\": \"8b6f2e10-1d82-4813-b927-4c1cf4a4d029\",\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"systemDefined\": false,\r\n \"privilege\": \"1011100000011000001\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that an access profile with the given id could not be found in API Gateway.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" AccessProfile with id: 15fbeeb2-745c-4988-b7b6-61f359ecbfc8 does not exist.\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "The method updates the details of a specified access profile in API Gateway. The API request body must contain the payload for the updated accessProfile.", + "operationId" : "updateAccessProfile", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "This parameter describes the request payload of a accessProfile that is to be updated in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/AccessProfile" + }, + "x-examples" : { + "application/json" : "{\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"privilege\": \"1011100000011000001\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ]\r\n }" + } + }, { + "name" : "accessProfileId", + "in" : "path", + "description" : "The path parameter specifies the id of an access profile whose detail is to be updated in API Gateway.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the access profile has been successfully updated in API Gateway, and the updated access profile is available in the response body.", + "schema" : { + "$ref" : "#/definitions/AccessProfile" + }, + "examples" : { + "application/json" : "{\r\n \"id\": \"8b6f2e10-1d82-4813-b927-4c1cf4a4d029\",\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"privilege\": \"1011100000011000001\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ]\r\n }" + } + }, + "400" : { + "description" : "This status code indicates that the request body is invalid." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "delete" : { + "description" : "The method deletes an access profile from API Gateway.", + "operationId" : "deleteAccessProfile", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "accessProfileId", + "in" : "path", + "description" : "This parameter specifies the ID of an application that is to be deleted in API Gateway.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + }, + "204" : { + "description" : "This status code indicates that the specified access profile has been successfully deleted from API Gateway." + }, + "404" : { + "description" : "This status code indicates that access profile with the given id could not be found in API Gateway.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" AccessProfile with id: 732c4526-db9a-4ef9-9782-edda1a6aa9bc does not exist.\"\r\n}" + } + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/accessProfiles" : { + "get" : { + "description" : "The method retrieves list of all access profiles in API Gateway.", + "operationId" : "getAccessProfilesFromIC", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This status code indicates that the list of access profiles is successfully retrieved.", + "schema" : { + "$ref" : "#/definitions/AccessProfile" + }, + "examples" : { + "application/json" : "{\r\n \"accessProfiles\": [\r\n {\r\n \"id\": \"Administrators\",\r\n \"name\": \"Administrators\",\r\n \"description\": \"Groups associated to this access profile are allowed to perform all the administration related tasks. \",\r\n \"systemDefined\": true,\r\n \"privilege\": \"1111111111111111111111111111111111111111111111111111111111111111\",\r\n \"groupIds\": [\r\n \"Administrators\",\r\n \"API-Gateway-Administrators\"\r\n ]\r\n },\r\n {\r\n \"id\": \"API-Gateway-Providers\",\r\n \"name\": \"API-Gateway-Providers\",\r\n \"description\": \"Groups associated to this access profile are allowed to access an asset based on the functional privileges assigned to this access profile.\",\r\n \"systemDefined\": true,\r\n \"privilege\": \"111100101101100000001\",\r\n \"groupIds\": [\r\n \"API-Gateway-Providers\"\r\n ]\r\n },\r\n {\r\n \"id\": \"8b6f2e10-1d82-4813-b927-4c1cf4a4d029\",\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"systemDefined\": false,\r\n \"privilege\": \"101110000001100000110101\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "The method creates an access profile in API Gateway. The API request body must contain the payload for the access profile. Each bit infers the applicability of the functional privilege permission. Value 1 implies permission granted for that functional privilege. Value 0 implies denied permission. Function Privileges and its positions from left most bit to the right most bit. 1.Manage APIs2.Activate / Deactivate APIs3.Manage applications4.Manage aliases5.Manage global policies6.Activate / Deactivate global policies7.Manage policy templates8.Manage threat protection configurations9.Manage packages and plans10.Activate / Deactivate packages11.Publish to API Portal12.Import assets13.Export assets14.View administration configurations15.Manage general administration configurations16.Manage security configurations17.Manage destination configurations18.Manage system settings19.Manage user administration20.Manage purge and restore runtime events21.Execute service result cache APIs22.Manage Promotion23.Publish API to Service Registry24.Manage Service Registries", + "operationId" : "createAccessProfile", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "This parameter describes the request payload of a accessProfile that is to be created in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/AccessProfile" + }, + "x-examples" : { + "application/json" : "{\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"privilege\": \"101110000001100000110101\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ]\r\n }" + } + } ], + "responses" : { + "201" : { + "description" : "This status code indicates that the access profile has been successfully created in API Gateway, and the newly created access profile is available in the response body.", + "schema" : { + "$ref" : "#/definitions/AccessProfile" + }, + "examples" : { + "application/json" : "{\r\n \"id\": \"8b6f2e10-1d82-4813-b927-4c1cf4a4d029\",\r\n \"name\": \"TestProfile\",\r\n \"description\": \"Test\",\r\n \"privilege\": \"101110000001100000110101\",\r\n \"groupIds\": [\r\n \"be9147a8-6e53-4472-b1bd-16337a84d314\"\r\n ]\r\n }" + } + }, + "400" : { + "description" : "This status code indicates that an access profile with the given name already exists in API Gateway or the request body is not correct." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/is/lockedAccounts" : { + "get" : { + "description" : "Retrieves the locked accounts in API Gateway", + "operationId" : "getLockedAccounts", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "", + "schema" : { + "$ref" : "#/definitions/LockedAccounts" + }, + "examples" : { + "application/json" : "{\r\n\t\"lockedAccounts\":[\"a\",\"b\"]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "Unlock user account(s) locked by API Gateway", + "operationId" : "unLockUserAccounts", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "", + "required" : true, + "schema" : { + "$ref" : "#/definitions/UnlockAccountsRequest" + }, + "x-examples" : { + "application/json" : "{\r\n\t\"unLockAccounts\": { \r\n\t\t\"userName\": [\"c\"]\r\n\t}\r\n}" + } + } ], + "responses" : { + "200" : { + "description" : "", + "schema" : { + "$ref" : "#/definitions/LockedAccounts" + }, + "examples" : { + "application/json" : "{\r\n\t\"lockedAccounts\":[\"a\",\"b\"]\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/users" : { + "get" : { + "description" : "The method retrieves list of all users in API Gateway.", + "operationId" : "getUsers", + "produces" : [ "application/json" ], + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "This status code indicates that the list of users is successfully retrieved.", + "schema" : { + "$ref" : "#/definitions/User" + }, + "examples" : { + "application/json" : "{\r\n \"users\": [\r\n {\r\n \"id\": \"Administrator\",\r\n \"loginId\": \"Administrator\",\r\n \"firstName\": \"Administrator\",\r\n \"password\": \"********************************\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"active\": true,\r\n \"systemDefined\": true,\r\n \"language\": \"en\",\r\n \"emailAddresses\": []\r\n },\r\n {\r\n \"id\": \"15fbeeb2-745c-4988-b7b6-61f359ecbfc8\",\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"********************************\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"active\": true,\r\n \"systemDefined\": false,\r\n \"language\": \"ja\",\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }\r\n ]\r\n}\r\n" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "post" : { + "description" : "The method creates an user in API Gateway. The API request body must contain the payload for the user.", + "operationId" : "createUser", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "This parameter describes the request payload of a user that is to be created in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/User" + }, + "x-examples" : { + "application/json" : "{\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"test\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"language\": \"en\",\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }" + } + } ], + "responses" : { + "201" : { + "description" : "This status code indicates that the user has been successfully created in API Gateway, and the newly created user is available in the response body.", + "schema" : { + "$ref" : "#/definitions/User" + }, + "examples" : { + "application/json" : "{\r\n \"id\": \"15fbeeb2-745c-4988-b7b6-61f359ecbfc8\",\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"********************************\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"active\": true,\r\n \"language\": \"en\",\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }" + } + }, + "400" : { + "description" : "This status code indicates that an user with the given loginId already exists in API Gateway or the request body is not correct." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/users/authenticate" : { + "post" : { + "description" : "This HTTP request authenticates an User in API Gateway.", + "operationId" : "authorizeUser", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "This parameter describes the request payload of a user that is to be created in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/User" + } + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the user was successfully authenticated.", + "schema" : { + "$ref" : "#/definitions/User" + } + }, + "400" : { + "description" : "This status code indicates that the request payload is not correct or User is already exists" + }, + "401" : { + "description" : "This status code indicates that authorization has been refused for this HTTP request. This is possibly because, the user has not specified the required credentials (username and password), or has specified invalid credentials." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + }, + "/users/{userId}" : { + "get" : { + "description" : "The method retrieves the details of an user in API Gateway.", + "operationId" : "getUser", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "userId", + "in" : "path", + "description" : "The path parameter specifies the id of an user whose details are to be retrieved.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the details of the user is successfully retrieved.", + "schema" : { + "$ref" : "#/definitions/User" + }, + "examples" : { + "application/json" : "{\r\n \"users\": [\r\n {\r\n \"id\": \"15fbeeb2-745c-4988-b7b6-61f359ecbfc8\",\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"********************************\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"active\": true,\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }\r\n ]\r\n}" + } + }, + "404" : { + "description" : "This status code indicates that an user with the given id could not be found in API Gateway.", + "examples" : { + "application/json" : "{\r\n \"errorDetails\": \" User with id: 15fbeeb2-745c-4988-b7b6-61f359ecbfc8 does not exist.\"\r\n}" + } + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + }, + "put" : { + "description" : "The method updates the details of a specified user in API Gateway. The API request body must contain the payload for the updated user.", + "operationId" : "updateUser", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "description" : "This parameter describes the request payload of a user that is to be updated in API Gateway.", + "required" : true, + "schema" : { + "$ref" : "#/definitions/User" + }, + "x-examples" : { + "application/json" : "{\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"test\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }" + } + }, { + "name" : "userId", + "in" : "path", + "description" : "The path parameter specifies the id of an user whose detail is to be updated in API Gateway.", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "This status code indicates that the user has been successfully updated in API Gateway, and the updated user is available in the response body.", + "schema" : { + "$ref" : "#/definitions/User" + }, + "examples" : { + "application/json" : "{\r\n \"id\": \"15fbeeb2-745c-4988-b7b6-61f359ecbfc8\",\r\n \"loginId\": \"testUser\",\r\n \"firstName\": \"User\",\r\n \"lastName\": \"Test\",\r\n \"password\": \"test\",\r\n \"type\": \"local\",\r\n \"allowDigestAuth\": false,\r\n \"emailAddresses\": [\r\n \"noreply@softwareag.com\"\r\n ]\r\n }" + } + }, + "400" : { + "description" : "This status code indicates that the request body is invalid." + }, + "401" : { + "description" : "This status code indicates that either user didn't provide right credentials or user doesn't have required privileges to access this API." + } + }, + "security" : [ { + "Basic" : [ ] + } ] + } + } + }, + "securityDefinitions" : { + "Basic" : { + "description" : "API Gateway Administrator and API Gateway provider", + "type" : "basic" + } + }, + "definitions" : { + "Group" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "Group ID", + "readOnly" : true + }, + "name" : { + "type" : "string", + "description" : "name of the group" + }, + "description" : { + "type" : "string", + "description" : "description of the group" + }, + "userIds" : { + "type" : "array", + "description" : "list of user's Ids assigned to the group", + "items" : { + "type" : "string" + } + } + }, + "description" : "This model contains details about a group in API Gateway" + }, + "User" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "unique identifier of a user", + "readOnly" : true + }, + "loginId" : { + "type" : "string", + "description" : "login name" + }, + "firstName" : { + "type" : "string", + "description" : "first name of the user" + }, + "lastName" : { + "type" : "string", + "description" : "last name of the user" + }, + "emailAddresses" : { + "type" : "array", + "description" : "list of email addresses of the user", + "items" : { + "type" : "string" + } + }, + "allowDigestAuth" : { + "type" : "boolean", + "description" : "list of email addresses of the user" + }, + "active" : { + "type" : "boolean", + "description" : "active status of the user" + }, + "language" : { + "type" : "string", + "description" : "preferred language of the user" + } + }, + "description" : "This model contains details about an User in API Gateway" + }, + "AccessProfile" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "description" : "AccessProfile ID", + "readOnly" : true + }, + "name" : { + "type" : "string", + "description" : "name of the accessprofile" + }, + "description" : { + "type" : "string", + "description" : "description of the accessprofile" + }, + "privilege" : { + "description" : "functional privileges assigned to the accessprofile", + "$ref" : "#/definitions/BitSet" + }, + "userIds" : { + "type" : "array", + "description" : "list of groupIds assigned to the accessprofile", + "items" : { + "type" : "string" + } + } + }, + "description" : "This model contains details about an Access Profile in API Gateway" + }, + "BitSet" : { + "type" : "object", + "properties" : { + "empty" : { + "type" : "boolean" + } + } + }, + "UnlockAccounts" : { + "type" : "object", + "properties" : { + "userName" : { + "type" : "array", + "description" : "Username that needs to be unlocked.", + "items" : { + "type" : "string" + } + } + } + }, + "UnlockAccountsRequest" : { + "type" : "object", + "properties" : { + "unLockAccounts" : { + "description" : "Specifies the accounts to be unlocked.", + "$ref" : "#/definitions/UnlockAccounts" + } + } + }, + "LockedAccounts" : { + "type" : "object", + "properties" : { + "lockedAccounts" : { + "type" : "array", + "description" : "Comma separated list of user accounts which are locked.", + "items" : { + "type" : "string" + } + } + } + } + } } \ No newline at end of file diff --git a/apigatewayservices/README.md b/apigatewayservices/README.md index 2c19e1a..3053931 100644 --- a/apigatewayservices/README.md +++ b/apigatewayservices/README.md @@ -12,7 +12,6 @@ Below are the list of swagger files for each of the components available in API - APIGatewayPromotionManagement.json - APIGatewayPublicServices.json - APIGatewaySearch.json - - APIGatewayServerInfoSwagger.json - APIGatewayServiceManagement.json - APIGatewayTransactionalEvent.json - APIGatewayUserManagementSwagger.json diff --git a/attachments/651659260/apimgmt.png b/attachments/651659260/apimgmt.png new file mode 100644 index 0000000..f1ff478 Binary files /dev/null and b/attachments/651659260/apimgmt.png differ diff --git a/docs/articles/features/README.md b/docs/articles/features/README.md index 062fc37..334d273 100644 --- a/docs/articles/features/README.md +++ b/docs/articles/features/README.md @@ -16,7 +16,7 @@ API Mocking is nothing but the imitation of real API. It simulates the behavior SOAP to REST Transformation --------------------------- -SOAP web services are commonly used to expose data within enterprises. With the rapid adoption of the REST APIs, it is now a necessity for API providers to have the ability to provide RESTful interfaces to their existing SOAP web services instead of creating new REST APIs. Using the API Gateway SOAP to REST transformation feature, the API provider can either expose the parts of the SOAP API or expose the complete SOAP API with RESTful interface. API Gateway allows you to customize the way the SOAP operations are exposed as REST resources. Additionally, the Swagger or RAML definitions can be generated for these REST interfaces. **[Read on...](http://techcommunity.softwareag.com/pwiki/-/wiki/Main/SOAP%20to%20REST%20Transformation)** +SOAP web services are commonly used to expose data within enterprises. With the rapid adoption of the REST APIs, it is now a necessity for API providers to have the ability to provide RESTful interfaces to their existing SOAP web services instead of creating new REST APIs. Using the API Gateway SOAP to REST transformation feature, the API provider can either expose the parts of the SOAP API or expose the complete SOAP API with RESTful interface. API Gateway allows you to customize the way the SOAP operations are exposed as REST resources. Additionally, the Swagger or RAML definitions can be generated for these REST interfaces. **[Read on...](https://tech.forums.softwareag.com/t/soap-to-rest-transformation/236956)** Teams in API Gateway -------------------- diff --git a/samples/docker/README.md b/samples/docker/README.md deleted file mode 100644 index ae68cdf..0000000 --- a/samples/docker/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# Docker -Docker is an open-source technology that allows users to deploy applications to software containers. A Docker container is an instance of a Docker image, where the Docker image is the application, -including the file system and runtime parameters. - -You can create a Docker image from an installed and configured API Gateway instance and then run the Docker image as a Docker container. To facilitate running API Gateway in a Docker -container, API Gateway provides a script to use to build a Docker image and then load or push the resulting Docker image to a Docker registry. - -Support for API Gateway with Docker 18 and later is available on Linux and UNIX systems for which Docker provides native support. - -For details on Docker and container technology, see [Docker documentation](https://docs.docker.com) - -## Docker security - -Docker, by default, has introduced a number of security updates and features, which have made Docker easier to use in an enterprise. There are certain guidelines or best practices that apply to the following layers of the Docker technology stack, that an organization can look at: -* Docker image and registry configuration -* Docker container runtime configuration -* Host configuration - -For detailed guidelines on security best practices, see the official Docker Security documentation at https://docs.docker.com/engine/security/security/. - -Docker has also developed Docker Bench, a script that can test containers and their hosts' security configurations against a set of best practices provided by the Center for Internet Security. For details, see https://github.com/docker/docker-bench-security. - -For details on how to establish a secure configuration baseline for the Docker Engine, see [Center for Information Security (CIS) Docker Benchmark](https://www.cisecurity.org/benchmark/docker/) (Docker CE 17.06). - -For information on the potential security concerns associated with the use of containers and -recommendations for addressing these concerns, see [NIST SP 800](https://csrc.nist.gov/publications/sp800) publication (Application Container Security Guide) - -## API Gateway Docker Images -The API Gateway Docker image provides an API Gateway installation. Depending on the existing installation the image provides a standard API Gateway or an advanced API Gateway. When running the image the API Gateway is started. The API Gateway image is created on top of an Integration Server image. - -### Prerequisites for Building a Docker Image -Prior to building a Docker image for API Gateway, you must complete the following: -* Install Docker client on the machine on which you are going to install API Gateway and start Docker as a daemon. The Docker client should have connectivity to Docker server to create images. -* Install API Gateway, packages, and fixes on a Linux or UNIX system and then configure API Gateway and the hosted products. - -### Building an API Gateway Docker Image -To build a Docker image for an API Gateway instance, follow the below steps. Refer API Gateway Configuration Guide document for more information about how to provide the optional arguments. - -1. Go to the /IntegrationServer/docker directory - - ``` cd IntegrationServer/docker ``` - -2. Create a docker file for the Integration Server (IS) instance by running the following command: - - ``` ./is_container.sh createDockerfile [optional arguments] ``` - -3. Build the IS Docker image using the Docker file Dockerfile_IS by running the following command: - - ``` ./is_container.sh build [optional arguments] ``` - -4. Create a Docker file for the API Gateway instance from the IS image is:micro by running the following command: - - ``` ./apigw_container.sh createDockerfile [optional arguments] ``` - - The Docker file is created under the root Integration Server installation directory. - -5. Build the API Gateway Docker image using the core Docker file Dockerfile_IS_APIGW by running the following command: - - ``` ./apigw_container.sh build [optional arguments] ``` - - -The image is stored on the Docker host. To check the image run the command - -` $ docker images ` - - -The Docker images created using above steps feature the following: -* Docker logging. - - API Gateway Docker containers log to stdout and stderr. The API Gateway logs can be fetched with Docker logs - -* Docker health check - - API Gateway Docker containers perform health checks. You can use wget request against the API Gateway REST API to check the health status of API Gateway. - - Example: ``` HEALTHCHECK CMD curl http://localhost:5555/rest/apigateway/health ``` - -* Graceful shutdown. - - Docker stop issues a SIGTERM to the running API Gateway. - -## Running the API Gateway Container -Start the API Gateway image using the docker run command: - -``` docker run -d -p 5555:5555 -p 9072:9072 -name apigw is:apigw ``` - -The docker run is parameterized with the IS and the webApp port exposed by the Docker container. Follow the below section "Retrieving Port Information of the API Gateway Image" to get the port information from the API Gateway image. - -The status of the Docker container can be determined by running the docker ps command: - -``` docker ps ``` - -### Retrieving Port Information of the API Gateway Image -To retrieve the port information of the API Gateway image (is:apigw), run the following command: - -``` docker inspect --format='{{range $p, $conf := .Config.ExposedPorts}} {{$p}} {{end}}' is:apigw ``` - -A sample output looks as follows: - -``` 5555/tcp 9072/tcp 9999/tcp ``` - -### Stopping the API Gateway Container -Stop the API Gateway container using the docker stop command: - -``` docker stop -t90 apigw ``` - -The docker stop is parameterized with the number of seconds required for a graceful shutdown of the API Gateway and the API Gateway Docker container name. - -**Note**: The docker stop does not destroy the state of the API Gateway. On restarting the Docker container all assets that have been created or configured are available again. - - -### Managing API Gateway Images -You can manage the API Gateway images using the `is_container.sh` script -* `saveImage` : To save an API Gateway image to a file (creating a tar ball from an image) -* `loadImage` : To load an image to a Docker registry (loading an image into a Docker registry from tar ball) diff --git a/samples/docker/deploymentscripts/.env b/samples/docker/deploymentscripts/.env deleted file mode 100644 index 1a26cf2..0000000 --- a/samples/docker/deploymentscripts/.env +++ /dev/null @@ -1,3 +0,0 @@ -APIGW_DOCKER_IMAGE_NAME=is:apigw -TERRACOTTA_DOCKER_IMAGE_NAME=is:tc -KIBANA_DOCKER_IMAGE_NAME=sag:kibana \ No newline at end of file diff --git a/samples/docker/deploymentscripts/README.md b/samples/docker/deploymentscripts/README.md deleted file mode 100644 index 12c11e2..0000000 --- a/samples/docker/deploymentscripts/README.md +++ /dev/null @@ -1,163 +0,0 @@ -# API Gateway Docker deployment scenarios - -Let us see some of the API Gateway Docker deployment scenarios below. - -## API Gateway Docker Container with Externalized Elasticsearch and Kibana -The best practices for Docker container specify having a single process per container. This allows to control the components of an API Gateway container and enables horizontal scaling. A full split results into three separate containers, one each for API Gateway, Elasticsearch and Kibana. Since Kibana is not scaled independently it can be included into the API Gateway container. - -### API Gateway Container with an Externalized Elasticsearch -The following figure depicts an API Gateway container with an externalized Elasticsearch where Kibana is included in the API Gateway container. - -![APIGateway_and_externalES.png](images/APIGateway_and_externalES.png) - -Do the following to set up API Gateway container with an external Elasticsearch: -1. **Run the external Elasticsearch.** - - You can start Elasticsearch container by using the Elasticsearch Docker image available on docker hub. The Elasticsearch version should be the same as used in API Gateway - - ``` docker run -p 9200:9240 -p 9300:9340 -e "xpack.security.enabled=false" -v es-data:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch:5.6.4``` - - Use the option `-e xpack.security.enabled=false` to disable basic authentication for Elasticsearch. This is the default option available in API Gateway. - - Use the volume mapping `-v es-data:/usr/share/elasticsearch/data` to persist the Elasticsearch data outside the Docker container. - -2. **Build API Gateway Docker image without Elasticsearch.** - - To create a Docker file or image for an API Gateway that does not contain Elasticsearch the `apigw_container.sh createDockerFile` and `apigw_container.sh build` command offer the following option: - - ```--extern.ES``` - - Setting the flag ensures that the InternalDataStore is not added to the Docker image created by the generated Docker file. - -3. **Run API Gateway Docker container.** - - Elasticsearch configuration can be injected into an existing API Gateway image during container startup. For example, let's take an existing API Gateway image `sag:apigw` - - ```docker run -d -p 5555:5555 -p 9072:9072 --env-file apigw-env.list --hostname apigw --name apigw sag:apigw``` - - The `apigw-env.list` in the above command contains the environment variables required for configuring an external Elasticsearch and External Kibana: - - ``` - apigw_elasticsearch_hosts=host:port - apigw_elasticsearch_https_enabled=("true" or "false") - apigw_elasticsearch_http_username=user - apigw_elasticsearch_http_password=password - ``` - - Instead of using the env file to change the environment variables, you can set them using -e options in the Docker run. For setting the Elasticsearch host the Docker run command looks as follows: - - ```docker run -d -p 5555:5555 -p 9072:9072 \ -e apigw_elasticsearch_hosts=testhost1:9200 \ --hostname apigw \ --name apigw sag:apigw``` - -### API Gateway Container with an External Elasticsearch and External Kibana - -The following figure depicts an API Gateway container with external Elasticsearch and external Kibana containers. - -![APIGateway_externalES_and_externalKibana.png](images/APIGateway_externalES_and_externalKibana.png) - -Do the following to set up API Gateway container with an external Elasticsearch and external Kibana: - -1. **Run the external Elasticsearch.** - - You can start Elasticsearch container by using the Elasticsearch Docker image available on docker hub. The Elasticsearch version should be the same as used in API Gateway - - ``` docker run -p 9200:9240 -p 9300:9340 -e "xpack.security.enabled=false" -v es-data:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch:5.6.4``` - - For more information on `-e xpack.security.enabled=false` and `-v es-data:/usr/share/elasticsearch/data` refer previous section. - -2. **Run the external Kibana** - - If you have modified the original Kibana, for example by adding a style sheet file, or modified the kibana.yml file, as per your requirements, then this customization of Kibana is bundled with API Gateway. This customized Kibana is provided under the directory: profiles/IS_default/apigateway/dashboard. To achieve this, create and run a Docker image based on the customization. This can be achieved by a Docker file as follows: - - ``` - FROM centos:7 - COPY /opt/softwareag/profiles/IS_default/apigateway/dashboard /opt/softwareag/kibana - EXPOSE 9405 - RUN chmod 777 /opt/softwareag/kibana/bin/kibana - CMD /opt/softwareag/kibana/bin/kibana - ``` - - Build and run the Docker file as follows: - - ``` - docker build -t sagkibana . - docker run -p 9405:9405 sagkibana - ``` - -3. **Run API Gateway Docker container** - - To run a Docker image for an API Gateway running against an external Kibana the Docker run can be called with the following environment variable which can be used with the -e option or using the env file (discussed in previous examples) - - ```apigw_kibana_dashboardInstance=instance``` - -## API Gateway Container Cluster Configuration - -You can combine API Gateway Docker containers to form a cluster. To configure an API Gateway Docker container cluster: - -1. **Configure loadbalancer on the Docker host.** - -2. **Configure Terracotta Server Array.** - API Gateway requires a Terracotta Server Array installation. For details, see Terracotta documentation (https://www.terracotta.org/). The Terracotta Server Array on its own can be deployed as a Docker container. - -3. **Create the basic API Gateway Docker image.** -For details on creating the API Gateway Docker image, see [API Gateway Docker Images](../#api-gateway-docker-images) - -4. **Create cluster API Gateway Docker image and enhance it with the cluster configuration in one of the following ways:** - - * Clustered all-in-one containers that consist of API Gateway, Elasticsearch, and Kibana. - - * Clustered API Gateway containers with externalized Elasticsearch and Kibana containers. - -### Clustered all-in-one Containers that consist of API Gateway, Kibana and Elasticsearch -Although API Gateway clusters with externalized Elasticsearch is the preferred approach API Gateway all-in-one containers can also be clustered. - -`Note: Having external Kibana is an optional variation.` - -The following diagram depicts clustering based on all-in-one containers. - -![APIGateway_cluster.png](images/APIGateway_cluster.png) - -The all-in-one containers hold API Gateway, Kibana and Elasticsearch. The clustering is done through a Terracotta Server Array and the cluster capabilities of the embedded Elasticsearch instances. - -The required settings for the cluster configuration can be injected during Docker run through an environment file. A sample environment file looks as follows. - -``` -apigw_cluster_tsaUrls=tc:9510 -apigw_terracotta_license_filename=terracotta-license.key -apigw_discovery_zen_ping_unicast_hosts=apigw1:9340,apigw2:9340,apigw3:9340 -``` - -### Clustered API Gateway Containers with externalized Elasticsearch and Kibana containers - -The API Gateway containers are clustered. They are talking to a clustered Terracotta Server Array container and to a cluster of Elasticsearch container through a loadbalancer. The Elasticsearch loadbalancer is also providing the Elasticsearch endpoint for the Kibana containers - -`Note: The externalized Kibana is optional. You can still run Kibana within the API Gateway container.` - -The following diagram depicts clustering API Gateway containers with externalized Elasticsearch and Kibana containers - -![APIGateway_cluster.png](images/APIGateway_cluster_and_externalES.png) - -To cluster the API Gateway with external containers for Elasticsearch, Kibana, and Terracotta Server Array, the settings can be injected into an API Gateway Docker image by providing an environment file. The environment file needs to define the following environment variables. - -``` -apigw_cluster_tsaUrls=host:port -apigw_terracotta_license_filename=license-key-filename -apigw_elasticsearch_hosts=host:port -apigw_elasticsearch_http_username=user -apigw_elasticsearch_http_password=password -apigw_kibana_dashboardInstance=instance -``` - -# Running API Gateway Docker Containers with Docker Compose - -You can run API Gateway Docker containers and use Docker Compose's ability to allow you to define and run multi-container Docker applications in your deployment environment. The API Gateway installation provides sample Docker Compose files in the folder given below. - -`SAG_Root/IntegrationServer/instances/default/packages/WmAPIGateway/resources/samples/docker-compose` - -The API Gateway installation provides the following three sample Docker Compose files: -* apigw-elasticsearch-no-cluster.yml : An API Gateway instance with an Elasticsearch containter. - -* apigw-elasticsearch-cluster.yml : An API Gateway cluster with three API Gateway containers, three clustered Elasticsearch containers and a Terracotta container. - -* apigw-elasticsearch-cluster-kibana.yml : Containers of an API Gateway cluster and a Kibana container. - -The Docker Compose files can be parameterized through environment variables. diff --git a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/README.md b/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/README.md deleted file mode 100644 index f81de65..0000000 --- a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# Running Clustered API Gateway and Elasticsearch Containers and a Kibana Container - -In this deployment scenario you can use the sample Docker Compose file apigw-elasticsearch-cluster-kibana.yml. - -The figure depicts clustered API Gateway containers. They are talking to a clustered Terracotta Server Array container, a cluster of Elasticsearch container and an external Kibana. - -![APIGateway_cluster_and_externalES_externalKibana.png](../images/3.%20APIGateway_cluster_and_externalES_externalKibana.png) - -To run clustered API Gateway and Elasticsearch containers, and a Kibana container, follow the belowing steps. - -1. Set the environment variables to define the API Gateway, Terracotta, and the Kibana image as follows: - - ``` - export APIGW_DOCKER_IMAGE_NAME=image name or filepath location of an existing image - export TERRACOTTA_DOCKER_IMAGE_NAME=terracotta image name - export KIBANA_DOCKER_IMAGE_NAME=kibana image name - ``` - - The composite file requires an API Gateway Docker image. You can create the referenced image through API Gateway scripting. For details on creating a Docker image, see [API Gateway Docker Images](../../#api-gateway-docker-images). - - You can create the Terracotta image as follows: - - ``` - cd /opt/softwareag - docker build --file Terracotta/docker/images/server/Dockerfile –tag is:tc - ``` - - Specify the API Gateway image by changing the .env file. API Gateway uses the .env file when the working directory is .../samples/docker-compose, else you must specify the environment variables. - - API Gateway requires a customized Kibana image. The Docker file for creating the Kibana image is as follows: - ``` - FROM centos:7 - COPY /opt/softwareag/profiles/IS_default/apigateway/dashboard /opt/softwareag/kibana - EXPOSE 9405 - RUN chmod 777 /opt/softwareag/kibana/bin/kibana - CMD /opt/softwareag/kibana/bin/kibana - ``` - -2. Run the following command to start the API Gateway Docker container and the Elasticsearch container using the Docker Compose sample file: - - ``` - cd SAG-Root/IntegrationServer/instances/default/packages/WmAPIGateway/resources/samples/docker-compose - docker-compose -f apigw-elasticsearch-cluster-kibana.yml up - ``` - - In the Docker Compose sample file apigw-elasticsearch-cluster-kibana.yml ensure that you have specified the required information such as image name, name and port of the Elasticsearch host, server port, UI port, and Kibana dashboard instance details. This creates and starts the containers. Run the `docker ps` command to view the details of the containers created. - - To run it in the detached mode, append -d in the docker-compose command. - - ``` - Note: You can stop the API Gateway Docker container and the Elasticsearch container using the - docker-compose sample file with the following command: - docker-compose -f apigw-elasticsearch-cluster-kibana.yml down - ``` diff --git a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/apigw-elasticsearch-cluster-kibana.yml b/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/apigw-elasticsearch-cluster-kibana.yml deleted file mode 100644 index 8a2f1fc..0000000 --- a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/apigw-elasticsearch-cluster-kibana.yml +++ /dev/null @@ -1,134 +0,0 @@ -# This docker-compose file is an example for a setup with an API Gateway cluster with three containers, an Elasticsearch cluster with three containers, an external Kibana container and a Terracotta container. -# The Kibana image needs to be a modified version. See the API Gateway configuration guide how to create one. -# The image names of API Gateway, Terracotta and Kibana can be altered by modifying the .env file when the file is in the working directory or by setting the environment variable APIGW_DOCKER_IMAGE_NAME, TERRACOTTA_DOCKER_IMAGE_NAME and KIBANA_DOCKER_IMAGE_NAME. -# To use this file run: docker-compose -f apigw-elasticsearch-cluster-kibana.yml up -# Append -d to run it in detached mode. -# To stop and remove containers, networks, volumes and images created by up, run: docker-compose -f apigw-elasticsearch-cluster-kibana.yml down -version: '3.5' -services: - terracotta: - # Image name - image: ${TERRACOTTA_DOCKER_IMAGE_NAME} - # Container name - container_name: terracotta - # Setting for exposing ports to the outside (external port:internal port). - ports: - - 9510:9510 - # Needs to be the same network for all containers. - networks: - - api-gateway-network - apigateway1: - image: ${APIGW_DOCKER_IMAGE_NAME} - container_name: api-gateway-01 - environment: - # Name and port of the Terracotta container. - - apigw_cluster_tsaUrls=terracotta:9510 - # License file name for Terracotta. - - apigw_terracotta_license_filename=terracotta-license.key - # Name and port of the REST interface of an Elasticsearch container - # Or a loadbalancer which directs to the REST interace of the Elasticsearch containers. - - apigw_elasticsearch_hosts=elasticsearch:9200 - # HTTPS enablement. - - apigw_elasticsearch_https_enabled=false - # Username and password for Elasticsearch. As standard leave it blank. - - apigw_elasticsearch_http_username= - - apigw_elasticsearch_http_password= - # Name and port of the Kibana container. - - apigw_kibana_dashboardInstance=http://kibana:9405 - ports: - # Server port - - 5555:5555 - # UI port - - 9072:9072 - networks: - - api-gateway-network - apigateway2: - image: ${APIGW_DOCKER_IMAGE_NAME} - container_name: api-gateway-02 - environment: - - apigw_cluster_tsaUrls=terracotta:9510 - - apigw_terracotta_license_filename=terracotta-license.key - - apigw_elasticsearch_hosts=elasticsearch:9200 - - apigw_elasticsearch_https_enabled=false - - apigw_elasticsearch_http_username= - - apigw_elasticsearch_http_password= - - apigw_kibana_dashboardInstance=http://kibana:9405 - ports: - - 5556:5555 - - 9073:9072 - networks: - - api-gateway-network - apigateway3: - image: ${APIGW_DOCKER_IMAGE_NAME} - container_name: api-gateway-03 - environment: - - apigw_cluster_tsaUrls=terracotta:9510 - - apigw_terracotta_license_filename=terracotta-license.key - - apigw_elasticsearch_hosts=elasticsearch:9200 - - apigw_elasticsearch_https_enabled=false - - apigw_elasticsearch_http_username= - - apigw_elasticsearch_http_password= - - apigw_kibana_dashboardInstance=http://kibana:9405 - ports: - - 5557:5555 - - 9074:9072 - networks: - - api-gateway-network - elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - container_name: elasticsearch - # Elasticsearch settings - environment: - # Important when you have several Elasticsearch containers. They need to be in the same network. Should be a different name than in other environments. - - cluster.name=SAG_EventDataStore - # The node name. Used for inital master node discovery. - - node.name=elasticsearch - # For discovery of all Elasticsearch containers. - - discovery.seed_hosts=elasticsearch:9300,elasticsearch2:9300,elasticsearch3:9300 - # Used for cluster bootstrapping. The mentioned nodes are potential master nodes. - - cluster.initial_master_nodes=elasticsearch,elasticsearch2,elasticsearch3 - ports: - # REST interface - - 9240:9200 - # Nodes communication - - 9340:9300 - networks: - - api-gateway-network - elasticsearch2: - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - container_name: elasticsearch2 - environment: - - cluster.name=SAG_EventDataStore - - node.name=elasticsearch2 - - discovery.seed_hosts=elasticsearch:9300,elasticsearch2:9300,elasticsearch3:9300 - - cluster.initial_master_nodes=elasticsearch,elasticsearch2,elasticsearch3 - networks: - - api-gateway-network - elasticsearch3: - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - container_name: elasticsearch3 - environment: - - cluster.name=SAG_EventDataStore - - node.name=elasticsearch3 - - discovery.seed_hosts=elasticsearch:9300,elasticsearch2:9300,elasticsearch3:9300 - - cluster.initial_master_nodes=elasticsearch,elasticsearch2,elasticsearch3 - networks: - - api-gateway-network - kibana: - image: ${KIBANA_DOCKER_IMAGE_NAME} - container_name: kibana - volumes: - # The local kibana.yml is used instead of the one in /usr/src/sag_kibana/config/. - - ./kibana.yml:/usr/src/sag_kibana/config/kibana.yml - networks: - - api-gateway-network - # Kibana starts after Elasticsearch but doesn't wait until Elasticsearch is ready - depends_on: - - elasticsearch - ports: - - 9405:9405 - -networks: - api-gateway-network: - # For setting a specific network name. - name: api-gateway-network diff --git a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/kibana.yml b/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/kibana.yml deleted file mode 100644 index 20a109e..0000000 --- a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster-kibana/kibana.yml +++ /dev/null @@ -1,81 +0,0 @@ -# Kibana is served by a back end server. This controls which port to use. - server.port: 9405 - -# The host to bind the server to. - server.host: "0.0.0.0" - -# If you are running kibana behind a proxy, and want to mount it at a path, -# specify that path here. The basePath can't end in a slash. - server.basePath: "/apigatewayui/dashboardproxy" - -# The maximum payload size in bytes on incoming server requests. -# server.maxPayloadBytes: 1048576 - -# The Elasticsearch instance to use for all your queries. - elasticsearch.hosts: http://elasticsearch:9200 - -# preserve_elasticsearch_host true will send the hostname specified in `elasticsearch`. If you set it to false, -# then the host you use to connect to *this* Kibana instance will be sent. -# elasticsearch.preserveHost: true - -# Kibana uses an index in Elasticsearch to store saved searches, visualizations -# and dashboards. It will create a new index if it doesn't already exist. - kibana.index: "gateway_default_dashboard" - -# The default application to load. -# kibana.defaultAppId: "discover" - -# If your Elasticsearch is protected with basic auth, these are the user credentials -# used by the Kibana server to perform maintenance on the kibana_index at startup. Your Kibana -# users will still need to authenticate with Elasticsearch (which is proxied through -# the Kibana server) -# elasticsearch.username: "Administrator" -# elasticsearch.password: "manage" - -# SSL for outgoing requests from the Kibana Server to the browser (PEM formatted) -# server.ssl.cert: /path/to/your/server.crt -# server.ssl.key: /path/to/your/server.key - -# Optional setting to validate that your Elasticsearch backend uses the same key files (PEM formatted) -# elasticsearch.ssl.cert: /path/to/your/client.crt -# elasticsearch.ssl.key: /path/to/your/client.key - -# If you need to provide a CA certificate for your Elasticsearch instance, put -# the path of the pem file here. -# elasticsearch.ssl.ca: /path/to/your/CA.pem - -# Set to false to have a complete disregard for the validity of the SSL -# certificate. -# elasticsearch.ssl.verify: false - -# Time in milliseconds to wait for elasticsearch to respond to pings, defaults to -# request_timeout setting -# elasticsearch.pingTimeout: 1500 - -# Time in milliseconds to wait for responses from the back end or elasticsearch. -# This must be > 0 -# elasticsearch.requestTimeout: 30000 - -# Time in milliseconds for Elasticsearch to wait for responses from shards. -# Set to 0 to disable. -# elasticsearch.shardTimeout: 0 - -# Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying -# elasticsearch.startupTimeout: 5000 - -# Set the path to where you would like the process id file to be created. - pid.file: kibana.pid - -# If you would like to send the log output to a file you can set the path below. -# logging.dest: stdout - -# Set this to true to suppress all logging output. -# logging.silent: false - -# Set this to true to suppress all logging output except for error messages. -# logging.quiet: false - -# Set this to true to log all events, including system usage information and all requests. -# logging.verbose: false - console.enabled: false - timelion.enabled: false diff --git a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster/README.md b/samples/docker/deploymentscripts/apigw-elasticsearch-cluster/README.md deleted file mode 100644 index b6f8998..0000000 --- a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# Running Clustered API Gateway Containers and Elasticsearch Containers - -In this deployment scenario you can use the sample Docker Compose file apigw-elasticsearch-cluster.yml. - -The following diagram depicts a set-up that has clustered API Gateway containers and Elasticsearch containers. - -![APIGateway_cluster_and_externalES.png](../images/2.%20APIGateway_cluster_and_externalES.png) - -To run clustered API Gateway containers and Elasticsearch containers - -1. Set the environment variables to define image for the API Gateway Docker container and Terracotta as follows: - - ``` - export APIGW_DOCKER_IMAGE_NAME=image name or filepath location of an existing image - export TERRACOTTA_DOCKER_IMAGE_NAME=terracotta image name - ``` - - The composite file requires an API Gateway Docker image. You can create the referenced image through API Gateway scripting. For details on creating a Docker image, see [API Gateway Docker Images](../../#api-gateway-docker-images). - - You can create the Terracotta image as follows: - - ``` - cd /opt/softwareag - docker build --file Terracotta/docker/images/server/Dockerfile –tag is:tc - ``` - -Specify the API Gateway image by changing the .env file. API Gateway uses the .env file when the working directory is .../samples/docker-compose, else you must specify the environment variables. - -2. Run the following command to start Terracotta, clustered API Gateway, and Elasticsearch containers using the Docker Compose sample file: - - ```cd SAG-Root/IntegrationServer/instances/default/packages/WmAPIGateway/resources/samples/docker-compose - docker-compose -f apigw-elasticsearch-cluster.yml up - ``` - - In the Docker Compose sample file apigw-elasticsearch-cluster.yml ensure that you have specified the required information such as image name, name and port of the Elasticsearch host, server port, and UI port. This creates and starts the containers. Run the `docker ps` command to view the details of the containers created. - -To run it in the detached mode, append -d in the docker-compose command. - -``` -Note: You can stop the API Gateway Docker container and the Elasticsearch container using the Docker Compose sample file with the following command: -docker-compose -f apigw-elasticsearch-cluster.yml down -``` diff --git a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster/apigw-elasticsearch-cluster.yml b/samples/docker/deploymentscripts/apigw-elasticsearch-cluster/apigw-elasticsearch-cluster.yml deleted file mode 100644 index 228fed9..0000000 --- a/samples/docker/deploymentscripts/apigw-elasticsearch-cluster/apigw-elasticsearch-cluster.yml +++ /dev/null @@ -1,115 +0,0 @@ -# This docker-compose file is an example for a setup with an API Gateway cluster with three containers, an Elasticsearch cluster with three containers and a Terracotta container. -# The image names of API Gateway and Terracotta can be set by modifying the .env file when the file is in the working directory or by setting the environment variable APIGW_DOCKER_IMAGE_NAME and TERRACOTTA_DOCKER_IMAGE_NAME. -# To use this file run: docker-compose -f apigw-elasticsearch-cluster.yml up -# Append -d to run it in detached mode. -# To stop and remove containers, networks, volumes and images created by up run: docker-compose -f apigw-elasticsearch-cluster.yml down -version: '3.5' -services: - terracotta: - # Image name - image: ${TERRACOTTA_DOCKER_IMAGE_NAME} - # Container name - container_name: terracotta - # Setting for exposing ports to the outside (external port:internal port). - ports: - - 9510:9510 - # Needs to be the same network for all containers. - networks: - - api-gateway-network - apigateway1: - image: ${APIGW_DOCKER_IMAGE_NAME} - container_name: api-gateway-01 - environment: - # Name and port of the Terracotta container. - - apigw_cluster_tsaUrls=terracotta:9510 - # License file name for Terracotta. - - apigw_terracotta_license_filename=terracotta-license.key - # Name and port of the REST interface of an Elasticsearch container - # Or a loadbalancer which directs to the REST interace of the Elasticsearch containers. - - apigw_elasticsearch_hosts=elasticsearch:9200 - # HTTPS enablement. - - apigw_elasticsearch_https_enabled=false - # Username and password for Elasticsearch. As standard leave it blank. - - apigw_elasticsearch_http_username= - - apigw_elasticsearch_http_password= - ports: - # Server port - - 5555:5555 - # UI port - - 9072:9072 - networks: - - api-gateway-network - apigateway2: - image: ${APIGW_DOCKER_IMAGE_NAME} - container_name: api-gateway-02 - environment: - - apigw_cluster_tsaUrls=terracotta:9510 - - apigw_terracotta_license_filename=terracotta-license.key - - apigw_elasticsearch_hosts=elasticsearch:9200 - - apigw_elasticsearch_https_enabled=false - - apigw_elasticsearch_http_username= - - apigw_elasticsearch_http_password= - ports: - - 5556:5555 - - 9073:9072 - networks: - - api-gateway-network - apigateway3: - image: ${APIGW_DOCKER_IMAGE_NAME} - container_name: api-gateway-03 - environment: - - apigw_cluster_tsaUrls=terracotta:9510 - - apigw_terracotta_license_filename=terracotta-license.key - - apigw_elasticsearch_hosts=elasticsearch:9200 - - apigw_elasticsearch_https_enabled=false - - apigw_elasticsearch_http_username= - - apigw_elasticsearch_http_password= - ports: - - 5557:5555 - - 9074:9072 - networks: - - api-gateway-network - elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - container_name: elasticsearch - # Elasticsearch settings - environment: - # Important when you have several Elasticsearch containers. They need to be in the same network. Should be a different name than in other environments. - - cluster.name=SAG_EventDataStore - # The node name. Used for inital master node discovery. - - node.name=elasticsearch - # For discovery of all Elasticsearch containers. - - discovery.seed_hosts=elasticsearch:9300,elasticsearch2:9300,elasticsearch3:9300 - # Used for cluster bootstrapping. The mentioned nodes are potential master nodes. - - cluster.initial_master_nodes=elasticsearch,elasticsearch2,elasticsearch3 - ports: - # REST interface - - 9240:9200 - # Nodes communication - - 9340:9300 - networks: - - api-gateway-network - elasticsearch2: - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - container_name: elasticsearch2 - environment: - - cluster.name=SAG_EventDataStore - - node.name=elasticsearch2 - - discovery.seed_hosts=elasticsearch:9300,elasticsearch2:9300,elasticsearch3:9300 - - cluster.initial_master_nodes=elasticsearch,elasticsearch2,elasticsearch3 - networks: - - api-gateway-network - elasticsearch3: - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - container_name: elasticsearch3 - environment: - - cluster.name=SAG_EventDataStore - - node.name=elasticsearch3 - - discovery.seed_hosts=elasticsearch:9300,elasticsearch2:9300,elasticsearch3:9300 - - cluster.initial_master_nodes=elasticsearch,elasticsearch2,elasticsearch3 - networks: - - api-gateway-network -networks: - api-gateway-network: - # For setting a specific network name. - name: api-gateway-network diff --git a/samples/docker/deploymentscripts/apigw-elasticsearch-no-cluster/README.md b/samples/docker/deploymentscripts/apigw-elasticsearch-no-cluster/README.md deleted file mode 100644 index 2750911..0000000 --- a/samples/docker/deploymentscripts/apigw-elasticsearch-no-cluster/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Running a Single API Gateway and an Elasticsearch Container - -You can run a single API Gateway and an Elasticsearch container using Docker Compose. In this deployment scenario you can use the sample Docker Compose file `apigw-elasticsearch-no-cluster.yml`. - -The following figure depicts an API Gateway container with an externalized Elasticsearch where Kibana is included in the API Gateway container. - -![APIGateway_and_externalES.png](../images/1.%20APIGateway_and_externalES.png) - -To deploy a single API Gateway and an Elasticsearch container, follow the below steps - -1. Set the environment variables to define the image for the API Gateway container as follows: - - ```export APIGW_DOCKER_IMAGE_NAME=image name or filepath location of an existing image``` - - The composite file requires an API Gateway Docker image. You can create the referenced image through API Gateway scripting. For details on creating a Docker image, see [API Gateway Docker Images](../../#api-gateway-docker-images). - - The Docker Compose file references the standard Elasticsearch 7.2image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - - Specify the API Gateway image by changing the .env file. API Gateway uses the .env file when the working directory is .../samples/docker-compose, else you must specify the environment variables. - -2. Run the following command to start the API Gateway Docker container and the Elasticsearch container using the Docker Compose sample file: - - ``` - cd SAG-Root/IntegrationServer/instances/default/packages/WmAPIGateway/resources/samples/docker-compose - docker-compose -f apigw-elasticsearch-no-cluster.yml up - ``` - - In the Docker Compose sample file `apigw-elasticsearch-no-cluster.yml` ensure that you have specified the required information such as image name, name and port of the Elasticsearch host, server port, and UI port. This creates and starts the containers. Run the `docker ps` command to view the details of the containers created. - - To run it in the detached mode, append -d in the docker-compose command. - ``` - Note: You can stop the API Gateway Docker container and the Elasticsearch container using the Docker Compose sample file with the following command: - docker-compose -f apigw-elasticsearch-no-cluster.yml down - ``` - diff --git a/samples/docker/deploymentscripts/apigw-elasticsearch-no-cluster/apigw-elasticsearch-no-cluster.yml b/samples/docker/deploymentscripts/apigw-elasticsearch-no-cluster/apigw-elasticsearch-no-cluster.yml deleted file mode 100644 index 4a38c7e..0000000 --- a/samples/docker/deploymentscripts/apigw-elasticsearch-no-cluster/apigw-elasticsearch-no-cluster.yml +++ /dev/null @@ -1,53 +0,0 @@ -# This docker-compose file is an example for a setup with a single API Gateway container and a single Elasticsearch container. -# The image name of API Gateway can be set by modifying the .env file when the file is in the working directory or by setting the environment variable APIGW_DOCKER_IMAGE_NAME. -# To use this file run: docker-compose -f apigw-elasticsearch-no-cluster.yml up -# Append -d to run it in detached mode. -# To stop and remove containers, networks, volumes and images created by up run: docker-compose -f apigw-elasticsearch-no-cluster.yml down -version: '3.5' -services: - apigateway: - # Image name - image: ${APIGW_DOCKER_IMAGE_NAME} - # Container name - container_name: api-gateway-01 - environment: - # Name and port of the REST interface of the Elasticsearch container. - - apigw_elasticsearch_hosts=elasticsearch:9200 - # HTTPS enablement. - - apigw_elasticsearch_https_enabled=false - # Username and password for Elasticsearch. As standard leave it blank. - - apigw_elasticsearch_http_username= - - apigw_elasticsearch_http_password= - # Setting for exposing ports to the outside (external port:internal port). - ports: - # Server port - - 5555:5555 - # UI port - - 9072:9072 - # Needs to be the same network for all containers. - networks: - - api-gateway-network - elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - container_name: elasticsearch - # Elasticsearch settings - environment: - # Important when you have several Elasticsearch containers. They need to be in the same network. Should be a different name than in other environments. - - cluster.name=SAG_EventDataStore - # The node name. Used for inital master node discovery. - - node.name=elasticsearch - # For discovery of all Elasticsearch containers. - - discovery.seed_hosts=elasticsearch:9300 - # Used for cluster bootstrapping. The mentioned nodes are potential master nodes. - - cluster.initial_master_nodes=elasticsearch - ports: - # REST interface - - 9240:9200 - # Nodes communication - - 9340:9300 - networks: - - api-gateway-network -networks: - api-gateway-network: - # For setting a specific network name. - name: api-gateway-network diff --git a/samples/docker/deploymentscripts/images/1. APIGateway_and_externalES.png b/samples/docker/deploymentscripts/images/1. APIGateway_and_externalES.png deleted file mode 100644 index 0d9f744..0000000 Binary files a/samples/docker/deploymentscripts/images/1. APIGateway_and_externalES.png and /dev/null differ diff --git a/samples/docker/deploymentscripts/images/2. APIGateway_cluster_and_externalES.png b/samples/docker/deploymentscripts/images/2. APIGateway_cluster_and_externalES.png deleted file mode 100644 index 93cb447..0000000 Binary files a/samples/docker/deploymentscripts/images/2. APIGateway_cluster_and_externalES.png and /dev/null differ diff --git a/samples/docker/deploymentscripts/images/3. APIGateway_cluster_and_externalES_externalKibana.png b/samples/docker/deploymentscripts/images/3. APIGateway_cluster_and_externalES_externalKibana.png deleted file mode 100644 index 8696e9f..0000000 Binary files a/samples/docker/deploymentscripts/images/3. APIGateway_cluster_and_externalES_externalKibana.png and /dev/null differ diff --git a/samples/docker/deploymentscripts/images/APIGateway_and_externalES.png b/samples/docker/deploymentscripts/images/APIGateway_and_externalES.png deleted file mode 100644 index 03c158e..0000000 Binary files a/samples/docker/deploymentscripts/images/APIGateway_and_externalES.png and /dev/null differ diff --git a/samples/docker/deploymentscripts/images/APIGateway_cluster.png b/samples/docker/deploymentscripts/images/APIGateway_cluster.png deleted file mode 100644 index 6b65aed..0000000 Binary files a/samples/docker/deploymentscripts/images/APIGateway_cluster.png and /dev/null differ diff --git a/samples/docker/deploymentscripts/images/APIGateway_cluster_and_externalES.png b/samples/docker/deploymentscripts/images/APIGateway_cluster_and_externalES.png deleted file mode 100644 index 026d6f9..0000000 Binary files a/samples/docker/deploymentscripts/images/APIGateway_cluster_and_externalES.png and /dev/null differ diff --git a/samples/docker/deploymentscripts/images/APIGateway_externalES_and_externalKibana.png b/samples/docker/deploymentscripts/images/APIGateway_externalES_and_externalKibana.png deleted file mode 100644 index baf6f24..0000000 Binary files a/samples/docker/deploymentscripts/images/APIGateway_externalES_and_externalKibana.png and /dev/null differ diff --git a/samples/kubernetes/deploymentscripts/README.md b/samples/kubernetes/deploymentscripts/README.md deleted file mode 100644 index 2c7a135..0000000 --- a/samples/kubernetes/deploymentscripts/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# API Gateway kubernetes deployment scripts - -Use these deployment scripts to deploy various flavors of API Gateway (standalone or cluster) and the dependent components like Elasticsearch, Kibana, Terracotta to a kubernetes cluster. - -### Supported Software AG releases -* API Gateway 10.5 and above - -### Supported platforms -All supported Windows and UNIX platforms. - -### Sample use cases given -* Deployment of - * API Gateway with an embedded elasticsearch - * API Gateway with an elasticsearch as a sidecar container - * API Gateway without elasticsearch (external elasticsearch running) - -### Usage of the deployment scripts - - * Use api-gateway-deployment-embedded-elasticsearch.yaml to deploy an API Gateway with an embedded elasticsearch to a kubernetes cluster - * Use api-gateway-deployment-sidecar-elasticsearch.yaml to deploy an API Gateway with an elasticsearch as a sidecar container to a kubernetes cluster - * Use api-gateway-deployment-external-elasticsearch.yaml to deploy API Gateway without elasticsearch to a kubernetes cluster. An external elasticsearch needs to be up and running for this. diff --git a/samples/kubernetes/deploymentscripts/api-gateway-deployment-embedded-elasticsearch.yaml b/samples/kubernetes/deploymentscripts/api-gateway-deployment-embedded-elasticsearch.yaml deleted file mode 100644 index 408cbe7..0000000 --- a/samples/kubernetes/deploymentscripts/api-gateway-deployment-embedded-elasticsearch.yaml +++ /dev/null @@ -1,83 +0,0 @@ -# Configuration for deploying an API Gateway with an embedded elasticsearch to a kubernetes cluster. -# The cluster should provide at least 4 GB of main memory. -# -# The full documentation is available from the Software AG Documentation website: -# http://techcommunity.softwareag.com/ecosystem/documentation/webmethods/api_gateway/yai10-4/index.htm -# -apiVersion: apps/v1 -kind: Deployment -metadata: - name: api-gateway-deployment - labels: - app: api-gateway-deployment -spec: - replicas: 1 - - selector: - matchLabels: - app: api-gateway-deployment - template: - metadata: - labels: - app: api-gateway-deployment - spec: - containers: - - name: api-gateway-deployment - # Please fill in the path to your api gateway image stored in a docker registry. - image: :/: - # The default pull policy is IfNotPresent which causes the Kubelet to skip pulling an image if it already exists. - # If you would like to always force a pull use "Always" - imagePullPolicy: IfNotPresent - # Ports used in the docker image, the default ports are 5555, 9072 and 9240 - ports: - - containerPort: 5555 - name: 5555tcp1 - protocol: TCP - - containerPort: 9072 - name: 9072tcp1 - protocol: TCP - - containerPort: 9240 - name: 9240tcp1 - protocol: TCP - livenessProbe: - failureThreshold: 4 - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - tcpSocket: - port: 5555 - timeoutSeconds: 2 - readinessProbe: - failureThreshold: 3 - httpGet: - path: /rest/apigateway/health - port: 5555 - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - successThreshold: 2 - timeoutSeconds: 2 ---- -# An example service for the deployment above. -apiVersion: v1 -kind: Service -metadata: - name: api-gateway-service - labels: - app.kubernetes.io/name: api-gateway-deployment -spec: - type: NodePort - ports: - - name: http1 - port: 5555 - targetPort: 5555 - protocol: TCP - - name: http2 - port: 9072 - targetPort: 9072 - protocol: TCP - - name: http3 - port: 9200 - targetPort: 9200 - selector: - app: api-gateway-deployment \ No newline at end of file diff --git a/samples/kubernetes/deploymentscripts/api-gateway-deployment-external-elasticsearch.yaml b/samples/kubernetes/deploymentscripts/api-gateway-deployment-external-elasticsearch.yaml deleted file mode 100644 index e1366f2..0000000 --- a/samples/kubernetes/deploymentscripts/api-gateway-deployment-external-elasticsearch.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# Configuration for deploying an API Gateway without elasticsearch to a kubernetes cluster. -# An external elasticsearch needs to be up and running. -# The cluster should provide at least 4 GB of main memory. -# -# The full documentation is available from the Software AG Documentation website: -# http://techcommunity.softwareag.com/ecosystem/documentation/webmethods/api_gateway/yai10-4/index.htm -# -apiVersion: apps/v1 -kind: Deployment -metadata: - name: api-gateway-deployment-external-es - labels: - app: api-gateway-deployment-external-es -spec: - replicas: 1 - selector: - matchLabels: - app: api-gateway-deployment-external-es - template: - metadata: - labels: - app: api-gateway-deployment-external-es - spec: - containers: - - name: api-gateway-deployment-external-es - # Please fill in the path to your api gateway image stored in a docker registry. - image: :/: - # The default pull policy is IfNotPresent which causes the Kubelet to skip pulling an image if it already exists. - # If you would like to always force a pull use "Always" - imagePullPolicy: IfNotPresent - env: - # Please fill in your datas to access your external elasticsearch. - # Url pointing to your running elasticsearch for example: 127.0.0.1:9200 - - name: apigw_elasticsearch_hosts - value: ":" - # Use true if your elasticsearch has https enabled, false if not. - - name: "apigw_elasticsearch_https_enabled" - value: <"false" or "true"> - # Fill in your elasticsearch username for example: elastic - - name: "apigw_elasticsearch_http_username" - value: - # Fill in your elasticsearch password for example: changeme - - name: "apigw_elasticsearch_http_password" - value: - # Ports used in the docker image, the default ports are 5555 and 9072 - ports: - - containerPort: 5555 - name: 5555tcp01 - protocol: TCP - - containerPort: 9072 - name: 9072tcp01 - protocol: TCP - livenessProbe: - failureThreshold: 4 - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - tcpSocket: - port: 5555 - timeoutSeconds: 2 - readinessProbe: - failureThreshold: 3 - httpGet: - path: /rest/apigateway/health - port: 5555 - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - successThreshold: 2 - timeoutSeconds: 2 ---- -# An example service for the deployment above. -apiVersion: v1 -kind: Service -metadata: - name: api-gateway-service - labels: - app.kubernetes.io/name: api-gateway-deployment -spec: - type: NodePort - ports: - - name: http1 - port: 5555 - targetPort: 5555 - protocol: TCP - - name: http2 - port: 9072 - targetPort: 9072 - protocol: TCP - selector: - app: api-gateway-deployment \ No newline at end of file diff --git a/samples/kubernetes/deploymentscripts/api-gateway-deployment-sidecar-elasticsearch.yaml b/samples/kubernetes/deploymentscripts/api-gateway-deployment-sidecar-elasticsearch.yaml deleted file mode 100644 index ab2dd37..0000000 --- a/samples/kubernetes/deploymentscripts/api-gateway-deployment-sidecar-elasticsearch.yaml +++ /dev/null @@ -1,122 +0,0 @@ -# Configuration for deploying an API Gateway with an elasticsearch as a sidecar container to a kubernetes cluster. -# The cluster should provide at least 4 GB of main memory. -# -# The full documentation is available from the Software AG Documentation website: -# http://techcommunity.softwareag.com/ecosystem/documentation/webmethods/api_gateway/yai10-4/index.htm -# -apiVersion: apps/v1 -kind: Deployment -metadata: - name: api-gateway-deployment - labels: - app: api-gateway-deployment -spec: - replicas: 1 - selector: - matchLabels: - app: api-gateway-deployment - template: - metadata: - labels: - app: api-gateway-deployment - spec: - containers: - - name: apigateway - # Please fill in the path to your api gateway image stored in a docker registry. - image: :/: - # The default pull policy is IfNotPresent which causes the Kubelet to skip pulling an image if it already exists. - # If you would like to always force a pull use "Always" - imagePullPolicy: IfNotPresent - # Environment variables to access the sidecar elasticsearch. They should not be changed! - env: - - name: "apigw_elasticsearch_hosts" - value: "127.0.0.1:9200" - - name: "apigw_elasticsearch_https_enabled" - value: "false" - - name: "apigw_elasticsearch_http_username" - value: null - - name: "apigw_elasticsearch_http_password" - value: null - # Ports used in the docker image, the default ports are 5555 and 9072 - ports: - - containerPort: 5555 - name: 5555tcp01 - protocol: TCP - - containerPort: 9072 - name: 9072tcp01 - protocol: TCP - livenessProbe: - failureThreshold: 4 - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - tcpSocket: - port: 5555 - timeoutSeconds: 2 - readinessProbe: - failureThreshold: 3 - httpGet: - path: /rest/apigateway/health - port: 5555 - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - successThreshold: 2 - timeoutSeconds: 2 - # The elasticsearch container - - name: elastic-search - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 - imagePullPolicy: IfNotPresent - env: - - name: "xpack.security.enabled" - value: "false" - - name: "node.name" - value: "elasticsearch" - - name: "discovery.seed_hosts" - value: "elasticsearch:9300" - - name: "cluster.initial_master_nodes" - value: "elasticsearch" - ports: - - containerPort: 9200 - name: 9200tcp00 - protocol: TCP - livenessProbe: - failureThreshold: 3 - initialDelaySeconds: 10 - periodSeconds: 2 - successThreshold: 1 - tcpSocket: - port: 9200 - timeoutSeconds: 2 - readinessProbe: - failureThreshold: 3 - initialDelaySeconds: 10 - periodSeconds: 2 - successThreshold: 2 - tcpSocket: - port: 9200 - timeoutSeconds: 2 ---- -# An example service for the deployment above. -apiVersion: v1 -kind: Service -metadata: - name: api-gateway-service - labels: - app.kubernetes.io/name: api-gateway-deployment -spec: - type: NodePort - ports: - - name: http1 - port: 5555 - targetPort: 5555 - protocol: TCP - - name: http2 - port: 9072 - targetPort: 9072 - protocol: TCP - - name: http3 - port: 9200 - targetPort: 9200 - selector: - app: api-gateway-deployment \ No newline at end of file diff --git a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/Chart.yaml b/samples/kubernetes/deploymentscripts/helm/sag-apigateway/Chart.yaml deleted file mode 100644 index aa6a034..0000000 --- a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -appVersion: "10.5" -description: A Helm chart for Kubernetes -name: sag-apigateway -version: 10.5 \ No newline at end of file diff --git a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/_helpers.tpl b/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/_helpers.tpl deleted file mode 100644 index 4024489..0000000 --- a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/_helpers.tpl +++ /dev/null @@ -1,45 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "apigateway.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "apigateway.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "apigateway.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "apigateway.labels" -}} -app.kubernetes.io/name: {{ include "apigateway.name" . }} -helm.sh/chart: {{ include "apigateway.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} diff --git a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/deployment.yaml b/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/deployment.yaml deleted file mode 100644 index 5379c26..0000000 --- a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/deployment.yaml +++ /dev/null @@ -1,130 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: sag-apigateway-deployment - labels: -{{ include "apigateway.labels" . | indent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "apigateway.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "apigateway.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - env: - {{ if .Values.elasticsearch_external }} - - name: "apigw_elasticsearch_hosts" - value: "{{ .Values.elasticsearch_external.host }}" - - name: "apigw_elasticsearch_https_enabled" - value: "{{ .Values.elasticsearch_external.https }}" - - name: "apigw_elasticsearch_http_username" - value: "{{ .Values.elasticsearch_external.username }}" - - name: "apigw_elasticsearch_http_password" - value: "{{ .Values.elasticsearch_external.password }}" - {{ else if .Values.elasticsearch_sidecar }} - - name: "apigw_elasticsearch_hosts" - value: "localhost:9200" - - name: "apigw_elasticsearch_https_enabled" - value: "false" - - name: "apigw_elasticsearch_http_username" - value: - - name: "apigw_elasticsearch_http_password" - value: - {{ end }} - {{if .Values.terracotta_host }} - - name: "apigw_cluster_tsaUrls" - value: {{ .Values.terracotta_host }} - - name: apigw_terracotta_license_filename - value: terracotta-license.key - {{ end }} - ports: - - containerPort: {{ .Values.is.port }} - name: "{{ .Values.is.port }}tcp" - protocol: TCP - - containerPort: {{ .Values.apigateway.port }} - name: "{{ .Values.apigateway.port }}tcp" - protocol: TCP - {{ if and (not .Values.elasticsearch_external) (not .Values.elasticsearch_sidecar) }} - - containerPort: {{ .Values.elasticsearch_embedded.port }} - name: "{{ .Values.elasticsearch_embedded.port }}tcp" - protocol: TCP - {{ end }} - livenessProbe: - failureThreshold: 4 - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - tcpSocket: - port: {{ .Values.is.port }} - timeoutSeconds: 2 - readinessProbe: - failureThreshold: 3 - httpGet: - path: /rest/apigateway/health - port: {{ .Values.is.port }} - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - successThreshold: 2 - timeoutSeconds: 2 - {{ if and .Values.elasticsearch_sidecar (not .Values.elasticsearch_external)}} - - name: elastic-search - image: "{{ .Values.elasticsearch_sidecar.image }}:{{ .Values.elasticsearch_sidecar.tag}}" - imagePullPolicy: {{ .Values.image.pullPolicy}} - env: - - name: "xpack.security.enabled" - value: "false" - - name: "node.name" - value: "elasticsearch" - - name: "discovery.seed_hosts" - value: "elasticsearch:9300" - - name: "cluster.initial_master_nodes" - value: "elasticsearch" - ports: - - containerPort: 9200 - name: "9200tcp" - protocol: TCP - livenessProbe: - failureThreshold: 3 - initialDelaySeconds: 10 - periodSeconds: 2 - successThreshold: 1 - tcpSocket: - port: 9200 - timeoutSeconds: 2 - readinessProbe: - failureThreshold: 3 - initialDelaySeconds: 10 - periodSeconds: 2 - successThreshold: 2 - tcpSocket: - port: 9200 - timeoutSeconds: 2 - {{ end }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/service.yaml b/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/service.yaml deleted file mode 100644 index 1f0be84..0000000 --- a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/templates/service.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: sag-apigateway-service - labels: -{{ include "apigateway.labels" . | indent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - name: http1 - port: {{ .Values.is.port }} - targetPort: {{ .Values.is.port }} - protocol: TCP - - name: http2 - port: {{ .Values.apigateway.port }} - targetPort: {{ .Values.apigateway.port }} - protocol: TCP - {{ if not .Values.elasticsearch_external }} - {{ if .Values.elasticsearch_sidecar }} - - name: http3 - port: 9200 - targetPort: 9200 - protocol: TCP - {{else }} - - name: http3 - port: {{ .Values.elasticsearch_embedded.port}} - targetPort: {{ .Values.elasticsearch_embedded.port}} - protocol: TCP - {{end}} - {{end}} - selector: - app.kubernetes.io/name: {{ include "apigateway.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} \ No newline at end of file diff --git a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/values.yaml b/samples/kubernetes/deploymentscripts/helm/sag-apigateway/values.yaml deleted file mode 100644 index 2124ffb..0000000 --- a/samples/kubernetes/deploymentscripts/helm/sag-apigateway/values.yaml +++ /dev/null @@ -1,64 +0,0 @@ -# Sample values for apigateway. -# This helm chart deploys a kubernetes deployment for an apigateway and a matching service. -# This is a YAML-formatted file. - -replicaCount: 1 - -image: - # Use the url pointing to your repository. - repository: :/ - tag: - # The default pull policy is IfNotPresent which causes the Kubelet to skip pulling an image if it already exists. - # If you would like to always force a pull use "Always" - pullPolicy: IfNotPresent - -# Secrets you need to pull image frome the repository -imagePullSecrets: [] - -service: - type: NodePort - -# Port of Integration Server used in the Docker image. Default port is: 5555 -is: - port: 5555 - -# Port of ApiGateway used in the Docker image. Default port is: 9072 -apigateway: - port: 9072 - -# Use only elasticsearch_external, elasticsearch_sidecar or elasticsearch_embedded, -# Depending on your environment and intentions. -# Replaced the sample data with the one that suits your environment. - -#Datas to reach your external elasticsearch. - # Url pointing to your running elasticsearch for example: 127.0.0.1:9200 - # Use true if your elasticsearch has https enabled, false if not. - # Fill in your elasticsearch username for example: elastic - # Fill in your elasticsearch password for example: changeme -#Elasticsearch_external: -# host: ":" -# https: <"false" or "true"> -# username: -# password: - -# Docker image for elasticsearch. Default is: docker.elastic.co/elasticsearch/elasticsearch:5.6.4 -elasticsearch_sidecar: - image: docker.elastic.co/elasticsearch/elasticsearch - tag: 7.2.0 - -# Port of the embedded elasticsearch used inside off the container. Default is: 9240 -#elasticsearch_embedded: -# port: 9240 - -# If a terracotta_host is set, the api gateway(s) will try to connect them to the terracotta host and cluster them. -# Please be aware that the terracotta license have to be available in die docker image of the apiGateway. -# This will only work with an external elasticsearch -# Terracotta_host: "terracottahost:9510" - -resources: {} - -nodeSelector: {} - -tolerations: [] - -affinity: {}