diff --git a/docs/AI/mcp-service-creation.md b/docs/AI/mcp-service-creation.md
index 88a5f2e..f7cbff4 100644
--- a/docs/AI/mcp-service-creation.md
+++ b/docs/AI/mcp-service-creation.md
@@ -2,10 +2,24 @@
sidebar_position: 2
title: Creating an MCP Server Service
id: mcp-service-creation
+description: Step-by-step guide to creating an MCP (Model Context Protocol) server service in DreamFactory for AI assistant integration
+keywords: [MCP, Model Context Protocol, AI integration, ChatGPT, Claude, Cursor, database API, AI assistant]
---
# Creating an MCP Server Service
+## Quick Reference
+
+| Property | Value |
+|----------|-------|
+| **Service Type** | MCP Server |
+| **Required Fields** | API Name, Database Service |
+| **Auto-Generated** | OAuth Client ID, OAuth Client Secret |
+| **Authentication** | OAuth 2.0 |
+| **Supported AI Clients** | ChatGPT, Claude, Cursor, any MCP-compatible client |
+
+## Overview
+
The Model Context Protocol (MCP) is a standardized protocol that enables AI assistants and development tools to interact with your DreamFactory database services through a consistent interface. Despite the growing popularity of direct API integrations, MCP-based connections remain an essential part of modern development workflows, allowing AI assistants like ChatGPT, Claude, and Cursor to seamlessly query and manipulate your database resources.
But incorporating MCP functionality into your development environment can be challenging. Fortunately, you can use DreamFactory to easily create a full-featured MCP server that exposes your database services through the Model Context Protocol. This server can perform all of the standard database operations, including:
@@ -20,7 +34,7 @@ In this tutorial we'll show you how to configure DreamFactory's MCP server servi
## Generating the MCP Server and Companion Documentation
-To generate an SFTP REST API, log in to your DreamFactory instance using an administrator account, select AI tab, and then click the purple plus button to establish a new connection:
+To create an MCP Server service, log in to your DreamFactory instance using an administrator account, select the **AI** tab, and then click the purple plus button to create a new connection:

diff --git a/docs/AI/mcp-service.md b/docs/AI/mcp-service.md
index dffd996..6c0a0e5 100644
--- a/docs/AI/mcp-service.md
+++ b/docs/AI/mcp-service.md
@@ -2,6 +2,9 @@
sidebar_position: 1
title: MCP Server
id: mcp-server
+description: Integrate DreamFactory with AI assistants and dev tools using the Model Context Protocol (MCP) for database operations.
+keywords: [MCP, Model Context Protocol, AI integration, Claude, ChatGPT, database tools, streaming API, JSON-RPC]
+difficulty: advanced
---
# MCP Server
diff --git a/docs/Security/authentication-apis.md b/docs/Security/authentication-apis.md
index 4317d8a..9c00b46 100644
--- a/docs/Security/authentication-apis.md
+++ b/docs/Security/authentication-apis.md
@@ -3,6 +3,9 @@ sidebar_position: 5
title: Authenticating your APIs
id: authenticating-your-apis
draft: false
+description: Configure API authentication with Active Directory, LDAP, OAuth, SAML 2.0, OpenID Connect, Okta, and Auth0 SSO providers.
+keywords: [API authentication, OAuth, SAML, LDAP, Active Directory, SSO, OpenID Connect, Okta, Auth0, JWT]
+difficulty: intermediate
---
One of DreamFactory's most popular features is the wide-ranging authentication support. While API Key-based authentication will suffice for many DreamFactory-powered applications, developers often require a higher degree of security through user-specific authentication. In some cases Basic HTTP authentication will get the job done, however many enterprises require more sophisticated and flexible approaches largely because of the growing adoption of Single Sign On (SSO)-based solutions such as Active Directory and LDAP, and use of third-party identity providers and solutions such as [AWS Cognito](https://aws.amazon.com/cognito/), [Auth0](https://auth0.com/), and [Okta](https://www.okta.com/).
diff --git a/docs/Security/role-based-access.md b/docs/Security/role-based-access.md
index 84ce398..53288e0 100644
--- a/docs/Security/role-based-access.md
+++ b/docs/Security/role-based-access.md
@@ -1,10 +1,29 @@
---
sidebar_position: 1
-title: Role Based Access
+title: Role Based Access Control (RBAC)
id: role-based-access
+description: Configure granular permissions for API access using DreamFactory's role-based access control system
+keywords: [RBAC, role-based access, API security, permissions, access control, API keys]
+difficulty: "beginner"
---
-# Role Based Access
+# Role Based Access Control (RBAC)
+
+## Quick Reference
+
+| Concept | Description |
+|---------|-------------|
+| **Role** | A named set of permissions that define which services and operations are allowed |
+| **Service** | An API endpoint (database, file storage, etc.) |
+| **Component** | A specific resource within a service (e.g., `_table/employees`) |
+| **Access** | HTTP methods allowed (GET, POST, PUT, PATCH, DELETE) |
+| **API Key** | Authentication token associated with one or more roles |
+
+## Permission Hierarchy
+
+```
+API Key → Role(s) → Service Access → Component Access → HTTP Methods
+```
## Creating Role Based Access Controls
diff --git a/docs/Security/security-faq.md b/docs/Security/security-faq.md
index b4c9198..38eead1 100644
--- a/docs/Security/security-faq.md
+++ b/docs/Security/security-faq.md
@@ -1,6 +1,9 @@
---
title: Security FAQ
id: security-faq
+description: "Answers to common security questions about DreamFactory's platform, compliance, encryption, and best practices"
+keywords: [security, compliance, HIPAA, GDPR, encryption, data protection, password recovery, hardening]
+difficulty: "beginner"
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
diff --git a/docs/_ai-reference.md b/docs/_ai-reference.md
new file mode 100644
index 0000000..cabe91a
--- /dev/null
+++ b/docs/_ai-reference.md
@@ -0,0 +1,423 @@
+---
+title: "AI Reference Index"
+id: ai-reference
+sidebar_class_name: hidden
+unlisted: true
+description: "Machine-readable reference of DreamFactory capabilities, endpoints, and service types for AI assistants and automation tools."
+keywords: [API reference, endpoints, service types, automation, AI integration, machine learning, LLM context]
+---
+
+# DreamFactory AI Reference Index
+
+This document provides structured, machine-readable information about DreamFactory's capabilities for AI assistants, automation tools, and LLM context. It is optimized for AI scraping.
+
+---
+
+## Platform Overview
+
+| Property | Value |
+|----------|-------|
+| **Product Name** | DreamFactory |
+| **Product Type** | REST API Platform / API Gateway |
+| **Primary Function** | Automatic API generation from data sources |
+| **License Types** | Open Source (OSS), Commercial (Gold, Silver) |
+| **Backend Technology** | PHP 8.1+, Laravel Framework |
+| **Database Support** | MySQL, PostgreSQL, SQL Server, Oracle, MongoDB, Cassandra, CouchDB, and more |
+| **Authentication Support** | API Key, JWT, OAuth 2.0, SAML 2.0, LDAP, Active Directory, OpenID Connect |
+| **MCP Support** | Yes - Model Context Protocol for AI assistant integration |
+
+---
+
+## Service Types
+
+DreamFactory supports the following service categories and types:
+
+### Database Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `alloydb` | AlloyDB | Google AlloyDB connections |
+| `aws_dynamodb` | AWS DynamoDB | Amazon DynamoDB NoSQL database |
+| `aws_redshift_db` | AWS Redshift | Amazon Redshift data warehouse |
+| `cassandra` | Cassandra | Apache Cassandra distributed database |
+| `couchdb` | CouchDB | Apache CouchDB document database |
+| `firebird` | Firebird | Firebird SQL database |
+| `pgsql` | PostgreSQL | PostgreSQL relational database |
+| `sqlite` | SQLite | SQLite embedded database |
+
+### File Storage Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `aws_s3` | AWS S3 | Amazon S3 file storage |
+| `azure_blob` | Azure Blob Storage | Microsoft Azure blob storage |
+| `ftp_file` | FTP File Storage | FTP protocol file service |
+| `local_file` | Local File Storage | Local filesystem access |
+| `openstack_object_storage` | OpenStack Object Storage | OpenStack Swift storage |
+| `rackspace_cloud_files` | Rackspace Cloud Files | Rackspace cloud storage |
+| `sftp_file` | SFTP File Storage | SFTP secure file transfer |
+| `webdav_file` | WebDAV File Storage | WebDAV file service |
+
+### Authentication Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `oauth_azure_ad` | Azure AD OAuth | Azure Active Directory/Entra ID OAuth |
+| `oauth_bitbucket` | Bitbucket OAuth | Bitbucket OAuth 1.0 |
+| `oauth_facebook` | Facebook OAuth | Facebook login integration |
+| `oauth_github` | GitHub OAuth | GitHub authentication |
+| `oauth_google` | Google OAuth | Google authentication |
+| `oauth_linkedin` | LinkedIn OAuth | LinkedIn authentication |
+| `oauth_microsoft-live` | Microsoft Live OAuth | Microsoft Live authentication |
+| `oauth_twitter` | Twitter OAuth | Twitter authentication |
+| `heroku_addon_sso` | Heroku Add-on SSO | Heroku single sign-on |
+
+### Email Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `aws_ses` | AWS SES | Amazon Simple Email Service |
+| `local_email` | Local Email Service | System sendmail configuration |
+| `mailgun_email` | Mailgun | Mailgun email service |
+| `smtp_email` | SMTP | SMTP email service |
+
+### Cache Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `cache_local` | Local Cache | Local file-based caching |
+| `cache_memcached` | Memcached | Memcached distributed cache |
+| `cache_redis` | Redis | Redis cache service |
+
+### IoT Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `amqp` | AMQP Client | Advanced Message Queuing Protocol |
+| `mqtt` | MQTT Client | MQTT messaging protocol |
+
+### Notification Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `aws_sns` | AWS SNS | Amazon Simple Notification Service |
+
+### Source Control Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `bitbucket` | Bitbucket Service | Bitbucket API 2.0 client |
+| `github` | GitHub Service | GitHub API client |
+| `gitlab` | GitLab Service | GitLab API client |
+
+### Other Services
+
+| Service Type | Label | Description |
+|-------------|-------|-------------|
+| `mcp` | MCP Server Service | Model Context Protocol for AI integration |
+| `rws` | HTTP Service | Remote web service proxy |
+| `swagger` | API Docs | OpenAPI/Swagger documentation |
+| `system` | System Management | DreamFactory system administration |
+| `user` | User Service | User management |
+
+---
+
+## System API Endpoints
+
+Base URL pattern: `https://{host}/api/v2/system/{resource}`
+
+### User Management
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/system/user` | List all users |
+| `POST` | `/api/v2/system/user` | Create new user(s) |
+| `PATCH` | `/api/v2/system/user` | Update user(s) |
+| `DELETE` | `/api/v2/system/user` | Delete user(s) |
+| `GET` | `/api/v2/system/user/{id}` | Get specific user |
+
+### Admin Management
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/system/admin` | List all admins |
+| `POST` | `/api/v2/system/admin` | Create new admin(s) |
+| `PATCH` | `/api/v2/system/admin` | Update admin(s) |
+| `DELETE` | `/api/v2/system/admin` | Delete admin(s) |
+
+### Service Management
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/system/service` | List all services |
+| `POST` | `/api/v2/system/service` | Create new service(s) |
+| `PATCH` | `/api/v2/system/service` | Update service(s) |
+| `DELETE` | `/api/v2/system/service` | Delete service(s) |
+| `GET` | `/api/v2/system/service_type` | List available service types |
+
+### Role Management
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/system/role` | List all roles |
+| `POST` | `/api/v2/system/role` | Create new role(s) |
+| `PATCH` | `/api/v2/system/role` | Update role(s) |
+| `DELETE` | `/api/v2/system/role` | Delete role(s) |
+
+### API Key (App) Management
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/system/app` | List all apps/API keys |
+| `POST` | `/api/v2/system/app` | Create new app |
+| `PATCH` | `/api/v2/system/app` | Update app |
+| `DELETE` | `/api/v2/system/app` | Delete app |
+
+---
+
+## Database API Endpoints
+
+Base URL pattern: `https://{host}/api/v2/{service-name}/{resource}`
+
+### Table Operations
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/{db}/_table` | List all tables |
+| `GET` | `/api/v2/{db}/_table/{table}` | Get records from table |
+| `POST` | `/api/v2/{db}/_table/{table}` | Create records |
+| `PATCH` | `/api/v2/{db}/_table/{table}` | Update records |
+| `DELETE` | `/api/v2/{db}/_table/{table}` | Delete records |
+
+### Query Parameters
+
+| Parameter | Type | Description |
+|-----------|------|-------------|
+| `fields` | string | Comma-separated list of fields to return |
+| `filter` | string | SQL-like filter expression (e.g., `id>5`) |
+| `limit` | integer | Maximum number of records to return |
+| `offset` | integer | Number of records to skip |
+| `order` | string | Field and direction (e.g., `name ASC`) |
+| `group` | string | Field(s) to group by |
+| `related` | string | Related tables to include |
+| `id_field` | string | Field to use as primary key |
+| `id_type` | string | Data type of id field |
+| `include_count` | boolean | Include total record count |
+
+### Filter Operators
+
+| Operator | Description | Example |
+|----------|-------------|---------|
+| `=` | Equals | `status=active` |
+| `!=` | Not equals | `status!=deleted` |
+| `>` | Greater than | `age>18` |
+| `<` | Less than | `price<100` |
+| `>=` | Greater than or equal | `quantity>=10` |
+| `<=` | Less than or equal | `score<=100` |
+| `like` | Pattern matching | `name like 'John%'` |
+| `in` | In list | `status in ('active','pending')` |
+| `between` | Range | `date between '2024-01-01' and '2024-12-31'` |
+| `is null` | Null check | `deleted_at is null` |
+| `is not null` | Not null check | `email is not null` |
+
+### Schema Operations
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/{db}/_schema` | Get database schema |
+| `GET` | `/api/v2/{db}/_schema/{table}` | Get table schema |
+| `POST` | `/api/v2/{db}/_schema` | Create table |
+| `PATCH` | `/api/v2/{db}/_schema/{table}` | Modify table schema |
+| `DELETE` | `/api/v2/{db}/_schema/{table}` | Drop table |
+
+### Stored Procedures
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/{db}/_proc` | List stored procedures |
+| `GET` | `/api/v2/{db}/_proc/{name}` | Call procedure (GET params) |
+| `POST` | `/api/v2/{db}/_proc/{name}` | Call procedure (POST body) |
+
+### Functions
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/api/v2/{db}/_func` | List stored functions |
+| `GET` | `/api/v2/{db}/_func/{name}` | Call function (GET params) |
+| `POST` | `/api/v2/{db}/_func/{name}` | Call function (POST body) |
+
+---
+
+## Authentication Endpoints
+
+### Session Management
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `POST` | `/api/v2/user/session` | Login (create session) |
+| `GET` | `/api/v2/user/session` | Get current session info |
+| `PUT` | `/api/v2/user/session` | Refresh JWT token |
+| `DELETE` | `/api/v2/user/session` | Logout (destroy session) |
+
+### Admin Session
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `POST` | `/api/v2/system/admin/session` | Admin login |
+| `GET` | `/api/v2/system/admin/session` | Get admin session info |
+| `PUT` | `/api/v2/system/admin/session` | Refresh admin JWT |
+| `DELETE` | `/api/v2/system/admin/session` | Admin logout |
+
+---
+
+## Required HTTP Headers
+
+| Header | Required | Description |
+|--------|----------|-------------|
+| `X-DreamFactory-Api-Key` | Yes* | API key for authentication |
+| `X-DreamFactory-Session-Token` | Conditional | JWT token for user sessions |
+| `Content-Type` | Yes | `application/json` for JSON payloads |
+| `Accept` | Recommended | `application/json` |
+
+*API key required unless using admin/system endpoints with session token.
+
+---
+
+## MCP (Model Context Protocol) Integration
+
+DreamFactory supports MCP for AI assistant integration. MCP endpoints allow AI tools like Claude, ChatGPT, and Cursor to interact with databases through natural language.
+
+### MCP Endpoint
+
+`POST /mcp/{service-name}`
+
+### MCP Tools Available
+
+| Tool | Description |
+|------|-------------|
+| `get_tables` | List all tables in database |
+| `get_table_schema` | Get schema for a table |
+| `get_table_data` | Query data with filters |
+| `get_table_fields` | Get field definitions |
+| `get_table_relationships` | Get table relationships |
+| `create_records` | Create new records |
+| `update_records` | Update existing records |
+| `delete_records` | Delete records |
+| `get_stored_procedures` | List stored procedures |
+| `call_stored_procedure` | Execute stored procedure |
+| `get_stored_functions` | List stored functions |
+| `call_stored_function` | Execute stored function |
+| `get_database_resources` | List all database resources |
+| `list_tools` | List available MCP tools |
+
+---
+
+## Common Response Formats
+
+### Success Response (Single Record)
+
+```json
+{
+ "id": 1,
+ "field1": "value1",
+ "field2": "value2"
+}
+```
+
+### Success Response (Multiple Records)
+
+```json
+{
+ "resource": [
+ {"id": 1, "name": "Item 1"},
+ {"id": 2, "name": "Item 2"}
+ ]
+}
+```
+
+### Error Response
+
+```json
+{
+ "error": {
+ "code": 400,
+ "context": null,
+ "message": "Error description here",
+ "status_code": 400
+ }
+}
+```
+
+### Paginated Response
+
+```json
+{
+ "resource": [...],
+ "meta": {
+ "count": 100,
+ "next": 50,
+ "previous": 0
+ }
+}
+```
+
+---
+
+## Role-Based Access Control (RBAC)
+
+### Verb Mask Values
+
+| Verb | Value | HTTP Method |
+|------|-------|-------------|
+| GET | 1 | Read operations |
+| POST | 2 | Create operations |
+| PUT | 4 | Full update operations |
+| PATCH | 8 | Partial update operations |
+| DELETE | 16 | Delete operations |
+
+Combine values for multiple verbs: `GET + POST = 3`, `GET + PATCH + DELETE = 25`
+
+### Access Filters
+
+Role service access can be filtered by:
+- Service (allow/deny specific services)
+- Component (table, procedure, function)
+- Verb mask (allowed HTTP methods)
+- Request filters (limit data on requests)
+- Response filters (modify response data)
+
+---
+
+## Environment Variables
+
+Key environment variables for DreamFactory configuration:
+
+| Variable | Description |
+|----------|-------------|
+| `APP_KEY` | Application encryption key |
+| `DB_CONNECTION` | System database type |
+| `DB_HOST` | System database host |
+| `DB_DATABASE` | System database name |
+| `DB_USERNAME` | System database user |
+| `DB_PASSWORD` | System database password |
+| `CACHE_DRIVER` | Cache backend (redis, memcached, file) |
+| `CACHE_HOST` | Cache server host |
+| `LOG_CHANNEL` | Logging configuration |
+| `DF_INSTALL` | Installation type (Docker, Bitnami, etc.) |
+
+---
+
+## Documentation URLs
+
+| Resource | URL |
+|----------|-----|
+| Main Documentation | https://docs.dreamfactory.com |
+| GitHub Repository | https://github.com/dreamfactorysoftware/dreamfactory |
+| Docker Hub | https://hub.docker.com/r/dreamfactorysoftware/df-docker |
+| Community Forum | https://community.dreamfactory.com |
+| Blog | https://blog.dreamfactory.com |
+| Demo/Trial | https://genie.dreamfactory.com |
+
+---
+
+*This document is automatically maintained. Last updated: January 2026*
diff --git a/docs/api-generation-and-connections/advanced-database-api-features.md b/docs/api-generation-and-connections/advanced-database-api-features.md
index a998772..9009231 100644
--- a/docs/api-generation-and-connections/advanced-database-api-features.md
+++ b/docs/api-generation-and-connections/advanced-database-api-features.md
@@ -2,6 +2,9 @@
title: "Advanced Database API Features"
linkTitle: "Advanced Database API Features"
weight: 5
+description: "Use database transactions, functions, and virtual fields to extend DreamFactory API capabilities"
+keywords: [database transactions, SQL functions, virtual fields, rollback, nested inserts, data transformation]
+difficulty: "advanced"
---
[Generating a Database-backed API](./api-types/database/generating-database-backed-api.md) provides a solid introduction to carrying out CRUD operations in conjunction with a DreamFactory-generated API, however you're going to need some additional firepower in order to successfully integrate these APIs into your projects. This chapter introduces several of DreamFactory's advanced database API-related features, covering topics such as database transactions, calling database functions via API endpoints, and more.
diff --git a/docs/api-generation-and-connections/api-keys.md b/docs/api-generation-and-connections/api-keys.md
index 2fd072f..9c257b0 100644
--- a/docs/api-generation-and-connections/api-keys.md
+++ b/docs/api-generation-and-connections/api-keys.md
@@ -2,6 +2,9 @@
sidebar_position: 2
title: API Keys
id: api-keys
+description: "Create and configure API keys in DreamFactory to authenticate requests and control access to your APIs"
+keywords: [API key, authentication, app configuration, DreamFactory API, access control, API security]
+difficulty: "beginner"
---
# API Keys
diff --git a/docs/api-generation-and-connections/api-types/database/generating-database-backed-api.md b/docs/api-generation-and-connections/api-types/database/generating-database-backed-api.md
index 8578737..359976c 100644
--- a/docs/api-generation-and-connections/api-types/database/generating-database-backed-api.md
+++ b/docs/api-generation-and-connections/api-types/database/generating-database-backed-api.md
@@ -2,10 +2,24 @@
sidebar_position: 1
title: Generating a Database-backed API
id: generating-a-database-backed-api
+description: Generate REST APIs from MySQL, PostgreSQL, SQL Server, Oracle, MongoDB and 15+ other databases in minutes
+keywords: [database API, REST API, MySQL API, PostgreSQL API, SQL Server API, Oracle API, MongoDB API, auto-generated API, CRUD API]
---
# Generating a Database-backed API
+## Quick Reference
+
+| Property | Value |
+|----------|-------|
+| **Time to First API** | 5-10 minutes |
+| **Supported Databases** | 18+ (MySQL, PostgreSQL, SQL Server, Oracle, MongoDB, etc.) |
+| **Generated Endpoints** | CRUD operations, stored procedures, schema management |
+| **Documentation** | Auto-generated OpenAPI/Swagger |
+| **Authentication** | API keys, JWT, OAuth, LDAP/AD |
+
+## Overview
+
DreamFactory's capabilities are vast, however its most popular feature is the ability to generate a database-backed REST API. By embracing this automated approach, development teams can shave weeks if not months off the development cycle, and in doing so greatly reduce the likelihood of bugs or security issues due to mishaps such as SQL injection. This approach doesn't come with any trade offs either, because DreamFactory's database-backed APIs are fully-featured REST interfaces. They offer comprehensive CRUD (create, retrieve, update, delete) capabilities, endpoints for executing stored procedures, and even endpoints for managing the schema.
This topic details DreamFactory's ability to generate, secure, and deploy a database-backed API in just minutes. We've included infomation to help you successfully complete the following tasks:
diff --git a/docs/api-generation-and-connections/api-types/database/querying-filtering.md b/docs/api-generation-and-connections/api-types/database/querying-filtering.md
index 1d0cace..489aa75 100644
--- a/docs/api-generation-and-connections/api-types/database/querying-filtering.md
+++ b/docs/api-generation-and-connections/api-types/database/querying-filtering.md
@@ -2,12 +2,27 @@
sidebar_position: 2
title: Querying and Filtering Records
id: querying-and-filtering
+description: Learn how to query, filter, sort, and paginate database records using DreamFactory's REST API
+keywords: [database query, API filtering, REST API query, pagination, sorting, SQL filter, LIKE operator, IN operator]
+difficulty: "intermediate"
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Querying and Filtering Records in DreamFactory
+## Quick Reference
+
+| Parameter | Purpose | Example |
+|-----------|---------|---------|
+| `filter` | Filter records | `filter=(status='active')` |
+| `fields` | Select columns | `fields=id,name,email` |
+| `limit` | Max records | `limit=10` |
+| `offset` | Skip records | `offset=20` |
+| `order` | Sort results | `order=name ASC` |
+| `include_count` | Get total count | `include_count=true` |
+| `ids` | Get by IDs | `ids=1,2,3` |
+
## Overview
DreamFactory provides powerful filtering capabilities for database operations, allowing you to precisely query and manipulate your data through the REST API. This guide will walk you through the basics and advanced features of filtering in DreamFactory.
@@ -62,14 +77,19 @@ DreamFactory uses SQL-like syntax for filtering. Ensure you are familiar with SQ
| `IN` | Match any value in set | `(status IN ('active','pending'))` |
| `LIKE` | Pattern matching | `(email LIKE '%@company.com')` |
| `IS NULL` | Check for null values | `(phone IS NULL)` |
-| `BETWEEN` | Value in range | `(age BETWEEN (18,65))` |
+| Range check | Value in range | `(age>=18) AND (age<=65)` |
### String Operations
-| Operator | Description | Example |
-|----------|-------------|---------|
-| `CONTAINS` | Contains string | `(description CONTAINS 'important')` |
-| `STARTS WITH` | Begins with string | `(name STARTS WITH 'App')` |
-| `ENDS WITH` | Ends with string | `(file ENDS WITH '.pdf')` |
+
+:::note Database Compatibility
+The `CONTAINS`, `STARTS WITH`, and `ENDS WITH` operators have limited database support. For maximum compatibility across all databases (MySQL, PostgreSQL, SQL Server, etc.), use the `LIKE` operator with wildcards instead.
+:::
+
+| Operator | Description | Example | Recommended Alternative |
+|----------|-------------|---------|-------------------------|
+| `CONTAINS` | Contains string | `(description CONTAINS 'important')` | `(description LIKE '%important%')` |
+| `STARTS WITH` | Begins with string | `(name STARTS WITH 'App')` | `(name LIKE 'App%')` |
+| `ENDS WITH` | Ends with string | `(file ENDS WITH '.pdf')` | `(file LIKE '%.pdf')` |
### Common Filter Examples
```http
diff --git a/docs/api-generation-and-connections/api-types/database/sql-server.md b/docs/api-generation-and-connections/api-types/database/sql-server.md
index 8e588d1..781ca72 100644
--- a/docs/api-generation-and-connections/api-types/database/sql-server.md
+++ b/docs/api-generation-and-connections/api-types/database/sql-server.md
@@ -2,6 +2,9 @@
sidebar_position: 5
title: Microsoft SQL Server
id: sql-server
+description: "Connect Microsoft SQL Server to DreamFactory and generate secure REST APIs with RBAC, rate limiting, and SSO"
+keywords: [SQL Server, MSSQL, database API, REST API, RBAC, rate limiting, stored procedures, Azure]
+difficulty: "intermediate"
---
# Connecting Microsoft SQL Server to DreamFactory
diff --git a/docs/api-generation-and-connections/api-types/file/creating-aws-s3-rest-api.md b/docs/api-generation-and-connections/api-types/file/creating-aws-s3-rest-api.md
index 39d6ac7..10105a9 100644
--- a/docs/api-generation-and-connections/api-types/file/creating-aws-s3-rest-api.md
+++ b/docs/api-generation-and-connections/api-types/file/creating-aws-s3-rest-api.md
@@ -2,6 +2,9 @@
sidebar_position: 2
title: Creating an AWS S3 REST API
id: creating-an-aws-s3-rest-api
+description: "Generate a REST API for AWS S3 buckets to manage files with role-based access and rate limiting"
+keywords: [AWS S3, file storage, REST API, cloud storage, S3 bucket, file upload, file download]
+difficulty: "intermediate"
---
# Creating an AWS S3 REST API
diff --git a/docs/api-generation-and-connections/api-types/file/index.md b/docs/api-generation-and-connections/api-types/file/index.md
index 082cce6..895898e 100644
--- a/docs/api-generation-and-connections/api-types/file/index.md
+++ b/docs/api-generation-and-connections/api-types/file/index.md
@@ -2,6 +2,9 @@
sidebar_position: 1
title: File System APIs
id: file-system-apis
+description: "Create REST APIs for file operations with SFTP, AWS S3, Azure Blob, and other file storage services"
+keywords: [file API, SFTP, AWS S3, file storage, REST API, file management, Excel to JSON]
+difficulty: "beginner"
---
# File System APIs
diff --git a/docs/api-generation-and-connections/api-types/network/placeholder.md b/docs/api-generation-and-connections/api-types/network/placeholder.md
index 4140a05..1be77e5 100644
--- a/docs/api-generation-and-connections/api-types/network/placeholder.md
+++ b/docs/api-generation-and-connections/api-types/network/placeholder.md
@@ -1,3 +1,16 @@
---
draft: true
----
\ No newline at end of file
+sidebar_position: 99
+title: Network APIs (Coming Soon)
+---
+
+# Network APIs
+
+This section will cover DreamFactory's network-related API types, including:
+
+- **HTTP Services** - Remote web service integrations
+- **SOAP to REST** - Converting legacy SOAP services to REST APIs
+- **GraphQL** - GraphQL endpoint generation
+- **SSE** - Server-Sent Events support
+
+Content is currently under development.
diff --git a/docs/api-generation-and-connections/api-types/scripting/scripted-services-and-endpoints.md b/docs/api-generation-and-connections/api-types/scripting/scripted-services-and-endpoints.md
index 45fe9d5..abbf99e 100644
--- a/docs/api-generation-and-connections/api-types/scripting/scripted-services-and-endpoints.md
+++ b/docs/api-generation-and-connections/api-types/scripting/scripted-services-and-endpoints.md
@@ -2,6 +2,9 @@
sidebar_position: 1
title: Creating Scripted Services and Endpoints
id: scripted-services-and-endpoints
+description: "Build custom API services using PHP, Python, or Node.js scripts to add business logic and integrations"
+keywords: [scripted services, PHP API, Python API, Node.js, custom endpoints, business logic, API scripting]
+difficulty: "intermediate"
---
# Creating Scripted Services and Endpoints
diff --git a/docs/api-generation-and-connections/api-types/utility/placeholder.md b/docs/api-generation-and-connections/api-types/utility/placeholder.md
index 4140a05..11fada3 100644
--- a/docs/api-generation-and-connections/api-types/utility/placeholder.md
+++ b/docs/api-generation-and-connections/api-types/utility/placeholder.md
@@ -1,3 +1,16 @@
---
draft: true
----
\ No newline at end of file
+sidebar_position: 99
+title: Utility APIs (Coming Soon)
+---
+
+# Utility APIs
+
+This section will cover DreamFactory's utility API types, including:
+
+- **Email Services** - SMTP, Mailgun, Mandrill, SparkPost integrations
+- **Push Notifications** - APNS, GCM, Firebase push notification services
+- **Caching Services** - Redis, Memcached integrations
+- **Scripting Services** - PHP, Python, Node.js, V8js custom scripted APIs
+
+Content is currently under development.
diff --git a/docs/api-generation-and-connections/event-scripts.md b/docs/api-generation-and-connections/event-scripts.md
index 3ba2aec..2489c6a 100644
--- a/docs/api-generation-and-connections/event-scripts.md
+++ b/docs/api-generation-and-connections/event-scripts.md
@@ -2,6 +2,9 @@
sidebar_position: 3
title: Event Scripts
id: event-scripts
+description: "Execute custom scripts on API events to validate requests, modify responses, and add business logic to your APIs"
+keywords: [event scripts, pre-process, post-process, PHP scripting, API customization, business logic, request validation]
+difficulty: "intermediate"
---
# Event Scripts
diff --git a/docs/api-generation-and-connections/interacting-with-api.md b/docs/api-generation-and-connections/interacting-with-api.md
index a47d56c..2ab24cc 100644
--- a/docs/api-generation-and-connections/interacting-with-api.md
+++ b/docs/api-generation-and-connections/interacting-with-api.md
@@ -2,6 +2,9 @@
sidebar_position: 3
title: Interacting With the API
id: interacting-with-the-api
+description: "Learn to interact with DreamFactory APIs using HTTP clients for CRUD operations, filtering, joins, and stored procedures"
+keywords: [REST API, CRUD operations, database API, HTTP requests, table joins, stored procedures, query parameters]
+difficulty: "beginner"
---
# Interacting with the API
@@ -12,7 +15,7 @@ The following topic contains examples to help you become familiar with the many
Let's begin by retrieving all of a particular table's records just as was done within the API Docs example. Open your client and in the address bar set the URL to `/api/v2/{service_name}/{table_name}`, replacing `{service_name}` with the name of your API and `{table_name}` with the name of a table found within the database (and to which your API key's associated role has access). For the remainder of this example we use `mysql` as the service name, and in this particular example the table we're querying is called `employees` so the URL looks like this:
-```
+```text
http://localhost/api/v2/_table/employees
```
@@ -28,101 +31,101 @@ With the URL and header in place, request the URL and you should see the table r
The equivalent SQL query would look like this:
-```
+```sql
SELECT * FROM employees;
```
### Limiting results
The previous example returns all records found in the `employees` table. But what if you only wanted to return five or ten records? You can use the `limit` parameter to do so. Modify your URL to look like this:
-```
+```text
http://localhost/api/v2/_table/employees?limit=10
```
The equivalent SQL query would look like this:
-```
+```sql
SELECT * FROM employees LIMIT 10;
```
### Offsetting results
The above example limits your results found in the `employees` table to 10, but what if you want to select records 11 - 20? You would use the `offset` parameter like this:
-```
+```text
http://localhost/api/v2/_table/employees?limit=10&offset=10
```
The equivalent SQL query would look like this:
-```
+```sql
SELECT * FROM employees LIMIT 10 OFFSET 10;
```
### Ordering results
You can order results by any column using the `order` parameter. For instance to order the `employees` tab by the `emp_no` field, modify your URL to look like this:
-```
+```text
http://localhost/api/v2/_table/employees?order=emp_no
```
The equivalent SQL query looks like this:
-```
+```sql
SELECT * FROM employees ORDER BY emp_no;
```
To order in descending fashion, just append `desc` to the `order` string:
-```
+```text
http://localhost/api/v2/_table/employees?order=emp_no%20desc
```
:::note Note
The space separating `emp_no` and `desc` has been HTML encoded. Most programming languages offer HTML encoding capabilities either natively or through a third-party library so there's no need for you to do this manually within your applications. The equivalent SQL query looks like this:
:::
-```
+```sql
SELECT * FROM employees ORDER BY emp_no DESC;
```
### Selecting specific fields
Often you only require a few of the fields found in a table. To limit the fields returned, use the `fields` parameter:
-```
+```text
http://localhost/api/v2/_table/employees?fields=emp_no%2Clast_name
```
The equivalent SQL query looks like this:
-```
+```sql
SELECT emp_no, last_name FROM employees;
```
### Filtering records by condition
You can filter records by a particular condition using the `filter` parameter. For instance to return only those records having a `gender` equal to `M`, set the `filter` parameter like so:
-```
+```text
http://localhost/api/v2/_table/employees?filter=(gender=M)
```
The equivalent SQL query looks like this:
-```
+```sql
SELECT * FROM employees where gender='M';
```
You're free to use any of the typical comparison operators, such as `LIKE`:
-```
+```text
http://localhost/api/v2/_table/employees?filter=(last_name%20like%20G%25)
```
The equivalent SQL query looks like this:
-```
+```sql
SELECT * FROM employees where last_name LIKE 'G%';
```
### Combining parameters
The REST API's capabilities really begin to shine when combining multiple parameters together. For example, let's query the `employees` table to retrieve only those records having a `last_name` beginning with `G`, ordering the results by `emp_no`:
-```
+```text
http://localhost/api/v2/_table/employees?filter=(last_name%20like%20G%25)&order=emp_no
```
The equivalent SQL query looks like this:
-```
+```sql
SELECT * FROM employees where last_name LIKE 'G%' ORDER BY emp_no;
```
### Querying by primary key
You may want to select a specific record using a column that uniquely defines it. Often (but not always) this unique value is the *primary key*. You can retrieve a record using its primary key by appending the value to the URL like so:
-```
+```text
/api/v2/_table/supplies/45
```
The equivalent SQL query looks like this:
-```
+```sql
SELECT * FROM supplies where id = 5;
```
If you'd like to use this URL format to search for another unique value not defined as a primary key, you must also pass along the `id_field` and `id_type` fields like so:
-```
+```text
/api/v2/_table/employees/45abchdkd?id_field=guid&id_type=string
```
### Joining tables
@@ -132,16 +135,16 @@ One of DreamFactory's most interesting database-related features is the automati
Using these aliases along with the `related` parameter we can easily return sets of joined records via the API. For instance, the following URI would be used to join the `employees` and `departments` tables together:
-```
+```text
/api/v2/mysql/_table/employees?related=dept_emp_by_emp_no
```
The equivalent SQL query looks like this:
-```
+```sql
SELECT * FROM employees
LEFT JOIN departments on employees.emp_no = departments.emp_no;
```
The joined results are presented within a JSON array having a name matching that of the alias:
-```
+```json
{
"emp_no": 10001,
"birth_date": "1953-09-02",
@@ -164,11 +167,11 @@ The joined results are presented within a JSON array having a name matching that
### Inserting records
To insert a record, send a `POST` request to the API, passing along a JSON-formatted payload. For instance, to add a new record to the `supplies` table, send a `POST` request to the following URI:
-```
+```text
/api/v2/mysql/_table/supplies
```
The body payload would look like this:
-```
+```json
{
"resource": [
{
@@ -178,7 +181,7 @@ The body payload would look like this:
}
```
If the request is successful, DreamFactory returns a `200` status code and a response containing the record's primary key:
-```
+```json
{
"resource": [
{
@@ -214,7 +217,7 @@ The table schemas look like this:
Remember from the last example that DreamFactory creates convenient join aliases which can be used in conjunction with the `related` parameter. In this case, that alias is `locations_by_supply_id`. To create the relationship alongside the new `supplies` record, use that alias to nest the location name within the payload, as demonstrated here:
-```
+```json
{
"resource": [
{
@@ -229,11 +232,11 @@ Remember from the last example that DreamFactory creates convenient join aliases
}
```
With the payload sorted out, all that remains is to make a request to the `supplies` table endpoint:
-```
+```text
/api/v2/mysql/_table/supplies
```
If the nested insert is successful, a `200` status code is returned along with the primary key ID of the newly inserted `supplies` record:
-```
+```json
{
"resource": [
{
@@ -254,7 +257,7 @@ Let's work through update examples involving each method.
#### Updating records with PUT
When updating records with `PUT` you must send along *all* of the record attributes within the request payload:
-```
+```json
{
"resource": [
{
@@ -269,11 +272,11 @@ When updating records with `PUT` you must send along *all* of the record attribu
}
```
With the payload in place, send a `PUT` request to the `employees` table endpoint:
-```
+```text
/api/v2/mysql/_table/employees
```
If successful, DreamFactory returns a `200` status code and a response body containing the primary key of the updated record:
-```
+```json
{
"resource": [
{
@@ -283,24 +286,24 @@ If successful, DreamFactory returns a `200` status code and a response body cont
}
```
The equivalent SQL query looks like this:
-```
+```sql
UPDATE supplies SET first_name = 'Johnny', last_name = 'Football',
birthdate = '1900-12-15', gender = 'm', hire_date = '2007-01-01' WHERE emp_no = 500015;
```
#### Updating records with PATCH
To update one or more (but not all) attributes associated with a particular record found in the `supplies` table, send a `PATCH` request to the `supplies` table endpoint, accompanied by the primary key:
-```
+```text
/api/v2/mysql/_table/supplies/8
```
Suppose the `supplies` table includes attributes such as `name`, `description`, and `purchase_date`, but we only want to modify the `name` value. The JSON request body would look like this:
-```
+```json
{
"name": "Silver Stapler"
}
```
If successful, DreamFactory returns a `200` status code and a response body containing the primary key of the updated record:
-```
+```json
{
"id": 8
}
@@ -312,11 +315,11 @@ The equivalent SQL query looks like this:
### Deleting records
To delete a record, send a `DELETE` request to the table endpoint associated with the record you'd like to delete. For instance, to delete a record from the `employees` table, reference this URL:
-```
+```text
/api/v2/mysql/_table/employees/500016
```
If deletion is successful, DreamFactory returns a 200 status code with a response body containing the deleted record's primary key:
-```
+```json
{
"resource": [
{
@@ -326,7 +329,7 @@ If deletion is successful, DreamFactory returns a 200 status code with a respons
}
```
The equivalent SQL query looks like this:
-```
+```sql
DELETE FROM employees WHERE emp_no = 500016;
```
@@ -347,14 +350,14 @@ Procedures can use input parameters ('IN') and output parameters ('OUT'), as wel
### Listing available stored procedures
The following call lists the available stored procedures, based on role access allowed:
-```
+```text
GET http(s):///api/v2//_proc
```
### Getting stored procedure details
We can use the `ids` url parameter and pass a comma delimited list of resource names to retrieve details about each of the stored procedures. For example if you have a stored procedure named `getCustomerByLastName` a GET call to `http(s):///api/v2/?ids=getCustomerByLastName` returns the following:
-```
+```json
{
"resource": [
{
@@ -382,7 +385,6 @@ We can use the `ids` url parameter and pass a comma delimited list of resource n
}
]
}
-
```
### Calling a stored procedure
@@ -390,19 +392,19 @@ We can use the `ids` url parameter and pass a comma delimited list of resource n
#### Using GET
When passing no payload is required, any IN or INOUT parameters can be sent by passing the values in the order required inside parentheses:
-```
+```text
/api/v2//_proc/myproc(val1, val2, val3)
```
Or as URL parameters by parameter name:
-```
+```text
/api/v2//_proc/myproc?param1=val1¶m2=val2¶m3=val3
```
In the below example, there is a stored procedure `getUsernameByDepartment` which takes two input parameters, a department code, and a userID. Making the following call:
-```
+```text
/api/v2//_proc/getUserNameByDepartment(AB,1234)
```
In the above example, AB is the department code and 1234 is the userID, which returns:
-```
+```json
{
"userID": "1234",
"username": "Tomo"
@@ -412,7 +414,7 @@ In the above example, AB is the department code and 1234 is the userID, which re
#### Using POST
If a payload is required, i.e. passing values that are not url compliant, or passing schema formatting data, include the parameters directly in order. The same call as above can be made with a POST request with the following in the body:
-```
+```json
{
"params": ["AB", 1234]
}
@@ -430,7 +432,7 @@ _schema_ - When a result set of records is returned from the call, the server us
_wrapper_ - Just like the URL parameter, the wrapper designation can be passed in the posted data.
Request with formatting configuration:
-```
+```json
{
"schema": {
"id": "integer",
@@ -440,7 +442,7 @@ Request with formatting configuration:
}
```
Response without formatting:
-```
+```json
{
"resource": [
{
@@ -460,7 +462,7 @@ Response without formatting:
}
```
Response with formatting applied:
-```
+```json
{
"data": [
{
@@ -485,7 +487,7 @@ Response with formatting applied:
SQL Server has the ability to perform column level encryption using symmetric keys which can be particularly useful for storing sensitive information such as passwords. A good example of how to do so can be found [here](https://www.sqlshack.com/an-overview-of-the-column-level-sql-server-encryption/)
Typically, you would then decrypt this column (assuming the user has access to the certificate) with a statement in your sql server workbench such as:
-```
+```sql
OPEN SYMMETRIC KEY SymKey
DECRYPTION BY CERTIFICATE ;
@@ -497,7 +499,7 @@ FROM SalesLT.Address;
Now, we cannot call our table endpoint (e.g `/api/v2//_table/`) and add this logic with DreamFactory, however we could put the same logic in a stored procedure, and have DreamFactory call that to return our decrypted result. As long as the SQLServer user has permissions to the certificate used for encryption, they are able to decrypt the field. You could then use [roles](/system-settings/dreamfactory-platform-apis/) to make sure only certain users have access to this stored procedure.
The stored procedure looks something like this:
-```
+```sql
CREATE PROCEDURE dbo.
AS
BEGIN
@@ -505,7 +507,7 @@ BEGIN
OPEN SYMMETRIC KEY SymKey
DECRYPTION BY CERTIFICATE ;
- SELECT , CONVERT(nvarchar, DecryptByKey()) AS 'decrypted'
+ SELECT , CONVERT(nvarchar, DecryptByKey()) AS 'decrypted'
FROM ;
END
return;
diff --git a/docs/getting-started/installing-dreamfactory/docker-installation.md b/docs/getting-started/installing-dreamfactory/docker-installation.md
index 4676f68..766c05b 100644
--- a/docs/getting-started/installing-dreamfactory/docker-installation.md
+++ b/docs/getting-started/installing-dreamfactory/docker-installation.md
@@ -2,6 +2,9 @@
sidebar_position: 3
title: Docker Installation
id: docker-installation
+description: Install DreamFactory using Docker and docker-compose with MySQL, Redis, and a sample PostgreSQL database for testing.
+keywords: [Docker, docker-compose, DreamFactory installation, container deployment, NGINX, PHP, MySQL, Redis]
+difficulty: beginner
---
# Docker installation
diff --git a/docs/introduction/introducing-rest-dreamfactory.md b/docs/introduction/introducing-rest-dreamfactory.md
index b6c70ff..94619c2 100644
--- a/docs/introduction/introducing-rest-dreamfactory.md
+++ b/docs/introduction/introducing-rest-dreamfactory.md
@@ -2,6 +2,9 @@
sidebar_position: 1
title: Introducing REST and DreamFactory
id: introducing-rest-and-dreamfactory
+description: Learn REST API fundamentals and how DreamFactory automates API generation, security, documentation, and business logic integration.
+keywords: [REST API, HTTP methods, GET POST PUT DELETE, API basics, DreamFactory overview, API automation, RESTful services]
+difficulty: beginner
---
# Introducing REST and DreamFactory
@@ -51,7 +54,7 @@ A proper REST API URL pattern implementation is centered around the *resource* (
GET /api/v2/employees
If the endpoint exists and records are found, the REST API server responds with a `200` status code and JSON-formatted results. Here's an example response returned by DreamFactory:
-```
+```json
{
"resource": [
{
@@ -78,7 +81,7 @@ This is not RESTful because the implementer has incorporated an action into the
`GET /api/v2/employees/42`
The addition of an ID (often but not always a resource's primary key) indicates the client is interested in retrieving the employee record associated with a unique identifier which has been assigned the value `42`. The JSON response might look like this:
-```
+```json
{
"id": 42,
"first_name": "Claudi",
@@ -91,7 +94,7 @@ Many REST API implementations, DreamFactory included, support the passage of que
`GET /api/v2/employees/42?fields=first_name`
The response would look something like this:
-```
+```json
{
"first_name": "Claudi"
}
@@ -106,7 +109,7 @@ If you want to insert a new record into the `employees` table, then the `POST` m
`POST /api/v2/employees`
Of course, the request must be accompanied by the data to be created. This is passed along by the request body and might look like this:
-```
+```json
{
"resource": [
{
@@ -129,7 +132,7 @@ When updating resources with `PUT` you send a `PUT` request like this:
`PUT /api/v2/employees`
You must send *all* of the resource attributes within the request payload:
-```
+```json
{
"resource": [
{
@@ -146,7 +149,7 @@ To only update one or more (but not all) attributes associated with a particular
`/api/v2/employees/42`
If the `employees` table includes attributes such as `first_name`, `last_name`, and `employee_id`, but we only want to modify the `first_name` value. The JSON request body would look like this:
-```
+```json
{
"resource": [
{
diff --git a/docs/introduction/introduction.md b/docs/introduction/introduction.md
index da05a44..b1e62b4 100644
--- a/docs/introduction/introduction.md
+++ b/docs/introduction/introduction.md
@@ -3,6 +3,9 @@ sidebar_position: 1
title: Introduction
id: introduction
slug: /
+description: DreamFactory is an open-source REST API platform that auto-generates secure, documented APIs for databases, files, and services.
+keywords: [DreamFactory, REST API, API platform, database API, API generation, open source, API documentation, enterprise API]
+difficulty: beginner
---
# Welcome to DreamFactory Documentation
diff --git a/docs/system-settings/the-system-api/01-system-api-brief.md b/docs/system-settings/the-system-api/01-system-api-brief.md
index 29c0501..f17f6ed 100644
--- a/docs/system-settings/the-system-api/01-system-api-brief.md
+++ b/docs/system-settings/the-system-api/01-system-api-brief.md
@@ -2,6 +2,9 @@
sidebar_position: 1
title: Using the System APIs
id: using-the-system-apis
+description: Programmatically manage DreamFactory users, services, roles, and API keys through REST System APIs for DevOps automation.
+keywords: [System API, DreamFactory administration, user management, service management, role management, API automation, DevOps]
+difficulty: intermediate
---
# Using the System APIs
@@ -44,7 +47,7 @@ To see the API calls that DreamFactory makes:
When you create a user through the admin console, you'll see a call like this:
**Request:**
-```
+```http
POST /api/v2/system/user
Headers:
X-DreamFactory-Session-Token: your-session-token
diff --git a/docs/system-settings/the-system-api/02-user-management.md b/docs/system-settings/the-system-api/02-user-management.md
index 91114bd..50d17ee 100644
--- a/docs/system-settings/the-system-api/02-user-management.md
+++ b/docs/system-settings/the-system-api/02-user-management.md
@@ -2,6 +2,9 @@
sidebar_position: 2
title: User Management
id: user-management
+description: "Manage users and admins via the System API with endpoints for creating, updating, and deleting accounts"
+keywords: [user management, admin API, system API, user creation, user deletion, email invitation]
+difficulty: "intermediate"
---
# User Management
@@ -22,7 +25,7 @@ curl -X GET "https://{url}/api/v2/system/user" -H "accept: application/json" \
You can retrieve an individual user / admin's details using the `?ids=` parameter. If you don't know the id number off hand, you can filter by any field which you do know, such as an email address by using the filter parameter. For example:
-```
+```text
https://{url}/api/v2/system/user?filter=email=tomo@example.com
```
diff --git a/docs/system-settings/the-system-api/03-service-management.md b/docs/system-settings/the-system-api/03-service-management.md
index e8ae54f..83b71e2 100644
--- a/docs/system-settings/the-system-api/03-service-management.md
+++ b/docs/system-settings/the-system-api/03-service-management.md
@@ -2,6 +2,9 @@
sidebar_position: 3
title: Service Management
id: service-management
+description: "Create and manage API services programmatically using DreamFactory's System API for automated deployments"
+keywords: [service management, system API, API automation, service types, database API, scripted deployment]
+difficulty: "intermediate"
---
# Service Management
@@ -52,7 +55,7 @@ This will return a rather lengthy response containing the names and configuratio
If you just want to retrieve a list of service type names, issue the same GET request but with the `fields=name` parameter attached:
-```
+```text
/api/v2/system/service_type?fields=name
```
@@ -187,13 +190,13 @@ After submitting a successful request, a 201 Created status code is returned alo
To retrieve configuration details about a specific API, issue a GET request to `/api/v2/system/service`. You can pass along either an API ID or the API name (namespace). For instance to retrieve a service configuration by ID, you'll pass the ID like this:
-```
+```text
/api/v2/system/service/8
```
It is likely more natural to reference an API by its namespace. You can pass the name in using the filter parameter:
-```
+```text
/api/v2/system/service?filter=name=mysql
```
@@ -311,12 +314,12 @@ For performance purposes DreamFactory caches all service definitions so the conf
To clear the cache for a specific service, issue a DELETE request to the following URI, appending the service ID to it:
-```
+```text
/api/v2/system/admin/session/8
```
To clear the cache for all defined services, issue a DELETE request to the following URI:
-```
+```text
/api/v2/system/admin/session
```
diff --git a/docs/system-settings/the-system-api/04-role-management.md b/docs/system-settings/the-system-api/04-role-management.md
index 9e4a2cf..3bb68d6 100644
--- a/docs/system-settings/the-system-api/04-role-management.md
+++ b/docs/system-settings/the-system-api/04-role-management.md
@@ -2,6 +2,9 @@
sidebar_position: 4
title: Role Management
id: role-management
+description: "Create and configure roles via the System API using verb masks to control API endpoint access permissions"
+keywords: [role management, system API, verb mask, permissions, RBAC, access control, role assignment]
+difficulty: "advanced"
---
# Role Management
diff --git a/docs/system-settings/the-system-api/05-api-key-management.md b/docs/system-settings/the-system-api/05-api-key-management.md
index 811495e..6d45a13 100644
--- a/docs/system-settings/the-system-api/05-api-key-management.md
+++ b/docs/system-settings/the-system-api/05-api-key-management.md
@@ -2,6 +2,9 @@
sidebar_position: 5
title: API Key Management
id: api-key-management
+description: "Manage API keys programmatically via the System API and create bulk automation scripts for database fields"
+keywords: [API key management, system API, app management, bulk actions, scripted services, automation]
+difficulty: "advanced"
---
# API Key Management
@@ -135,7 +138,7 @@ You can add an id number of a role if you would like a default role for your app
There is a useful DreamFactory feature that allows the administrator to add a database function to a column so when that column is retrieved by the API, the function runs in its place. For instance, imagine if you want to change the format of the date field, you could use ORACLE's `TO_DATE()` function to do that:
-```
+```sql
TO_DATE({value}, 'DD-MON-YY HH.MI.SS AM')
```