# AI Swap APIs

## Connector

Connector is the Schema for the connectors API

&#x20;

| <p> </p><p>Field</p>        | <p> </p><p>Description</p> | <p> </p><p>Scheme</p> | <p> </p><p>Required</p>      |
| --------------------------- | -------------------------- | --------------------- | ---------------------------- |
| <p> </p><p>metadata</p>     |                            | metav1.ObjectMeta     | <p> </p><p>false</p>         |
| <p> </p><p> </p><p>spec</p> |                            | ConnectorSpec         | <p> </p><p> </p><p>false</p> |

## ConnectorList

ConnectorList contains a list of Connector

&#x20;

| <p> </p><p>Field</p>                    | <p> </p><p>Description</p> | <p> </p><p>Scheme</p> | <p> </p><p>Required</p>              |
| --------------------------------------- | -------------------------- | --------------------- | ------------------------------------ |
| <p> </p><p> </p><p> </p><p>metadata</p> |                            | metav1.ListMeta       | <p> </p><p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p> </p><p>items</p>    |                            | \[]Connector          | <p> </p><p> </p><p> </p><p>true</p>  |

<br>

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

## ConnectorSpec

ConnectorSpec defines the desired state of Connector

&#x20;

| <p> </p><p>Field</p>                   | <p> </p><p>Description</p>                                                                                                                                              | <p> </p><p>Scheme</p>               | <p> </p><p>Required</p>             |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ----------------------------------- |
| <p> </p><p> </p><p> </p><p>enabled</p> | <p> </p><p>Whether this Connector is enabled or not. This allows the admin to create the Connector configuration first, and later enable it by toggling this field.</p> | <p> </p><p> </p><p> </p><p>bool</p> | <p> </p><p> </p><p> </p><p>true</p> |
| <p> </p><p>type</p>                    | <p> </p><p>The type of the Connector.</p>                                                                                                                               | <p> </p><p>string</p>               | <p> </p><p>true</p>                 |
| <p> </p><p> </p><p>displayName</p>     | <p> </p><p>The display name for the Connector. The display name will be shown in the UI of the login page.</p>                                                          | <p> </p><p> </p><p>string</p>       | <p> </p><p> </p><p>true</p>         |
| <p> </p><p>ldap</p>                    |                                                                                                                                                                         | \*LDAPConnectorConfig               | \*LDAPConnectorConfig               |
| <p> </p><p>oidc</p>                    |                                                                                                                                                                         | false                               | false                               |
| <p> </p><p>github</p>                  |                                                                                                                                                                         | \*OIDCConnectorConfig               | \*OIDCConnectorConfig               |
| <p> </p><p>saml</p>                    |                                                                                                                                                                         | false                               | false                               |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

## GithubConnectorConfig

| <p> </p><p>Field</p>                                                                                                                                        | <p> </p><p>Description</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | <p> </p><p>Scheme</p>                                                                                                                                                                                                                                                                                       | <p> </p><p>Required</p>                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <p> </p><p> </p><p>clientSecretRef</p>                                                                                                                      | Reference to secret that contains the client ID and client secret. The secret should contain two keys client- id and client-secret like the following:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | <p> </p><p> </p><p>corev1.LocalObjectReference</p>                                                                                                                                                                                                                                                          | <p> </p><p> </p><p>true</p>                                                                                                                                  |
| <p> </p><p>redirectURI</p>                                                                                                                                  | <p> </p><p>Dex’s issuer URL + “/callback”</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | <p> </p><p>string</p>                                                                                                                                                                                                                                                                                       | <p> </p><p>true</p>                                                                                                                                          |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>orgs</p> | <p> </p><p>Optional organizations and teams, communicated through the “groups” scope.\n\nNOTE: This is an EXPERIMENTAL config option and will likely change.\n\nDex queries the following organizations for group information if the “groups” scope is provided. Group claims are formatted as “(org):(team)”. For example if a user is part of the “engineering” team of the “coreos” org, the group claim would include “coreos:engineering”.\n\nIf orgs are specified in the config then user MUST be a member of at least one of the specified orgs to authenticate with dex.\n\nIf ‘orgs’ is not specified in the config and ‘loadAllGroups’ setting set to true then user authenticate with ALL user’s Github groups. Typical use case for this setup: provide read-only access to everyone and give full permissions if user has ‘my-organization:admins-team’ group claim.\n\nExamples:\n orgs:\n - name: my- organization # Include all teams as claims. - name:</p><p>my-organization-with-teams\n # A white list of teams. Only include group claims for these teams.\n teams:\n - red-team - blue-team</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>\[<a href="https://archive-docs.d2iq.com/dkp/konvoy/1.8/access-authentication/api-reference/#githubconnectorconfigorg">]GithubConnectorConfigOrg</a></p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p> |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p><br></p><p>Field</p>                                      | <p> </p><p>Description</p>                                                                                                                                                                                                                                                                                                                                                               | <p> </p><p>Scheme</p>                                           | <p> </p><p>Required</p>                                      |
| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------ |
| <p> </p><p> </p><p>loadAllGroups</p>                                 | <p> </p><p>Flag which indicates that all user groups and teams should be loaded.</p>                                                                                                                                                                                                                                                                                                     | <p> </p><p> </p><p>\*bool</p>                                   | <p> </p><p> </p><p>false</p>                                 |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>teamNameField</p> | <p> </p><p>Optional choice between ‘name’ (default), ‘slug’, or ‘both’.\n\nAs an example, group claims for member of ‘Site Reliability Engineers’ in Acme organization would yield:\n - \[‘acme:Site Reliability Engineers’] for ‘name’\n - \[‘acme:site-reliability-engineers’] for ‘slug’\n - \[‘acme:Site Reliability Engineers’,\n ‘acme:site-reliability-engineers’] for ‘both’</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p> </p><p>useLoginAsID</p>                          | <p> </p><p>Flag which will switch from using the internal GitHub id to the users handle (@mention) as the user id. It is possible for a user to change their own user name but it is very rare for them to do so.</p>                                                                                                                                                                    | <p> </p><p> </p><p> </p><p>\*bool</p>                           | <p> </p><p> </p><p> </p><p>false</p>                         |
| <p> </p><p>hostName</p>                                              | <p> </p><p>Github API host name. Default to “api.github.com”.</p>                                                                                                                                                                                                                                                                                                                        | <p> </p><p>\*string</p>                                         | <p> </p><p>false</p>                                         |
| <p> </p><p> </p><p> </p><p>rootCASecretRef</p>                       | <p> </p><p>A secret reference to the root CA that will be used for TLS validation. The secret should have type “Opaque” and contain the key “tls.crt”. If not specified, the root CA of the host will be used.</p>                                                                                                                                                                       | <p> </p><p> </p><p> </p><p>\*corev1.LocalObjectReference</p>    | <p> </p><p> </p><p> </p><p>false</p>                         |

GithubConnectorConfigOrg

| <p> </p><p>Field</p>         | <p> </p><p>Description</p>                                                                                                                                                                                                                | <p> </p><p>Scheme</p>            | <p> </p><p>Required</p>      |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ---------------------------- |
| <p> </p><p> </p><p>name</p>  | <p> </p><p>Organization name in github (not slug, full name). Only users in this github organization can authenticate.</p>                                                                                                                | <p> </p><p> </p><p>string</p>    | <p> </p><p> </p><p>true</p>  |
| <p> </p><p> </p><p>teams</p> | <p> </p><p>Names of teams in a github organization. A user will be able to authenticate if they are members of at least one of these teams. Users in the organization can authenticate if this field is omitted from the config file.</p> | <p> </p><p> </p><p>\[]string</p> | <p> </p><p> </p><p>false</p> |

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

<br>

## LDAPConnectorConfig

This config for LDAP is derived from the Config Structure

&#x20;

| <p> </p><p>Field</p>                                         | <p> </p><p>Description</p>                                                                                                                                                                                                                        | <p> </p><p>Scheme</p>                                                | <p> </p><p>Required</p>                              |
| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------- |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p>host</p>          | <p> </p><p>Host and optional port of the LDAP server in the form host:port. If the port is not supplied, it will be guessed based</p><p>on insecureNoSSL,</p><p>and startTLS fields. 389 for insecure or StartTLS connections, 636 otherwise.</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p>string</p>                | <p> </p><p> </p><p> </p><p> </p><p> </p><p>true</p>  |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p>insecureNoSSL</p> | <p> </p><p>Following field is required if the LDAP host is not using TLS (port 389). Because this option inherently leaks passwords to anyone on the same network as dex, THIS OPTION MAY BE REMOVED WITHOUT WARNING IN A FUTURE RELEASE.</p>     | <p> </p><p> </p><p> </p><p> </p><p> </p><p>\*bool</p>                | <p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p> </p><p> </p><p>insecureSkipVerify</p>    | <p> </p><p>If a custom certificate isn’t provide, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used outside of explorative phases.</p>                                                   | <p> </p><p> </p><p> </p><p> </p><p>\*bool</p>                        | <p> </p><p> </p><p> </p><p> </p><p>false</p>         |
| <p> </p><p> </p><p> </p><p> </p><p>startTLS</p>              | <p> </p><p>Connect to the insecure port then issue a StartTLS command to negotiate a secure connection. If unsupplied secure connections will use the LDAPS protocol.</p>                                                                         | <p> </p><p> </p><p> </p><p> </p><p>\*bool</p>                        | <p> </p><p> </p><p> </p><p> </p><p>false</p>         |
| <p> </p><p> </p><p> </p><p> </p><p>rootCASecretRef</p>       | <p> </p><p>A secret reference to the root CA that will be used for TLS validation. The secret should have type “Opaque” and contain the key “tls.crt”. If not specified, the root CA of the host will be used.</p>                                | <p> </p><p> </p><p> </p><p> </p><p>\*corev1.LocalObjectReference</p> | <p> </p><p> </p><p> </p><p> </p><p>false</p>         |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p><br></p><p>Field</p>                                              | <p> </p><p>Description</p>                                                                                                                                                                                                                                                                                                                        | <p> </p><p>Scheme</p>                                                                        | <p> </p><p>Required</p>                                              |
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p>bindDN</p>                        | <p> </p><p>The name of the application service account to authenticate with the LDAP server. The connector uses the specified service account search for users and groups. Not required if the LDAP server provides access for anonymous auth.</p>                                                                                                | <p> </p><p> </p><p> </p><p> </p><p> </p><p>\*string</p>                                      | <p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p>                 |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>bindSecretRef</p> | <p> </p><p>A secret reference to the password of the application service account to authenticate with the LDAP server. The connector uses the specified service account search for users and groups. Not required if the LDAP server provides access for</p><p>anonymous auth. The secret should contain the key password like the following:</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>\*corev1.LocalObjectReference</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p> |
| <p> </p><p>userSearch</p>                                                    | <p> </p><p>User search queries for users.</p>                                                                                                                                                                                                                                                                                                     | \*LDAPConnectorConfigUserSearch                                                              | <p> </p><p>false</p>                                                 |
| <p> </p><p>groupSearch</p>                                                   | <p> </p><p>Group search queries for groups given a user entry.</p>                                                                                                                                                                                                                                                                                |                                                                                              | <p> </p><p>false</p>                                                 |

&#x20;

&#x20;

## LDAPConnectorConfigGroupSearch

| <p> </p><p>Field</p>          | <p> </p><p>Description</p>                                                                                                      | <p> </p><p>Scheme</p>           | <p> </p><p>Required</p>      |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ---------------------------- |
| <p> </p><p> </p><p>baseDN</p> | <p> </p><p>BaseDN to start the search from. It will translate to the query</p><p> </p><p>“(&(objectClass=group)(member=))”.</p> | <p> </p><p> </p><p>string</p>   | <p> </p><p> </p><p>true</p>  |
| <p> </p><p> </p><p>filter</p> | <p> </p><p>Optional filter to apply when searching the directory. For example</p><p> </p><p>“(objectClass=posixGroup)”</p>      | <p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p>scope</p>  | Can either be sub or one. sub searches the whole sub tree. one only searches one level. Default to sub if not specified.        | <p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p>false</p> |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p><br></p><p>Field</p>         | <p> </p><p>Description</p>                                                                                                                                                                                                                                                                                        | <p> </p><p>Scheme</p>                   | <p> </p><p>Required</p>              |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------------------------------------ |
| <p> </p><p> </p><p> </p><p>userAttr</p> | <p> </p><p>Following two fields are used to match a user to a group. It adds an additional requirement to the filter that an attribute in the group match the user’s attribute value. For example that the “members” attribute of a group matches the “uid” of the user. The exact filter being added is: (=)</p> | <p> </p><p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p> </p><p>false</p> |
| <p> </p><p>groupAttr</p>                |                                                                                                                                                                                                                                                                                                                   | <p> </p><p>\*string</p>                 | <p> </p><p>false</p>                 |
| <p> </p><p>nameAttr</p>                 | <p> </p><p>The attribute of the group that represents its name.</p>                                                                                                                                                                                                                                               | <p> </p><p>\*string</p>                 | <p> </p><p>false</p>                 |

&#x20;

&#x20;

LDAPConnectorConfigUserSearch

| <p> </p><p>Field</p>             | <p> </p><p>Description</p>                                                                                                                                             | <p> </p><p>Scheme</p>           | <p> </p><p>Required</p>      |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ---------------------------- |
| <p> </p><p> </p><p>baseDN</p>    | <p> </p><p>BaseDN to start the search from. It will translate to the query</p><p> </p><p>“(&(objectClass=person)(uid=))”. For example “cn=users,dc=example,dc=com”</p> | <p> </p><p> </p><p>string</p>   | <p> </p><p> </p><p>true</p>  |
| <p> </p><p> </p><p>username</p>  | <p> </p><p>Username attribute used for comparing user entries. This will be translated and</p><p> </p><p>combined with the other filter as “(=)”.</p>                  | <p> </p><p> </p><p>string</p>   | <p> </p><p> </p><p>true</p>  |
| <p> </p><p> </p><p>filter</p>    | <p> </p><p>Optional filter to apply when searching the directory. For example</p><p> </p><p>“(objectClass=person)”</p>                                                 | <p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p>scope</p>     | Can either be sub or one. sub searches the whole sub tree. one only searches one level. Default to sub if not specified.                                               | <p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p>idAttr</p>    | <p> </p><p>A mapping of attributes on the user entry to the name claim. Default to “uid” if not</p><p> </p><p>specified.</p>                                           | <p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p>emailAttr</p> | <p> </p><p>A mapping of attributes on the user entry to the email claim. Default to “mail” if not</p><p> </p><p>specified.</p>                                         | <p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p>false</p> |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p><br></p><p>Field</p>    | <p> </p><p>Description</p>                                                                                                                                            | <p> </p><p>Scheme</p>           | <p> </p><p>Required</p>      |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ---------------------------- |
| <p> </p><p>nameAttr</p>            | <p> </p><p>Maps to display name of users.</p>                                                                                                                         | <p> </p><p>\*string</p>         | <p> </p><p>false</p>         |
| <p> </p><p> </p><p>emailSuffix</p> | <p> </p><p>If this is set, the email claim of the id token will be constructed from the idAttr and value of emailSuffix. This should not include the @ character.</p> | <p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p>false</p> |

&#x20;

&#x20;

## OIDCConnectorConfig

| <p> </p><p>Field</p>                                        | <p> </p><p>Description</p>                                                                                                                                                                                                                      | <p> </p><p>Scheme</p>                                      | <p> </p><p>Required</p>                      |
| ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | -------------------------------------------- |
| <p> </p><p> </p><p> </p><p>issuer</p>                       | <p> </p><p>Canonical URL of the provider, also used for configuration discovery. This value MUST match the value returned in the provider config discovery.</p>                                                                                 | <p> </p><p> </p><p> </p><p>string</p>                      | <p> </p><p> </p><p> </p><p>true</p>          |
| <p> </p><p> </p><p> </p><p>clientSecretRef</p>              | <p>Reference to secret that contains the client ID and client secret. The secret should contain two</p><p>keys client-id and client- secret like the following:</p>                                                                             | <p> </p><p> </p><p> </p><p>corev1.LocalObjectReference</p> | <p> </p><p> </p><p> </p><p>true</p>          |
| <p> </p><p>redirectURI</p>                                  | <p> </p><p>Dex’s issuer URL + “/callback”</p>                                                                                                                                                                                                   | <p> </p><p>string</p>                                      | <p> </p><p>true</p>                          |
| <p> </p><p> </p><p> </p><p> </p><p>basicAuthUnsupported</p> | <p> </p><p>Some providers require passing client secret via POST parameters instead of basic auth, despite the OAuth2 RFC discouraging it. Many of these cases are caught internally, but some may need to uncommented the following field.</p> | <p> </p><p> </p><p> </p><p> </p><p>\*bool</p>              | <p> </p><p> </p><p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p>scopes</p>                               | <p> </p><p>List of additional scopes to request in token</p><p> </p><p>response. Defaults to “profile” and “email”</p>                                                                                                                          | <p> </p><p> </p><p>\[]string</p>                           | <p> </p><p> </p><p>false</p>                 |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p><br></p><p>Field</p>                                                                     | <p> </p><p>Description</p>                                                                                                                                                                                                                                                                                                                                                                                                                                            | <p> </p><p>Scheme</p>                                                                 | <p> </p><p>Required</p>                                                              |
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| <p> </p><p> </p><p>hostedDomains</p>                                                                | <p> </p><p>Google supports whitelisting allowed domains when using G Suite (Google Apps). The following field can be set to a list of domains that can log in:</p>                                                                                                                                                                                                                                                                                                    | <p> </p><p> </p><p>\[]string</p>                                                      | <p> </p><p> </p><p>false</p>                                                         |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p>insecureSkipEmailVerified</p>                            | <p> </p><p>Some providers return claims without “email\_verified”, when they had no usage of emails verification in enrollment process or if they are acting as a proxy for another IDP (e.g., AWS Cognito with an upstream SAML IDP). This can be overridden with the below option.</p>                                                                                                                                                                              | <p> </p><p> </p><p> </p><p> </p><p> </p><p>\*bool</p>                                 | <p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p>                                 |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>insecureEnableGroups</p> | <p> </p><p>Groups claims (like the rest of oidc claims through dex) only refresh when the id token is refreshed meaning the regular refresh flow doesn’t update the groups claim. As such by default the oidc connector doesn’t allow groups claims. If you are okay with having potentially stale group claims you can use this option to enable groups claims through the oidc connector on a per-connector basis. This can be overridden with the below option</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>\*bool</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p> |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p>getUserInfo</p>                                          | <p> </p><p>When enabled, the OpenID Connector will query the UserInfo endpoint for additional claims.</p><p>UserInfo claims take priority over claims returned by the IDToken. This option should be used when the IDToken doesn’t contain all the claims requested.</p>                                                                                                                                                                                              | <p> </p><p> </p><p> </p><p> </p><p> </p><p>\*bool</p>                                 | <p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p>                                 |
| <p> </p><p> </p><p>userIDKey</p>                                                                    | <p> </p><p>Configurable key which contains the user id claim. Default to sub if not specified. Claims</p>                                                                                                                                                                                                                                                                                                                                                             | <p> </p><p> </p><p>\*string</p>                                                       | <p> </p><p> </p><p>false</p>                                                         |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p><br></p><p>Field</p>    | <p> </p><p>Description</p>                                                             | <p> </p><p>Scheme</p>           | <p> </p><p>Required</p>      |
| ---------------------------------- | -------------------------------------------------------------------------------------- | ------------------------------- | ---------------------------- |
| <p> </p><p> </p><p>userNameKey</p> | Configurable key which contains the user name claim. Default to name if not specified. | <p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p>false</p> |

SAMLConnectorConfig

| <p> </p><p> </p><p>Field</p>                       | <p> </p><p> </p><p>Description</p>                                                                                                                                                                                                                                                                                         | <p> </p><p> </p><p>Scheme</p>                                 | <p> </p><p>Require d</p>                     |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | -------------------------------------------- |
| <p> </p><p>ssoURL</p>                              | <p> </p><p>SSO URL used for POST value.</p>                                                                                                                                                                                                                                                                                | <p> </p><p>string</p>                                         | <p> </p><p>true</p>                          |
| <p> </p><p> </p><p> </p><p> </p><p>redirectURI</p> | <p> </p><p>Dex’s callback URI (i.e., Dex’s issuer URL + “callback”). If the response</p><p> </p><p>assertion status value contains a Destination element, it must match this</p><p> </p><p>value exactly. This is also used as the expected audience for AudienceRestriction elements if entityIssuer isn’t specified.</p> | <p> </p><p> </p><p> </p><p> </p><p>string</p>                 | <p> </p><p> </p><p> </p><p> </p><p>true</p>  |
| <p> </p><p> </p><p>usernameAttr</p>                | <p> </p><p>Name of attributes in the returned assertions to map to ID token username claim.</p>                                                                                                                                                                                                                            | <p> </p><p> </p><p>string</p>                                 | <p> </p><p> </p><p>true</p>                  |
| <p> </p><p> </p><p>emailAttr</p>                   | <p> </p><p>Name of attributes in the returned assertions to map to ID token email claim.</p>                                                                                                                                                                                                                               | <p> </p><p> </p><p>string</p>                                 | <p> </p><p> </p><p>true</p>                  |
| <p> </p><p> </p><p>groupsAttr</p>                  | <p> </p><p>Name of attributes in the returned assertions to map to ID token group claims.</p>                                                                                                                                                                                                                              | <p> </p><p> </p><p>\*string</p>                               | <p> </p><p> </p><p>false</p>                 |
| <p> </p><p> </p><p> </p><p> </p><p>caSecretRef</p> | <p> </p><p>A secret reference to the CA to use when validating the signature of the</p><p>SAML response. The secret should have type “Opaque” and contain the key “tls.crt”. This field must be specified</p><p>if insecureSkipSignatureValidation is not set.</p>                                                         | <p> </p><p> </p><p> </p><p>\*corev1.LocalObjectRefer ence</p> | <p> </p><p> </p><p> </p><p> </p><p>false</p> |
| <p> </p><p>insecureSkipSignatureValida tion</p>    | <p> </p><p>To skip signature validation, uncomment the following field. This should only be used during testing and may be removed in the future.</p>                                                                                                                                                                      | <p> </p><p> </p><p>\*bool</p>                                 | <p> </p><p> </p><p>false</p>                 |

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p> </p><p><br></p><p>Field</p>                                                   | <p> </p><p> </p><p>Description</p>                                                                                                                                                                                                                                                                                                                                                                                                                              | <p> </p><p> </p><p>Scheme</p>                                                   | <p> </p><p>Require d</p>                                                     |
| ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| <p> </p><p> </p><p> </p><p>entityIssuer</p>                                               | <p> </p><p>Manually specify dex’s Issuer value. When provided dex will include this as the Issuer value during AuthnRequest. It will also override the redirectURI as the required audience when evaluating AudienceRestriction elements in the response.</p>                                                                                                                                                                                                   | <p> </p><p> </p><p> </p><p>\*string</p>                                         | <p> </p><p> </p><p> </p><p>false</p>                                         |
| <p> </p><p>ssoIssuer</p>                                                                  | <p> </p><p>Issuer value expected in the SAML response.</p>                                                                                                                                                                                                                                                                                                                                                                                                      | <p> </p><p>\*string</p>                                                         | <p> </p><p>false</p>                                                         |
| <p> </p><p> </p><p> </p><p> </p><p>groupsDelim</p>                                        | <p> </p><p>Delimiter for splitting groups returned as a single string. By default, multiple groups are assumed to be represented as multiple attributes with the same name. If “groupsDelim” is provided groups are assumed to be represented as a single attribute and the delimiter is used to split the attribute’s value into multiple groups.</p>                                                                                                          | <p> </p><p> </p><p> </p><p> </p><p>\*string</p>                                 | <p> </p><p> </p><p> </p><p> </p><p>false</p>                                 |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>nameIDPolicyFormat</p> | <p> </p><p>Requested format of the NameID. The NameID value is is mapped to the user ID of the user. This can be an abbreviated form of the full URI with just the last component. For example, if this value is set to</p><p>“emailAddress” the format will resolve</p><p>to: urn:oasis:names:tc:SAML:1.1:na meid-format:emailAddress\nIf no value is</p><p>specified, this value defaults</p><p>to: urn:oasis:names:tc:SAML:2.0:na meid-format:persistent</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>\*string</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>false</p> |

## Client

Client is the Schema for the clients API

&#x20;

| <p> </p><p>Field</p>    | <p> </p><p>Description</p> | <p> </p><p>Scheme</p> | <p> </p><p>Required</p> |
| ----------------------- | -------------------------- | --------------------- | ----------------------- |
| <p> </p><p>metadata</p> |                            | metav1.ObjectMeta     | <p> </p><p>false</p>    |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p><br></p><p>Field</p> | <p> </p><p>Description</p> | <p> </p><p>Scheme</p> | <p> </p><p>Required</p>      |
| ------------------------------- | -------------------------- | --------------------- | ---------------------------- |
|                                 |                            |                       |                              |
| <p> </p><p> </p><p>spec</p>     | ClientSpec                 |                       | <p> </p><p> </p><p>false</p> |

## ClientList

ClientList contains a list of Client

&#x20;

| <p> </p><p>Field</p>    | <p> </p><p>Description</p> | <p> </p><p>Scheme</p>    | <p> </p><p>Required</p> |
| ----------------------- | -------------------------- | ------------------------ | ----------------------- |
| <p> </p><p>metadata</p> |                            | metav1.ListMeta          | <p> </p><p>false</p>    |
| <p> </p><p>items</p>    |                            | <p> </p><p>\[]Client</p> | <p> </p><p>true</p>     |

## ClientSpec

ClientSpec defines the desired state of Client OAuth2

&#x20;

| <p> </p><p>Field</p>                           | <p> </p><p>Description</p>                                                                                                                                                                 | <p> </p><p>Scheme</p>                                      | <p> </p><p>Required</p>             |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------- | ----------------------------------- |
| <p> </p><p>displayName</p>                     | <p> </p><p>The display name for the Client</p>                                                                                                                                             | <p> </p><p>string</p>                                      | <p> </p><p>true</p>                 |
| <p> </p><p> </p><p> </p><p>clientSecretRef</p> | <p> </p><p>Reference to a secret that contains the client secret. The secret should contain client-secret key like the following:</p>                                                      | <p> </p><p> </p><p> </p><p>corev1.LocalObjectReference</p> | <p> </p><p> </p><p> </p><p>true</p> |
| <p> </p><p> </p><p> </p><p>redirectURIs</p>    | <p> </p><p>A registered set of redirect URIs. When redirecting from dex to the client, the URI requested to redirect to MUST match one of these values, unless the client is “public”.</p> | <p> </p><p> </p><p> </p><p>\[]string</p>                   | <p> </p><p> </p><p> </p><p>true</p> |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>

<br>

&#x20;

&#x20;

&#x20;

&#x20;

| <p> </p><p><br></p><p>Field</p>                             | <p> </p><p>Description</p>                                                                                                                                                                                                                                                                                                   | <p> </p><p>Scheme</p>                                    | <p> </p><p>Required</p>                             |
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------- |
| <p> </p><p> </p><p> </p><p> </p><p> </p><p>trustedPeers</p> | <p> </p><p>TrustedPeers are a list of peers which can issue tokens on</p><p> </p><p>this client’s behalf using the dynamic</p><p> </p><p>“oauth2:server:client\_id:(client\_id)” scope. If a peer makes such a request, this client’s ID will appear as the ID Token’s audience.\n\nClients inherently trust themselves.</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p>\[]string</p> | <p> </p><p> </p><p> </p><p> </p><p> </p><p>true</p> |
| <p> </p><p> </p><p>public</p>                               | <p> </p><p>Public clients must use either use a redirectURL 127.0.0.1:X</p><p> </p><p>or “urn:ietf:wg:oauth:2.0:oob”</p>                                                                                                                                                                                                     | <p> </p><p> </p><p>\*bool</p>                            | <p> </p><p> </p><p>false</p>                        |
| <p> </p><p>logoURL</p>                                      | <p> </p><p>LogoURL used when displaying this client to the end user.</p>                                                                                                                                                                                                                                                     | <p> </p><p>\*string</p>                                  | <p> </p><p>false</p>                                |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

Thank you,

&#x20;

Accendile Technologies

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://spaceaifinance.gitbook.io/spaceai-technical-documentation-v1.0/ai-swap-apis.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
