@if (data.mode === 'create') {
Create New API
} @else if (data.mode === 'duplicate') {
Duplicate API
} @else if (data.mode === 'test') {
Test API: {{ data.api.name }}
} @else {
Edit API: {{ data.api.name }}
}
NameUnique identifier for this API
@if (form.get('name')?.hasError('required') && form.get('name')?.touched) {
Name is required
}
@if (form.get('name')?.hasError('pattern') && form.get('name')?.touched) {
Only alphanumeric and underscore allowed
}
URLFull URL including protocol
@if (form.get('url')?.hasError('required') && form.get('url')?.touched) {
URL is required
}
@if (form.get('url')?.hasError('pattern') && form.get('url')?.touched) {
Invalid URL format
}
Method
@for (method of httpMethods; track method) {
{{ method }}
}
Timeout (seconds)Request timeout in seconds
@if (form.get('timeout_seconds')?.hasError('min')) {
Minimum 1 second
}
@if (form.get('timeout_seconds')?.hasError('max')) {
Maximum 300 seconds
}
Proxy URL (Optional)HTTP proxy for this API call
Request Headers
@if (headers.length === 0) {
No headers configured. Click "Add Header" to add one.
}
@for (header of headers.controls; track header; let i = $index) {
Header NameHeader Value
@for (variable of getTemplateVariables(); track variable) {
}
Token EndpointURL to obtain authentication token
@if (form.get('auth.token_endpoint')?.hasError('required') && form.get('auth.token_endpoint')?.touched) {
Token endpoint is required when auth is enabled
}
Token Response PathJSON path to extract token from response
@if (form.get('auth.response_token_path')?.hasError('required') && form.get('auth.response_token_path')?.touched) {
Token path is required when auth is enabled
}
Token Refresh (Optional)
Refresh EndpointURL to refresh expired token
}
Response PromptInstructions for AI to process the response (optional)
Response Mappings
@if (responseMappings.length === 0) {
No response mappings configured.
}
@for (mapping of responseMappings.controls; track mapping; let i = $index) {
{{ mapping.get('variable_name')?.value || 'New Mapping' }}
{{ mapping.get('json_path')?.value || 'Configure mapping' }}
Variable NameName to store the extracted value
@if (mapping.get('variable_name')?.hasError('pattern')) {
Lowercase letters, numbers and underscore only
}
CaptionHuman-readable description
Type
@for (type of variableTypes; track type) {
{{ type }}
}
JSON PathJSONPath expression to extract value
}
Retry Settings
Retry CountNumber of retry attemptsBackoff (seconds)Delay between retriesStrategy
@for (strategy of retryStrategies; track strategy) {
{{ strategy }}
}