# Connector Interfaces

## AppsConnector (from csp-sdk-core)

Your connector class must implement:

| Method                                                 | Purpose                                                                                |
| ------------------------------------------------------ | -------------------------------------------------------------------------------------- |
| getServerType()                                        | Unique string used in requests (e.g., "monetdb", "myapp"). Use lowercase.              |
| validateConnection(ConnectionConfig config)            | Validate credentials/settings; return success/failure.                                 |
| getMetadataService()                                   | Return your MetadataService implementation.                                            |
| getQueryService()                                      | Return your QueryService implementation.                                               |
| getAttributes()                                        | Connection form definition (host, port, username, password, etc.) for the OvalEdge UI. |
| exchangeAttributes(ConnInfo) / exchangeAttributes(Map) | Map between UI attributes and ConnInfo / config.                                       |

{% hint style="info" %}
Additional methods (getExtendedAttributes, exchangeVaultAttributes, getVaultPath, etc.) are used for secrets/vault and governance; you can delegate to BaseAppConnector for common behavior (see monetdb)
{% endhint %}

## MetadataService

| Method                           | Purpose                                                                   |
| -------------------------------- | ------------------------------------------------------------------------- |
| getSupportedObjects()            | List supported entity types (e.g., entities, reports).                    |
| getContainers(ContainersRequest) | List top-level containers (e.g., schemas, companies, accounts).           |
| getObjects(ObjectRequest)        | List objects (e.g., tables, entities, reports) in a container for a type. |
| getFields(FieldsRequest)         | List fields (columns) for a given object.                                 |

## QueryService

| Method                  | Purpose                                                             |
| ----------------------- | ------------------------------------------------------------------- |
| fetchData(QueryRequest) | Execute the query (filters, fields, limit, offset) and return rows. |

***

Copyright © 2026, OvalEdge LLC, Peachtree Corners, GA, USA.
