mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-03-27 10:13:05 +01:00
149 lines
4.0 KiB
Python
149 lines
4.0 KiB
Python
from typing import Any
|
|
from typing import Dict
|
|
|
|
import requests
|
|
|
|
API_SERVER_URL = "http://localhost:3000" # Adjust this to your Danswer server URL
|
|
HEADERS = {"Content-Type": "application/json"}
|
|
API_KEY = "danswer-api-key" # API key here, if auth is enabled
|
|
|
|
|
|
def create_connector(
|
|
name: str,
|
|
source: str,
|
|
input_type: str,
|
|
connector_specific_config: Dict[str, Any],
|
|
is_public: bool = True,
|
|
groups: list[int] | None = None,
|
|
) -> Dict[str, Any]:
|
|
connector_update_request = {
|
|
"name": name,
|
|
"source": source,
|
|
"input_type": input_type,
|
|
"connector_specific_config": connector_specific_config,
|
|
"is_public": is_public,
|
|
"groups": groups or [],
|
|
}
|
|
|
|
response = requests.post(
|
|
url=f"{API_SERVER_URL}/api/manage/admin/connector",
|
|
json=connector_update_request,
|
|
headers=HEADERS,
|
|
)
|
|
response.raise_for_status()
|
|
return response.json()
|
|
|
|
|
|
def create_credential(
|
|
name: str,
|
|
source: str,
|
|
credential_json: Dict[str, Any],
|
|
is_public: bool = True,
|
|
groups: list[int] | None = None,
|
|
) -> Dict[str, Any]:
|
|
credential_request = {
|
|
"name": name,
|
|
"source": source,
|
|
"credential_json": credential_json,
|
|
"admin_public": is_public,
|
|
"groups": groups or [],
|
|
}
|
|
|
|
response = requests.post(
|
|
url=f"{API_SERVER_URL}/api/manage/credential",
|
|
json=credential_request,
|
|
headers=HEADERS,
|
|
)
|
|
response.raise_for_status()
|
|
return response.json()
|
|
|
|
|
|
def create_cc_pair(
|
|
connector_id: int,
|
|
credential_id: int,
|
|
name: str,
|
|
access_type: str = "public",
|
|
groups: list[int] | None = None,
|
|
) -> Dict[str, Any]:
|
|
cc_pair_request = {
|
|
"name": name,
|
|
"access_type": access_type,
|
|
"groups": groups or [],
|
|
}
|
|
|
|
response = requests.put(
|
|
url=f"{API_SERVER_URL}/api/manage/connector/{connector_id}/credential/{credential_id}",
|
|
json=cc_pair_request,
|
|
headers=HEADERS,
|
|
)
|
|
response.raise_for_status()
|
|
return response.json()
|
|
|
|
|
|
def main() -> None:
|
|
# Create a Web connector
|
|
web_connector = create_connector(
|
|
name="Example Web Connector",
|
|
source="web",
|
|
input_type="load_state",
|
|
connector_specific_config={
|
|
"base_url": "https://example.com",
|
|
"web_connector_type": "recursive",
|
|
},
|
|
)
|
|
print(f"Created Web Connector: {web_connector}")
|
|
|
|
# Create a credential for the Web connector
|
|
web_credential = create_credential(
|
|
name="Example Web Credential",
|
|
source="web",
|
|
credential_json={}, # Web connectors typically don't need credentials
|
|
is_public=True,
|
|
)
|
|
print(f"Created Web Credential: {web_credential}")
|
|
|
|
# Create CC pair for Web connector
|
|
web_cc_pair = create_cc_pair(
|
|
connector_id=web_connector["id"],
|
|
credential_id=web_credential["id"],
|
|
name="Example Web CC Pair",
|
|
access_type="public",
|
|
)
|
|
print(f"Created Web CC Pair: {web_cc_pair}")
|
|
|
|
# Create a GitHub connector
|
|
github_connector = create_connector(
|
|
name="Example GitHub Connector",
|
|
source="github",
|
|
input_type="poll",
|
|
connector_specific_config={
|
|
"repo_owner": "example-owner",
|
|
"repo_name": "example-repo",
|
|
"include_prs": True,
|
|
"include_issues": True,
|
|
},
|
|
)
|
|
print(f"Created GitHub Connector: {github_connector}")
|
|
|
|
# Create a credential for the GitHub connector
|
|
github_credential = create_credential(
|
|
name="Example GitHub Credential",
|
|
source="github",
|
|
credential_json={"github_access_token": "your_github_access_token_here"},
|
|
is_public=True,
|
|
)
|
|
print(f"Created GitHub Credential: {github_credential}")
|
|
|
|
# Create CC pair for GitHub connector
|
|
github_cc_pair = create_cc_pair(
|
|
connector_id=github_connector["id"],
|
|
credential_id=github_credential["id"],
|
|
name="Example GitHub CC Pair",
|
|
access_type="public",
|
|
)
|
|
print(f"Created GitHub CC Pair: {github_cc_pair}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|