# HTTP push source
stream source
scan table source
eKuiper provides built-in HTTP source stream, which serves as an HTTP server and can receive the message from HTTP client. There will be a single global HTTP server for all HTTP push sources. Each source can have its own endpoint so that multiple endpoints are supported.
## Configurations
There are two kinds of configurations: global server configuration and the source configuration.
### Server Configuration
The server configuration is in the `source` section in `etc/kuiper.yaml`.
```yaml
source:
## Configurations for the global http data server for httppush source
# HTTP data service ip
httpServerIp: 0.0.0.0
# HTTP data service port
httpServerPort: 10081
# httpServerTls:
# certfile: /var/https-server.crt
# keyfile: /var/https-server.key
```
User can specify the following properties:
- httpServerIp: the ip to bind the http data server.
- httpServerPort: the port to bind the http data server.
- httpServerTls: the configuration of the http TLS.
The global server will start once any rules needs a httppush source starts. It will shut down once all referred rules are closed.
### Source Configuration
Each stream can configure its url endpoint and http method. The endpoint property is mapped to the `datasource` property in create stream statement.
- Example: Bind the source to `/api/data` endpoint. Thus, with the default server configuration, it will listen on `http://localhost:10081/api/data`.
```sql
CREATE STREAM httpDemo() WITH (DATASOURCE="/api/data", FORMAT="json", TYPE="httppush")
```
The configuration file of HTTP push source is at `etc/sources/httppush.yaml`. Right now, only one property `method` is allowed to configure the http method to listen on.
```yaml
#Global httppush configurations
default:
# the request method to listen on
method: "POST"
#Override the global configurations
application_conf: #Conf_key
server: "PUT"
```