Note
This page describes a legacy configuration file format. You should
only use this information if you're using the deprecated
realm-cli.
Any configuration files you pull with App Services CLI or export from the UI use the latest configuration version. For detailed information on the current configuration file format, see App Configuration.
app/ └── http_endpoints/ ├── config.json ├── data_api_config.json └── <Service Name>/ ├── config.json ├── rules/ │ └── <Rule Name>.json └── incoming_webhooks/ └── <Webhook Name>/ ├── config.json └── source.js
Custom HTTPS Endpoint Configuration
Define the configurations for your all of your app's custom HTTPS
endpoints as an array in http_endpoints/config.json.
[ { "route": "<Endpoint route name>", "http_method": "<HTTP method>", "function_name": "<Endpoint function name", "validation_method": "<Authorization scheme>", "secret_name": "<Validation Secret Name>", "respond_result": <boolean>, "fetch_custom_user_data": <boolean>, "create_user_on_auth": <boolean>, "disabled": <boolean> } ]
Field | Description |
|---|---|
routestring | The endpoint route. |
http_methodstring | The type of HTTP method that the
endpoint handles. Specify One of:
|
function_namestring | The name of the function associated with the endpoint. The function should use the endpoint function signature. |
validation_methodstring | The endpoint authorization scheme used to validate incoming requests. One of:
|
secret_namestring | The name of a secret that contains a string.
If |
respond_resultboolean | If If |
fetch_custom_user_databoolean | If If |
create_user_on_authboolean | If This setting is useful for apps that integrate with external authentication system through the Custom JWT authentication provider. If a request includes a valid JWT from the external system that doesn't correspond to a registered user, this creates a new user with the JWT as an identity. |
disabledboolean | Enables ( |
Data API Configuration
Define the configuration for your app's generated Data API
endpoints in http_endpoints/data_api_config.json.
{ "disabled": <boolean>, "versions": ["v1"], "return_type": "EJSON" | "JSON", "create_user_on_auth": <boolean>, "run_as_system": <boolean>, "run_as_user_id": "<User Account ID>", "run_as_user_id_script_source": "<Function Source Code>" }
Field | Description |
|---|---|
disabledboolean | If |
versionsstring[] | An list of Data API versions that your app supports. The list may include a subset of all possible versions but must list the versions in ascending order. You cannot enable a version other than the most recent version but any previously enabled versions listed here will continue to work. Available Versions:
|
return_typestring | The data format to use for data returned by endpoints in HTTPS response bodies. One of:
|
create_user_on_authboolean | If This setting is useful for apps that integrate with external authentication system through the Custom JWT authentication provider. If a request includes a valid JWT from the external system that doesn't correspond to a registered user, this creates a new user with the JWT as an identity. |
run_as_user_idstring | An application user's account ID. If defined, endpoints will always run as the specified user. Cannot be used with |
run_as_user_id_script_sourcestring | Stringified source code for a function that returns an application user's account ID. If defined, endpoints execute the function on every request and run as the user with the ID returned from the function. Cannot be used with |
HTTP Service Configuration
Deprecated legacy HTTP services are grouped into named services within
/http_endpoints.
{ "name": "<Service Name>", "type": "http", "config": {} }
Field | Description |
|---|---|
nameString | The name of the HTTP endpoints service. This must be unique among all HTTP endpoint services in the app and match the name of its containing directory. |
typeString | For HTTP endpoints, this value is always |
configString | Additional configuration options for the service. HTTP Endpoints currently have no additional configuration options. |
Service Action Rules
You define service action rules in the service's
rules/ sub-directory. Each rule maps to its own .json configuration file
with the same name as the rule.
{ "name": "<Rule Name>", "actions": ["<Service Action Name>"], "when": { <JSON Rule Expression> } }
Field | Description |
|---|---|
nameString | The name of the service rule. The name may be at most 64 characters long and can only contain ASCII letters, numbers, underscores, and hyphens. |
actionsArray<String> | A list of HTTP actions that the rule applies to. |
whenDocument | A rule expression that evaluates to |
Incoming Webhooks
Configuration
{ "name": "<Webhook Name>", "can_evaluate": { <JSON Expression> }, "run_as_authed_user": <Boolean>, "run_as_user_id": "<App Services User ID>", "run_as_user_id_script_source": "<Function Source Code>", "fetch_custom_user_data": <Boolean>, "create_user_on_auth": <Boolean>, "respond_result": <Boolean>, "options": { "httpMethod": "<HTTP Method>", "validationMethod": "<Webhook Validation Method>", "secret": "<Webhook Secret>" } }
Field | Description | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nameString | The name of the webhook. This must be unique among all webhooks in the HTTP endpoints service and match the name of its containing directory. | |||||||||||||
can_evaluateJSON Expression (default: true) | A JSON expression that evaluates to | |||||||||||||
disable_arg_logsBoolean | If | |||||||||||||
run_as_authed_userBoolean | If TipFor an example of how to specify credentials, see Configure Service Webhooks. | |||||||||||||
run_as_user_idString | The unique ID of a App Services User that
the function always executes as. Cannot be used with
| |||||||||||||
run_as_user_id_script_sourceString | A stringified function that runs whenever the
webhook is called and returns the unique ID of a App Services
User that the function executes as. Cannot be used with
| |||||||||||||
respond_resultBoolean | If | |||||||||||||
fetch_custom_user_dataBoolean | If This option is only available if | |||||||||||||
create_user_on_authBoolean | If This option is only available if | |||||||||||||
optionsDocument | A document that contains configuration options for the webhook.
|
Source Code
You define a webhook function's source code in a source.js file within the
webhook directory. Each file must export the main function that runs whenever a
request calls the webhook.
exports = async function (payload, response) { // Convert the webhook body from BSON to an EJSON object const body = EJSON.parse(payload.body.text()); // Execute application logic, such as working with MongoDB if (body.someField) { const mdb = context.services.get("mongodb-atlas"); const requests = mdb.db("demo").collection("requests"); const { insertedId } = await requests.insertOne({ someField: body.someField, }); // Respond with an affirmative result response.setStatusCode(200); response.setBody(`Successfully saved "someField" with _id: ${insertedId}.`); } else { // Respond with a malformed request error response.setStatusCode(400); response.setBody(`Could not find "someField" in the webhook request body.`); } // This return value does nothing because we already modified the response object. // If you do not modify the response object and you enable *Respond with Result*, // App Services will include this return value as the response body. return { msg: "finished!" }; };