@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 }} }

Name Unique 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 } URL Full 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 }
Body Template JSON template with template variable support @if (!validateJSON('body_template')) { Invalid JSON format }
@if (validateJSON('body_template')) { check_circle Valid JSON } @else { error Invalid JSON }
code Available Variables Click to insert template variables @for (variable of getTemplateVariables(false); track variable) { {{ variable }} } 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 Name Header Value @for (variable of getTemplateVariables(); track variable) { }
}
Response Prompt Instructions for AI to process the response (optional)

Response Mappings

Extract values from API response and save them as variables for use in subsequent intents.

@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 Name Name to store the extracted value @if (mapping.get('variable_name')?.hasError('pattern')) { Lowercase letters, numbers and underscore only } Caption Human-readable description
Type @for (type of variableTypes; track type) { {{ type }} } JSON Path JSONPath expression to extract value
}

Retry Settings

Retry Count Number of retry attempts Backoff (seconds) Delay between retries Strategy @for (strategy of retryStrategies; track strategy) { {{ strategy }} }

Test API Call

Test Request Body Variables will be replaced with test values @if (testResult) {

Test Result

@if (testResult.success) {
check_circle Success ({{ testResult.status_code }})
} @else {
error Failed: {{ testResult.error }}
} @if (testResult.response_time) {

Response Time: {{ testResult.response_time }}ms

} @if (testResult.response_body) { Response Body } @if (testResult.request_body) { Actual Request Sent }
}
Enable Authentication @if (form.get('auth.enabled')?.value) {

Token Configuration

Token Endpoint URL 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 Path JSON 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 Request Body JSON body for token request @if (!validateJSON('auth.token_request_body')) { Invalid JSON format }
@if (validateJSON('auth.token_request_body')) { check_circle Valid JSON } @else { error Invalid JSON }
code Available Variables Click to insert template variables @for (variable of getTemplateVariables(); track variable) { {{ variable }} }

Token Refresh (Optional)

Refresh Endpoint URL to refresh expired token Refresh Request Body JSON body for refresh request @if (!validateJSON('auth.token_refresh_body')) { Invalid JSON format }
@if (validateJSON('auth.token_refresh_body')) { check_circle Valid JSON } @else { error Invalid JSON }
code Available Variables Click to insert template variables @for (variable of getTemplateVariables(); track variable) { {{ variable }} }
}
@if (data.mode !== 'test') { }