# # Server

> Provides detailed information about the project server, its schema, and its health. Learn more about Projects.

- Get OpenAPI Specification
- Get GraphQL SDL
- Ping
- Info
- Health

## # Get OpenAPI Specification

Retrieve the OpenAPI spec for the current project.

Permissions

This OAS spec is based on the read permissions of the currently authenticated user.

### # Returns

Object conforming to the OpenAPI Specification
(opens new window)

### # REST API

    GET /server/specs/oas

### # GraphQL

    POST /graphql/system

    type Query {
    	server_specs_oas: String
    }

##### # Example

    query {
    	server_specs_oas
    }

## # Get GraphQL SDL

Retrieve the GraphQL SDL for the current project.

Permissions

The SDL is based on the permissions of the currently authenticated user.

### # Returns

GraphQL SDL file.

    type about_us {
      id: Int
      introduction: String
      our_process: String
      sales_email: String
      general_email: String
      primary_color: String
      secondary_color: String
      logo: directus_files
      mark: directus_files
    }

    type articles {
      id: Int
      status: String
    	...
    # etc

### # REST API

    GET /server/specs/graphql/
    GET /server/specs/graphql/system

### # GraphQL

    POST /graphql/system

    type Query {
    	server_specs_graphql(scope: graphql_sdl_scope): String
    }

##### # Example

    query {
    	server_specs_graphql(scope: "system")
    }

## # Ping

Ping... pong! 🏓

### # Returns

Pong.

### # REST API

    GET /server/ping

### # GraphQL

    POST /graphql/system

    type Query {
    	server_ping: String
    }

##### # Example

    query {
    	server_ping
    }

## # Info

Information about the current installation.

Permissions

The public information is returned for everybody. Admin users get additional information (see below).

### # Returns

`project` object
Public information about the project. Used to render the Admin App public pages.

See the settings object for more information on the individual properties of the `project` object.

Logged in users also get the following information:

`rateLimit` false | object
Whether or not the rate limiter is enabled.

`rateLimit.points` number
If rate-limiter is enabled, amount of allowed points per duration

`rateLimit.duration` number
If rate-limiter is enabled, duration in seconds in which points are counted

Admin users also get the following information:

`directus.version` string
Current version of Directus used.

`node.version` string
Current version of Node used.

`node.uptime` integer
How long the current process has been running.

`os.type` string
What type of operation system is used.

`os.version` string
What version of the operation system is used.

`os.uptime` string
How long the operating system has been up.

`os.totalmem` string
How much memory is available on the operating system.

### # REST API

    GET /server/info

### # GraphQL

    POST /graphql/system

    type Query {
    	server_info: server_info
    }

##### # Example

    query {
    	server_info {
    		directus {
    			version
    		}
    	}
    }

## # Health

Get the current health status of the server.

The `/server/health` endpoint shows you a general health status for the server and all connected (third party) services, such as Redis or S3.

The output is based on the "Health Check Response for HTTP APIs" draft spec: Health Check Response Format for HTTP APIs Draft Specification
(opens new window).

This endpoint can be used to ensure a healthy system when running in a horizontally scaled setup, like Kubernetes, Google Cloud Platform or AWS Elastic Beanstalk.

By default, the endpoint only returns a `status` of `ok`, `warn` or `error`. By authenticating as an admin, it will return more in-depth information about the current health status of the system.

    // Response

    // Non-admin
    {
      "status": "ok"
    }

    // Admin
    {
      "status": "ok",
      "releaseId": "9.0.0",
      "serviceId": "3292c816-ae02-43b4-ba91-f0bb549f040c",
      "checks": {
        "pg:responseTime": [
          {
            "status": "ok",
            "componentType": "datastore",
            "observedUnit": "ms",
            "observedValue": 0.489
          }
        ],
        "pg:connectionsAvailable": [
          {
            "status": "ok",
            "componentType": "datastore",
            "observedValue": 2
          }
        ],
        "pg:connectionsUsed": [
          {
            "status": "ok",
            "componentType": "datastore",
            "observedValue": 0
          }
        ],
        "storage:local:responseTime": [
          {
            "status": "ok",
            "componentType": "objectstore",
            "observedValue": 1.038,
            "observedUnit": "ms"
          }
        ],
        "email:connection": [
          {
            "status": "ok",
            "componentType": "email"
          }
        ]
      }
    }

### # Returns

`status` string
One of `ok`, `warn`, `error`.

Authenticated admin users also get the following information:

`releaseId` string
Directus version in use.

`serviceId` string
UUID of the current Directus instance.

`checks` array
Array with the status of all individually connected services.

### # REST API

    GET /server/health

### # GraphQL

    POST /graphql/system

    type Query {
    	server_health: JSON
    }

##### # Example

    query {
    	server_health
    }