Create an API Endpoint
Create a new API endpoint within an API collection.
Body Parameters
Name of the API endpoint. Must be unique within the parent API collection.
Fully qualified name of the parent APICollection (e.g., sample_api_service.pet).
URL for the API endpoint (e.g., https://petstore3.swagger.io/#/pet/addPet).
HTTP request method: GET, POST, PUT, PATCH, or DELETE.
Schema describing the request body. Type of schema (e.g., JSON).
Array of field objects describing the schema. Data type of the field (e.g., INT, STRING, OBJECT).
Description of the field.
Schema describing the response body. Type of schema (e.g., JSON).
Array of field objects describing the schema. Description of the field.
Human-readable display name for the API endpoint.
Description of the API endpoint in Markdown format.
Array of owner references (users or teams) to assign to the API endpoint. UUID of the owner entity.
Type of owner entity (e.g., user, team).
Name of the owner entity.
Fully qualified name of the domain to assign for governance purposes.
Array of classification tags to apply to the API endpoint. Fully qualified name of the tag.
Type of label (e.g., Manual, Derived, Propagated).
State of the tag (e.g., Suggested, Confirmed).
Custom property values defined by your organization’s metadata schema.
from metadata.sdk import configure
from metadata.sdk.entities import APIEndpoints
from metadata.generated.schema.api.data.createAPIEndpoint import CreateAPIEndpointRequest
configure(
host = "https://your-company.getcollate.io/api" ,
jwt_token = "your-jwt-token"
)
request = CreateAPIEndpointRequest(
name = "addPet" ,
displayName = "Add Pet" ,
apiCollection = "sample_api_service.pet" ,
description = "Add a new pet to the store" ,
endpointURL = "https://petstore3.swagger.io/#/pet/addPet" ,
requestMethod = "POST" ,
requestSchema = {
"schemaType" : "JSON" ,
"schemaFields" : [
{ "name" : "id" , "dataType" : "INT" , "description" : "ID of pet" }
]
}
)
endpoint = APIEndpoints.create(request)
print ( f "Created: { endpoint.fullyQualifiedName } " )
{
"id" : "1f61427a-4a64-4070-9ac8-1d29302dac7c" ,
"name" : "addPet" ,
"displayName" : "Add Pet" ,
"fullyQualifiedName" : "sample_api_service.pet.addPet" ,
"description" : "add a new pet" ,
"version" : 0.1 ,
"updatedAt" : 1769982733987 ,
"updatedBy" : "admin" ,
"endpointURL" : "https://petstore3.swagger.io/#/pet/addPet" ,
"requestMethod" : "POST" ,
"requestSchema" : {
"schemaType" : "JSON" ,
"schemaFields" : [
{ "name" : "id" , "dataType" : "INT" , "description" : "ID of pet" }
]
},
"href" : "http://localhost:8585/api/v1/apiEndpoints/1f61427a-4a64-4070-9ac8-1d29302dac7c" ,
"owners" : [],
"tags" : [],
"service" : {
"id" : "58d413a8-abc3-4a6d-bd8a-13a0234b1ff8" ,
"type" : "apiService" ,
"name" : "sample_api_service" ,
"deleted" : false
},
"serviceType" : "Rest" ,
"deleted" : false ,
"domains" : []
}
Returns
Returns the created API endpoint object with all specified properties and system-generated fields.
Response
Unique identifier for the API endpoint (UUID format).
Fully qualified name in format service.collection.endpointName.
Human-readable display name.
Description of the API endpoint in Markdown format.
URL for the API endpoint.
HTTP request method (GET, POST, PUT, PATCH, DELETE).
Schema describing the request body. Type of schema (e.g., JSON).
Array of field definitions.
Schema describing the response body. Type of schema (e.g., JSON).
Array of field definitions.
Reference to the parent API service. Type of entity (always apiService).
Type of API service (e.g., Rest).
List of owners assigned to the API endpoint. UUID of the owner entity.
Type of owner entity (e.g., user, team).
Name of the owner entity.
Domain assignments for governance.
Classification tags applied to the API endpoint. Fully qualified name of the tag.
Type of label (e.g., Manual, Derived, Propagated).
State of the tag (e.g., Suggested, Confirmed).
Custom property values defined by your organization’s metadata schema.
Version number for the entity (starts at 0.1).
Create or Update (PUT)
Use PUT /v1/apiEndpoints instead of POST to perform an upsert. If an API endpoint with the same fullyQualifiedName already exists, it will be updated; otherwise, a new API endpoint is created. The request body is the same as POST.
curl -X PUT "{base_url}/api/v1/apiEndpoints" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{ ... same body as POST ... }'
PUT will not return a 409 conflict error if the entity already exists — it will update the existing entity instead.
Bulk Create or Update (PUT)
Use PUT /v1/apiEndpoints/bulk to create or update multiple API endpoints in a single request. The request body is an array of create request objects.
curl -X PUT "{base_url}/api/v1/apiEndpoints/bulk" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '[
{ "name": "addPet", "apiCollection": "sample_api_service.pet", "requestMethod": "POST" },
{ "name": "getPet", "apiCollection": "sample_api_service.pet", "requestMethod": "GET" }
]'
Error Handling
Code Error Type Description 400BAD_REQUESTInvalid request body or missing required fields 401UNAUTHORIZEDInvalid or missing authentication token 403FORBIDDENUser lacks permission to create API endpoints 409ENTITY_ALREADY_EXISTSAPI endpoint with same name already exists in collection (POST only)