Loading…
Loading…
A detailed reference for the Backend Profile data model, which defines connection, authentication, and routing settings for a backend service.
A Backend Profile is a configuration record that defines how the API platform connects to, authenticates with, and interacts with a specific backend service. Each profile aggregates all the necessary parameters for the platform runtime to manage outbound traffic to a single backend implementation, acting as a comprehensive blueprint for the connection.
This includes:
API publishers create and manage backend profiles to abstract backend connection details away from the API configuration itself. The platform runtime consumes these profiles to route incoming API consumer requests to the appropriate backend.
The Backend Profile data model is central to the platform's routing and security architecture.
When an API publisher defines a Backend Profile, the configuration is persisted in the platform's database. Sensitive data, such as passwords, tokens, and private keys, are stored within a single, encrypted credentials map.
The data flow for retrieving and using a profile is as follows:
flowchart TD
subgraph API Platform
A[Admin API Read Request] --> B{Database};
B -- Fetches encrypted record --> C[Credentials Decryption];
C -- Provides decrypted profile to runtime --> D{Runtime};
A -- Returns profile metadata (NO secrets) --> E[API Publisher];
end
subgraph Backend Service
F[Backend Endpoint]
end
D -- Uses profile to connect and authenticate --> F;BackendProfileRecord from the database.credentials map for use in the outbound request.endpointUrl, connectionTimeoutMs) to establish a connection.IMPORTANT
The Admin API for managing backend profiles never returns the decrypted credentials map. When a profile is requested via the API, the response includes only non-sensitive metadata about the credentials: credentialsSet, credentialsLastUpdatedAt, and credentialsLastUpdatedBy. This design prevents accidental exposure of secrets.
The profile separates application-layer authentication (authType) from transport-layer security (mtlsEnabled). This means you can enable mutual TLS for a secure transport channel independently of whether the backend requires, for example, an OAuth bearer token for application-level authorization.
A BackendProfileRecord contains the following fields:
| Field | Type | Description |
|---|---|---|
id | UUID | The unique identifier for the backend profile record. |
serviceId | UUID | The identifier of the service this profile is associated with. |
profileName | String | A human-readable name for the profile. |
endpointUrl | String | The base URL for the backend service endpoint. |
wsdlUrl | String | The URL to the WSDL document for SOAP-based backends. |
healthcheckUrl | String | The specific URL path to use for health checks. |
healthCheckMode | String | The mode used for health checks. The source does not specify possible values. |
hostHeader | String | The value to use for the Host header in outbound requests. |
authType | String | The primary authentication type for the backend. The source does not specify possible values. |
mtlsEnabled | Boolean | If true, enables mutual TLS for transport-layer security. |
soapNamespace | String | The XML namespace to use for SOAP requests. |
soapVersion | String | The version of the SOAP protocol to use. The source does not specify possible values. |
connectionTimeoutMs | Integer | The timeout in milliseconds for establishing a connection to the backend. |
readTimeoutMs | Integer | The timeout in milliseconds for waiting for data from the backend after a connection is established. |
retryCount | Integer | The number of times to retry a failed request. |
retryBackoffMs | Integer | The base delay in milliseconds to wait between retries. |
routingPriority | Integer | The priority of this profile for routing decisions. Lower numbers typically indicate higher priority. |
routingWeight | Integer | The weight of this profile for load balancing when multiple profiles have the same priority. |
active | Boolean | If true, the profile is active and can be used for routing traffic. |
extraHeaders | List of ExtraHeader | A list of static, non-secret headers to add to every outbound request. For secret headers, use the credentials map. |
oauth2TokenEndpoint | String | The URL of the OAuth 2.0 token endpoint for fetching access tokens. |
oauth2ClientId | String | The client ID for OAuth 2.0 authentication. |
oauth2Scope | String | The scope(s) to request during the OAuth 2.0 token grant flow. |
oauth2ExtraParams | List of OAuth2ExtraParam | A list of extra parameters to include in the body of the OAuth 2.0 token request. |
credentials | Map | A map containing decrypted secret material. This field is for internal runtime use only and is never serialized in API responses. See Credentials Map Structure for details. |
credentialsSet | Boolean | A metadata flag indicating whether credentials have been configured for this profile. This field is exposed via the Admin API. |
credentialsLastUpdatedAt | OffsetDateTime | A metadata timestamp indicating when the credentials were last updated. This field is exposed via the Admin API. |
credentialsLastUpdatedBy | String | A metadata field indicating who last updated the credentials. This field is exposed via the Admin API. |
createdAt | OffsetDateTime | The timestamp when the profile was created. |
updatedAt | OffsetDateTime | The timestamp when the profile was last updated. |
oauth2ClientAuth | OAuth2ClientAuth | An object defining the client authentication method used at the OAuth 2.0 token endpoint. This field is never null; it defaults to a client_secret_post configuration if not specified. |
OAuth2ClientAuth ObjectThis object specifies how the platform authenticates itself to the backend's OAuth 2.0 token endpoint.
NOTE
The fields in this object are not secret. The actual client secret or private key is stored in the credentials map.
| Field | Type | Default | Description |
|---|---|---|---|
method | String | client_secret_post | The client authentication method. Valid values are: client_secret_post, client_secret_basic, private_key_jwt, workload_identity_federation. |
assertionAudience | String | — | For private_key_jwt, the audience (aud) claim of the JWT assertion. If null, the token endpoint URL is used. |
assertionKeyId | String | — | For private_key_jwt, the key ID (kid) header of the JWT assertion. |
assertionCertificate | String | — | For private_key_jwt, the public certificate PEM used for the x5t or x5t#S256 headers. |
federatedTokenAudience | String | — | For workload_identity_federation, the audience for the federated token. If null, a default value is used. |
ExtraHeader ObjectDefines a static, non-secret header to be added to all outbound requests using this profile.
IMPORTANT
To add headers containing secrets (e.g., an API key), use the extraHeaders field within the credentials map, not this object.
| Field | Type | Description |
|---|---|---|
name | String | The name of the HTTP header. |
value | String | The value of the HTTP header. |
OAuth2ExtraParam ObjectDefines an extra parameter to be included in the application/x-www-form-urlencoded body of a request to an OAuth 2.0 token endpoint. This is used alongside standard parameters like grant_type, client_id, and scope.
| Field | Type | Description |
|---|---|---|
name | String | The name of the form parameter. |
value | String | The value of the form parameter. |
The credentials map holds all sensitive data for a backend profile. It is decrypted at runtime and is never exposed via the Admin API. The structure of this map is defined by a platform-wide standard.
| Key | Type | Description |
|---|---|---|
type | String | The type of credential. The source does not specify possible values. |
username | String | The username for basic authentication. |
password | String | The password for basic authentication. |
bearerToken | String | A static bearer token for authentication. |
apiKeyHeaderName | String | The name of the HTTP header used to send an API key. |
apiKeyValue | String | The value of the API key. |
oauth2ClientSecret | String | The client secret for OAuth 2.0 client authentication methods (client_secret_post, client_secret_basic). |
oauth2ClientAssertionPrivateKey | String | The private key (in PEM format) for the private_key_jwt OAuth 2.0 client authentication method. |
extraHeaders | Array of Objects | An array of {name, value} pairs for secret-bearing headers to add to outbound requests. |
mtls | Object | An object containing {certPem, keyPem} for client-side mTLS authentication. |
The system has built-in defaults to ensure a valid configuration:
BackendProfileRecord is created without an oauth2ClientAuth object, the system automatically provides a default configuration where the method is client_secret_post.OAuth2ClientAuth object, if the method field is null or blank, it also defaults to client_secret_post.