Create an API product in Provider Portal
POST /api/api_products
POST /api/api_productsInteractive request editor loads with JavaScript.
In: header
Query Parameters
The unique identifier of the portal instance.
^[a-zA-Z0-9-_.]+$1 <= length <= 256"default"Request Body
application/json
The API product description.
The API product description.
Response Body
application/json
application/json
curl -X POST "$API_BASE_URL/api/api_products" \ -H "Content-Type: application/json" \ -d '{ "type": "gateway", "name": "Weather Insights API", "linked_gateway_services": [ {} ] }'API product created successfully.
{
"value": {
"type": "gateway",
"name": "Weather Insights API",
"logo": "string",
"desc": "The Weather Insights API provides real-time and historical weather data for any location worldwide.",
"labels": {
"version": "v2",
"env": "prod"
},
"auth": {
"key-auth": {
"header": "apikey",
"hide_credentials": false,
"query": "apikey"
}
},
"status": "draft",
"subscription_auto_approval": false,
"can_view_unsubscribed": true,
"visibility": "public",
"linked_gateway_services": [
{
"gateway_group_id": "bc1b95c9-b348-4832-acc3-e257d2342df1",
"gateway_group_name": "us-west-rsc",
"service_id": "b32e678e-7f6b-4a50-b113-550621ed4c01",
"name": "Weather Insights API",
"version": "1.3.2",
"status": 0,
"hosts": [
"weatherinsights.com"
],
"updated_at": 1742288230,
"openapi_title": "Weather Insights API - OpenAPI 3.0"
}
],
"id": "bd58fce2-b6cc-4d2d-a53c-6ce11b19c101",
"portal_id": "bd58fce2-b6cc-4d2d-a53c-6ce11b19c101",
"created_at": 1742288232,
"updated_at": 1742288235,
"notifications": [
{
"type": "email",
"email_subject": "API7 Enterprise alert.",
"content": "This is a alert testing email.",
"id": "bd58fce2-b6cc-4d2d-a53c-6ce11b19c101",
"event": "subscription_approval_created",
"contact_point_ids": [
"6c97bc5f-3356-41f5-894c-c88df5389bd2"
]
}
]
}
}Bad Request — The request was malformed or contained invalid parameters. Check the error_msg field for details.
{
"value": {},
"error_msg": "error message"
}Complete operation details and schema variants
POST /api/api_products
Create an API product in Provider Portal
IAM Action: portal:CreateAPIProduct, Resource: arn:api7:portal:portal/%s/apiproduct/*
Parameters
portal_id(query, string, optional): The unique identifier of the portal instance.
Request body
Content type: application/json
- oneOf variant 1: Gateway API Product
type(string, required):name(string, required): The object name.logo(string, optional): The base64-encoded logo image of the API product.desc(string, optional): The description of the API product.labels(object, optional): Key-value pairs of labels.auth(object, optional): The authentication configuration of the API product.auth.key-auth(object, optional): Key authentication configurations.auth.key-auth.hide_credentials(boolean, optional): If true, do not pass the header or query string with key to upstream services.auth.key-auth.query(string, optional): The query string to get the key from. Lower priority than header.auth.key-auth.header(string, optional): The header to get the key from.auth.basic-auth(object, optional): Basic authentication configurations.auth.basic-auth.hide_credentials(boolean, optional): If true, do not pass the header or query string with key to upstream services.auth.dcr(object, optional): DCR authentication configurations.auth.dcr.dcr_provider_id(string, required): ID of the DCR provider.linked_gateway_services(array, required): An array of gateway groups and services that the API product is linked to.linked_gateway_services[].gateway_group_id(string, optional): The gateway group ID.linked_gateway_services[].service_id(string, optional): The ID of the linked gateway service.linked_gateway_services[].linked_hosts(array, optional): Select one or more hosts configured for the gateway service to be published to the API portal. If not set, it means using all hosts of the gateway service.status(string, optional): Status of the API product.subscription_auto_approval(boolean, optional): If true, the subscription is automatically approved.can_view_unsubscribed(boolean, optional): If true, developers can view the unsubscribed API.visibility(string, optional): The visibility of the API product in the API hub.publicmeans the product is visible to all users andlogged_inmeans the product is only visible to logged-in developers.- oneOf variant 2: External API Product
- allOf variant 1
type(string, required): Type of API product.name(string, required): The object name.raw_openapi(string, required): The content of the OpenAPI YAML file.status(string, optional): Status of the API product.visibility(string, optional): The visibility of the API product in the API hub.publicmeans the product is visible to all users andlogged_inmeans the product is only visible to logged-in developers.- allOf variant 2
- anyOf variant 1
server_url(string, required): The server URL. It should be configured if the server URL is not defined in the OpenAPI spec.- anyOf variant 2
server_urls(array, required): The server URLs. It should be configured if the server URLs are not defined in the OpenAPI spec.
Responses
-
200: API product created successfully. -
allOf variant 1
-
value(object, optional): The specific resource. -
allOf variant 2
-
value(object, optional): -
allOf variant 1
-
oneOf variant 1: Gateway API Product
-
allOf variant 1
-
value.type(string, required): -
value.name(string, required): The object name. -
value.logo(string, optional): The base64-encoded logo image of the API product. -
value.desc(string, optional): The description of the API product. -
value.labels(object, optional): Key-value pairs of labels. -
value.auth(object, optional): The authentication configuration of the API product. -
value.auth.key-auth(object, optional): Key authentication configurations. -
value.auth.key-auth.hide_credentials(boolean, optional): If true, do not pass the header or query string with key to upstream services. -
value.auth.key-auth.query(string, optional): The query string to get the key from. Lower priority than header. -
value.auth.key-auth.header(string, optional): The header to get the key from. -
value.auth.basic-auth(object, optional): Basic authentication configurations. -
value.auth.basic-auth.hide_credentials(boolean, optional): If true, do not pass the header or query string with key to upstream services. -
value.auth.dcr(object, optional): DCR authentication configurations. -
value.auth.dcr.dcr_provider_id(string, required): ID of the DCR provider. -
value.linked_gateway_services(array, required): An array of gateway groups and services that the API product is linked to. -
value.linked_gateway_services[].gateway_group_id(string, optional): The gateway group ID. -
value.linked_gateway_services[].service_id(string, optional): The ID of the linked gateway service. -
value.linked_gateway_services[].linked_hosts(array, optional): Select one or more hosts configured for the gateway service to be published to the API portal. If not set, it means using all hosts of the gateway service. -
value.status(string, optional): Status of the API product. -
value.subscription_auto_approval(boolean, optional): If true, the subscription is automatically approved. -
value.can_view_unsubscribed(boolean, optional): If true, developers can view the unsubscribed API. -
value.visibility(string, optional): The visibility of the API product in the API hub.publicmeans the product is visible to all users andlogged_inmeans the product is only visible to logged-in developers. -
allOf variant 2
-
value.linked_gateway_services(array, optional): An array of gateway groups and services that the API product is linked to. -
value.linked_gateway_services[].gateway_group_id(string, optional): The gateway group ID. -
value.linked_gateway_services[].gateway_group_name(string, optional): The object name. -
value.linked_gateway_services[].service_id(string, optional): The service ID. -
value.linked_gateway_services[].name(string, optional): The service name. -
value.linked_gateway_services[].version(string, optional): The version of the service. -
value.linked_gateway_services[].status(integer, optional): The object status. 1 means the object is active while 0 means it's inactive. -
value.linked_gateway_services[].hosts(array, optional): -
value.linked_gateway_services[].updated_at(integer, optional): The object timestamp. -
value.linked_gateway_services[].openapi_title(string, optional): The title of the OpenAPI file. -
allOf variant 3
-
value.id(string, optional): The object ID. -
value.portal_id(string, optional): The object ID. -
value.created_at(integer, optional): The object created timestamp. -
value.updated_at(integer, optional): The object updated timestamp. -
oneOf variant 2: External API Product
-
allOf variant 1
-
allOf variant 1
-
value.type(string, required): Type of API product. -
value.name(string, required): The object name. -
value.raw_openapi(string, required): The content of the OpenAPI YAML file. -
value.status(string, optional): Status of the API product. -
value.visibility(string, optional): The visibility of the API product in the API hub.publicmeans the product is visible to all users andlogged_inmeans the product is only visible to logged-in developers. -
allOf variant 2
-
anyOf variant 1
-
value.server_url(string, required): The server URL. It should be configured if the server URL is not defined in the OpenAPI spec. -
anyOf variant 2
-
value.server_urls(array, required): The server URLs. It should be configured if the server URLs are not defined in the OpenAPI spec. -
allOf variant 2
-
value.tags(array, optional): -
value.desc(string, optional): Description. -
value.api_desc(string, optional): API description. -
value.api_count(number, optional): API count. -
allOf variant 3
-
value.id(string, optional): The object ID. -
value.portal_id(string, optional): The object ID. -
value.created_at(integer, optional): The object created timestamp. -
value.updated_at(integer, optional): The object updated timestamp. -
allOf variant 2
-
value.notifications(array, optional): Notification details. -
oneOf variant 1: Email
-
allOf variant 1
-
value.notifications[].type(string, optional): The type of the notification. -
value.notifications[].email_subject(string, optional): Email subject. -
value.notifications[].content(string, optional): Email content. -
allOf variant 2
-
value.notifications[].id(string, optional): The object ID. -
value.notifications[].event(string, optional): Notification trigger. -
value.notifications[].contact_point_ids(array, optional): An array of contact point IDs. -
oneOf variant 2: Webhook
-
allOf variant 1
-
value.notifications[].type(string, optional): The type of the notification. -
value.notifications[].message(string, optional): Notification message. -
allOf variant 2
-
value.notifications[].id(string, optional): The object ID. -
value.notifications[].event(string, optional): Notification trigger. -
value.notifications[].contact_point_ids(array, optional): An array of contact point IDs. -
400: Bad Request — The request was malformed or contained invalid parameters. Check the error_msg field for details. -
value(object, optional): The specific resource. -
error_msg(string, optional): The error message.
cURL
curl -X POST '$API_BASE_URL/api/api_products'