├── mongodb ├── dev │ └── __init__.py ├── .env-template ├── provider │ ├── client.py │ └── app.py ├── pyproject.toml └── docker-compose.yml ├── redis ├── tests │ └── __init__.py ├── redis-data │ └── README ├── .env-template ├── provider │ ├── app.py │ └── __init__.py ├── pyproject.toml └── docker-compose.yml ├── hackernews ├── tests │ └── __init__.py ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── CODEOWNERS ├── _template_fastapi_ ├── provider │ ├── __init__.py │ ├── exceptions.py │ └── config.py ├── .env-template └── pyproject.toml ├── gdrive ├── .gitignore ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── techcrunch ├── .env-template ├── provider │ ├── provider.py │ ├── __init__.py │ └── app.py └── pyproject.toml ├── atera ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── blogger ├── .gitignore ├── .env-template ├── provider │ ├── provider.py │ ├── __init__.py │ └── app.py └── pyproject.toml ├── coda ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ ├── provider.py │ └── __init__.py ├── jenkins ├── dev │ ├── jenkins-data │ │ └── README │ ├── jenkins-docker-certs │ │ └── README │ └── Dockerfile ├── .env-template └── pyproject.toml ├── .dockerignore ├── notion ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── courier ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── readme ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ ├── provider.py │ └── __init__.py ├── shortcut ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── intercom ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── knowledgeowl ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── wikipedia ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── _template_ ├── .env-template └── pyproject.toml ├── banner.png ├── guru ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── opensearch ├── dev │ └── opensearch.yml ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── agora ├── .env-template ├── pyproject.toml └── provider │ ├── provider.py │ └── __init__.py ├── linear ├── .env-template ├── pyproject.toml └── provider │ ├── provider.py │ └── __init__.py ├── yammer ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── elastic ├── dev │ └── elasticsearch.yml ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── skilljar ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── fireflies ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── youtrack ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── bigquery ├── .env-template ├── credentials.json-template ├── pyproject.toml └── provider │ ├── app.py │ ├── client.py │ └── __init__.py ├── crunchbase ├── .env-template ├── pyproject.toml └── provider │ └── provider.py ├── slack ├── .env-template └── pyproject.toml ├── stackoverflow ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── miro ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── .pre-commit-config.yaml ├── hubspot ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── reuters ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── egnyte ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── freshdesk ├── .env-template ├── pyproject.toml └── provider │ ├── provider.py │ ├── app.py │ └── __init__.py ├── algolia ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── freshservice ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── opsgenie ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── vectara ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── zendesk ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── gcalendar ├── .env-template ├── credentials.json-template ├── provider │ └── app.py └── pyproject.toml ├── gitlab ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── github ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── zulip ├── .env-template ├── pyproject.toml └── provider │ ├── client.py │ ├── app.py │ └── __init__.py ├── klaviyo ├── .env-template ├── provider │ ├── client.py │ └── __init__.py └── pyproject.toml ├── discourse ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── gmail ├── .env-template ├── credentials.json-template ├── pyproject.toml └── provider │ └── app.py ├── pagerduty ├── provider │ ├── enums.py │ ├── provider.py │ └── __init__.py ├── .env-template └── pyproject.toml ├── wordpress ├── .env-template ├── provider │ ├── provider.py │ └── app.py └── pyproject.toml ├── vespa ├── .env-template ├── dev │ ├── launch-and-install.sh │ └── app │ │ └── services.xml ├── pyproject.toml └── provider │ └── __init__.py ├── docusign ├── .env-template └── pyproject.toml ├── kendra ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── asana ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── cockroach ├── .env-template └── pyproject.toml ├── smartsheet ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── freshsales ├── provider │ ├── enums.py │ ├── app.py │ └── __init__.py ├── .env-template └── pyproject.toml ├── medium ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── pinecone ├── .env-template ├── pyproject.toml └── provider │ ├── __init__.py │ └── app.py ├── dropbox ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── agilitycms ├── .env-template ├── provider │ ├── client.py │ └── __init__.py └── pyproject.toml ├── confluence ├── .env-template └── pyproject.toml ├── helpscout ├── .env-template ├── pyproject.toml └── provider │ ├── provider.py │ └── app.py ├── postgres ├── .env-template ├── pyproject.toml └── provider │ ├── provider.py │ └── app.py ├── qdrant ├── .env-template ├── pyproject.toml ├── dev │ └── healthcheck.pl └── provider │ ├── app.py │ └── __init__.py ├── mysql ├── .env-template ├── pyproject.toml ├── docker-compose.yml └── provider │ └── __init__.py ├── outlook ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── weaviate ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── .github ├── workflows │ ├── format.yml │ └── dependabot.yml ├── ISSUE_TEMPLATE │ ├── config.yaml │ ├── bug.yaml │ ├── suggest-new-connector.yaml │ └── improvement.yaml └── PULL_REQUEST_TEMPLATE.md ├── copper ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── solr ├── .env-template └── pyproject.toml ├── basecamp ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── fifteenfive ├── .env-template └── pyproject.toml ├── carbon ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── redshift ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── contentful ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── backstage ├── .env-template └── pyproject.toml ├── jira ├── .env-template ├── config.py ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── servicenow ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── aha ├── .env-template ├── pyproject.toml └── provider │ └── __init__.py ├── yext ├── .env-template ├── pyproject.toml └── provider │ ├── provider.py │ ├── app.py │ └── __init__.py ├── box ├── .env-template ├── pyproject.toml └── provider │ ├── client.py │ ├── app.py │ └── __init__.py ├── .gitignore ├── sharepoint ├── .env-template ├── pyproject.toml └── provider │ └── app.py ├── msteams ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── couchbase ├── .env-template └── pyproject.toml ├── milvus ├── .env-template ├── pyproject.toml └── provider │ ├── app.py │ └── __init__.py ├── snowflake ├── .env-template ├── pyproject.toml └── provider │ └── app.py └── trello ├── .env-template ├── pyproject.toml └── provider ├── app.py └── __init__.py /mongodb/dev/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /redis/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /hackernews/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @cohere-ai/connectors -------------------------------------------------------------------------------- /_template_fastapi_/provider/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gdrive/.gitignore: -------------------------------------------------------------------------------- 1 | credentials.json 2 | token.json 3 | 4 | -------------------------------------------------------------------------------- /techcrunch/.env-template: -------------------------------------------------------------------------------- 1 | TECHCRUNCH_CONNECTOR_API_KEY= 2 | -------------------------------------------------------------------------------- /atera/.env-template: -------------------------------------------------------------------------------- 1 | ATERA_API_KEY= 2 | ATERA_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /blogger/.gitignore: -------------------------------------------------------------------------------- 1 | credentials.json 2 | token.json 3 | 4 | -------------------------------------------------------------------------------- /coda/.env-template: -------------------------------------------------------------------------------- 1 | CODA_API_TOKEN= 2 | CODA_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /jenkins/dev/jenkins-data/README: -------------------------------------------------------------------------------- 1 | folder for jenkins data 2 | -------------------------------------------------------------------------------- /jenkins/dev/jenkins-docker-certs/README: -------------------------------------------------------------------------------- 1 | folder for jenkins certs -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | /**/dev.py 2 | /**/dev/ 3 | /**/docker-compose.yml/ -------------------------------------------------------------------------------- /notion/.env-template: -------------------------------------------------------------------------------- 1 | NOTION_API_TOKEN= 2 | NOTION_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /courier/.env-template: -------------------------------------------------------------------------------- 1 | COURIER_API_TOKEN= 2 | COURIER_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /readme/.env-template: -------------------------------------------------------------------------------- 1 | README_API_KEY= 2 | README_CONNECTOR_API_KEY= 3 | -------------------------------------------------------------------------------- /shortcut/.env-template: -------------------------------------------------------------------------------- 1 | SHORTCUT_API_TOKEN= 2 | SHORTCUT_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /intercom/.env-template: -------------------------------------------------------------------------------- 1 | INTERCOM_ACCESS_TOKEN= 2 | INTERCOM_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /blogger/.env-template: -------------------------------------------------------------------------------- 1 | BLOGGER_USER_ACCOUNT_INFO= 2 | BLOGGER_CONNECTOR_API_KEY= 3 | -------------------------------------------------------------------------------- /hackernews/.env-template: -------------------------------------------------------------------------------- 1 | HACKERNEWS_SEARCH_LIMIT= 2 | HACKERNEWS_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /knowledgeowl/.env-template: -------------------------------------------------------------------------------- 1 | KNOWLEDGEOWL_API_KEY= 2 | KNOWLEDGEOWL_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /wikipedia/.env-template: -------------------------------------------------------------------------------- 1 | WIKIPEDIA_SEARCH_LIMIT= 2 | WIKIPEDIA_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /_template_/.env-template: -------------------------------------------------------------------------------- 1 | TEMPLATE_EXAMPLE_ENV_VAR= 2 | TEMPLATE_CONNECTOR_API_KEY= 3 | -------------------------------------------------------------------------------- /banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cohere-ai/quick-start-connectors/HEAD/banner.png -------------------------------------------------------------------------------- /guru/.env-template: -------------------------------------------------------------------------------- 1 | GURU_USER_EMAIL= 2 | GURU_API_TOKEN= 3 | GURU_CONNECTOR_API_KEY= 4 | -------------------------------------------------------------------------------- /opensearch/dev/opensearch.yml: -------------------------------------------------------------------------------- 1 | plugins.security.disabled: true 2 | http.host: 0.0.0.0 3 | -------------------------------------------------------------------------------- /agora/.env-template: -------------------------------------------------------------------------------- 1 | AGORA_CUSTOMER_ID= 2 | AGORA_CUSTOMER_SECRET= 3 | AGORA_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /linear/.env-template: -------------------------------------------------------------------------------- 1 | LINEAR_API_KEY= 2 | LINEAR_SEARCH_LIMIT= 3 | LINEAR_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /yammer/.env-template: -------------------------------------------------------------------------------- 1 | YAMMER_API_TOKEN= 2 | YAMMER_SEARCH_LIMIT= 3 | YAMMER_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /elastic/dev/elasticsearch.yml: -------------------------------------------------------------------------------- 1 | xpack.security.http.ssl.enabled: false 2 | network.host: 0.0.0.0 3 | -------------------------------------------------------------------------------- /skilljar/.env-template: -------------------------------------------------------------------------------- 1 | SKILLJAR_API_KEY= 2 | SKILLJAR_DOMAIN_NAME= 3 | SKILLJAR_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /fireflies/.env-template: -------------------------------------------------------------------------------- 1 | FIREFLIES_API_KEY= 2 | FIREFLIES_SEARCH_LIMIT= 3 | FIREFLIES_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /youtrack/.env-template: -------------------------------------------------------------------------------- 1 | YOUTRACK_PERMANENT_TOKEN= 2 | YOUTRACK_BASE_URL= 3 | YOUTRACK_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /bigquery/.env-template: -------------------------------------------------------------------------------- 1 | BIGQUERY_TABLE_NAME= 2 | BIGQUERY_COLUMN_NAME= 3 | BIGQUERY_CONNECTOR_API_KEY= 4 | -------------------------------------------------------------------------------- /crunchbase/.env-template: -------------------------------------------------------------------------------- 1 | CRUNCHBASE_API_KEY= 2 | CRUNCHBASE_SEARCH_LIMIT=10 3 | CRUNCHBASE_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /slack/.env-template: -------------------------------------------------------------------------------- 1 | SLACK_OAUTH_ACCESS_TOKEN= 2 | SLACK_CONNECTOR_API_KEY= 3 | SLACK_SEARCH_LIMIT=20 4 | -------------------------------------------------------------------------------- /stackoverflow/.env-template: -------------------------------------------------------------------------------- 1 | STACKOVERFLOW_TEAM= 2 | STACKOVERFLOW_PAT= 3 | STACKOVERFLOW_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /redis/redis-data/README: -------------------------------------------------------------------------------- 1 | This directory is used to persist data in the Redis, inside the Docker container. 2 | 3 | -------------------------------------------------------------------------------- /_template_fastapi_/.env-template: -------------------------------------------------------------------------------- 1 | CONNECTOR_ID= 2 | CONNECTOR_API_KEY= 3 | CLIENT_AUTH_TOKEN= 4 | CLIENT_SEARCH_LIMIT=5 5 | -------------------------------------------------------------------------------- /miro/.env-template: -------------------------------------------------------------------------------- 1 | MIRO_ACCESS_TOKEN= 2 | MIRO_SEARCH_LIMIT=20 3 | MIRO_CONNECTOR_API_KEY= 4 | MIRO_FIELDS_MAPPING= 5 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/psf/black 3 | rev: 24.1.1 4 | hooks: 5 | - id: black -------------------------------------------------------------------------------- /hubspot/.env-template: -------------------------------------------------------------------------------- 1 | HUBSPOT_ACCESS_TOKEN= 2 | HUBSPOT_HUB_ID= 3 | HUBSPOT_CONNECTOR_API_KEY= 4 | HUBSPOT_SEARCH_LIMIT= 5 | -------------------------------------------------------------------------------- /reuters/.env-template: -------------------------------------------------------------------------------- 1 | REUTERS_CLIENT_ID= 2 | REUTERS_CLIENT_SECRET= 3 | REUTERS_AUDIENCE= 4 | REUTERS_CONNECTOR_API_KEY= 5 | 6 | -------------------------------------------------------------------------------- /egnyte/.env-template: -------------------------------------------------------------------------------- 1 | # Change to your domain 2 | EGNYTE_DOMAIN_NAME=mycompany.egnyte.com 3 | EGNYTE_API_KEY= 4 | EGNYTE_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /freshdesk/.env-template: -------------------------------------------------------------------------------- 1 | FRESHDESK_API_KEY= 2 | FRESHDESK_DOMAIN_NAME= 3 | FRESHDESK_TICKET_PARAMETERS= 4 | FRESHDESK_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /algolia/.env-template: -------------------------------------------------------------------------------- 1 | ALGOLIA_APP_ID= 2 | ALGOLIA_INDEX_NAME= 3 | ALGOLIA_DOCUMENT_BASE_URL= 4 | ALGOLIA_API_KEY= 5 | ALGOLIA_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /freshservice/.env-template: -------------------------------------------------------------------------------- 1 | FRESHSERVICE_DOMAIN=https://mydomain.freshservice.com 2 | FRESHSERVICE_API_KEY= 3 | FRESHSERVICE_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /opsgenie/.env-template: -------------------------------------------------------------------------------- 1 | OPSGENIE_DOMAIN_URL= 2 | OPSGENIE_API_KEY= 3 | # Connector Authorization 4 | OPSGENIE_CONNECTOR_API_KEY=abcdefg1234567890 -------------------------------------------------------------------------------- /vectara/.env-template: -------------------------------------------------------------------------------- 1 | VECTARA_CUSTOMER_ID=12345567 2 | VECTARA_CORPUS_ID=1 3 | VECTARA_API_KEY=zwt_xxx 4 | VECTARA_CONNECTOR_API_KEY=1234 5 | -------------------------------------------------------------------------------- /zendesk/.env-template: -------------------------------------------------------------------------------- 1 | ZENDESK_DOMAIN= 2 | ZENDESK_EMAIL= 3 | ZENDESK_API_TOKEN= 4 | ZENDESK_SEARCH_LIMIT= 5 | ZENDESK_CONNECTOR_API_KEY= 6 | -------------------------------------------------------------------------------- /gcalendar/.env-template: -------------------------------------------------------------------------------- 1 | GCALENDAR_SERVICE_ACCOUNT_INFO= 2 | GCALENDAR_SEARCH_LIMIT= 3 | # Connector Authorization 4 | GCALENDAR__CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /gitlab/.env-template: -------------------------------------------------------------------------------- 1 | GITLAB_TOKEN= 2 | GITLAB_SCOPE=projects 3 | GITLAB_RESULTS_PER_PAGE= 4 | GITLAB_SEARCH_URL= 5 | GITLAB_CONNECTOR_API_KEY= 6 | -------------------------------------------------------------------------------- /github/.env-template: -------------------------------------------------------------------------------- 1 | GITHUB_TOKEN= 2 | GITHUB_QUERY_TEMPLATE={query} in:file 3 | GITHUB_SEARCH_LIMIT=5 4 | GITHUB_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /zulip/.env-template: -------------------------------------------------------------------------------- 1 | ZULIP_API_KEY= 2 | ZULIP_BOT_EMAIL=search-bot@mysite.zulipchat.com 3 | ZULIP_SITE=mysite.zulipchat.com 4 | ZULIP_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /klaviyo/.env-template: -------------------------------------------------------------------------------- 1 | KLAVIYO_API_KEY= 2 | KLAVIYO_CAMPAIGNS_CREATED_AFTER= 3 | KLAVIYO_USE_TEMPLATES_FOR_SEARCH=0 4 | KLAVIYO_CONNECTOR_API_KEY=abcdefg1234567890 -------------------------------------------------------------------------------- /discourse/.env-template: -------------------------------------------------------------------------------- 1 | DISCOURSE_API_HOST=https://discourse.example.com/ 2 | DISCOURSE_API_KEY= 3 | DISCOURSE_API_USERNAME=system 4 | DISCOURSE_CONNECTOR_API_KEY= 5 | -------------------------------------------------------------------------------- /gmail/.env-template: -------------------------------------------------------------------------------- 1 | GMAIL_USER_ID=test@example.com 2 | GMAIL_SERVICE_ACCOUNT_INFO= 3 | GMAIL_SEARCH_LIMIT=5 4 | # Connector Authorization 5 | GMAIL_CONNECTOR_API_KEY= 6 | -------------------------------------------------------------------------------- /pagerduty/provider/enums.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class SearchTypes(Enum): 5 | INCIDENTS = "incidents" 6 | USERS = "users" 7 | TEAMS = "teams" 8 | -------------------------------------------------------------------------------- /techcrunch/provider/provider.py: -------------------------------------------------------------------------------- 1 | from .client import get_client 2 | 3 | 4 | def search(query): 5 | client = get_client() 6 | return client.process_search(query) 7 | -------------------------------------------------------------------------------- /wordpress/.env-template: -------------------------------------------------------------------------------- 1 | WORDPRESS_USERNAME= 2 | WORDPRESS_PASSWORD= 3 | WORDPRESS_URL=http://localhost:8000 4 | WORDPRESS_CONNECTOR_API_KEY= 5 | WORDPRESS_SEARCH_LIMIT= 6 | -------------------------------------------------------------------------------- /vespa/.env-template: -------------------------------------------------------------------------------- 1 | VESPA_SERVER_URL=http://localhost:8080 2 | VESPA_CONNECTOR_API_KEY=abcdefg1234567890 3 | VESPA_CONNECTOR_FIELD_MAPPING={"description":"text","name":"title"} 4 | -------------------------------------------------------------------------------- /docusign/.env-template: -------------------------------------------------------------------------------- 1 | DOCUSIGN_IS_PROD_ENV= 2 | DOCUSIGN_ACCESS_TOKEN= 3 | DOCUSIGN_API_ACCOUNT_ID= 4 | DOCUSIGN_FROM_DATE= 5 | DOCUSIGN_TO_DATE= 6 | DOCUSIGN_CONNECTOR_API_KEY= 7 | 8 | 9 | -------------------------------------------------------------------------------- /kendra/.env-template: -------------------------------------------------------------------------------- 1 | AWS_ACCESS_KEY_ID= 2 | AWS_SECRET_ACCESS_KEY= 3 | AWS_DEFAULT_REGION= 4 | KENDRA_INDEX_ID= 5 | KENDRA_SEARCH_LIMIT= 6 | KENDRA_FIELDS_MAPPING= 7 | KENDRA_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /asana/.env-template: -------------------------------------------------------------------------------- 1 | ASANA_AUTH_TYPE= 2 | ASANA_ACCESS_TOKEN= 3 | ASANA_WORKSPACE_GID= 4 | ASANA_TASK_PROPERTIES=[] 5 | ASANA_FIELDS_MAPPING={} 6 | ASANA_SEARCH_LIMIT= 7 | ASANA_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /cockroach/.env-template: -------------------------------------------------------------------------------- 1 | COCKROACH_DATABASE_URL= 2 | COCKROACH_SCHEME_NAME= 3 | COCKROACH_TABLE_NAME= 4 | COCKROACH_FTS_COLUMN= 5 | COCKROACH_FTS_LANG= 6 | COCKROACH_CONNECTOR_FIELDS_MAPPING= 7 | -------------------------------------------------------------------------------- /pagerduty/.env-template: -------------------------------------------------------------------------------- 1 | PAGERDUTY_API_KEY= 2 | # Types that can be searched, all enabled by default 3 | PAGERDUTY_ENABLED_SEARCH_TYPES=["incidents","users","teams"] 4 | PAGERDUTY_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /gdrive/.env-template: -------------------------------------------------------------------------------- 1 | # For Service Account Authentication 2 | GDRIVE_SERVICE_ACCOUNT_INFO= 3 | GDRIVE_CONNECTOR_API_KEY= 4 | # Optional Configuration 5 | GDRIVE_FOLDER_ID= 6 | GDRIVE_SEARCH_LIMIT= 7 | -------------------------------------------------------------------------------- /smartsheet/.env-template: -------------------------------------------------------------------------------- 1 | #API token 2 | SMARTSHEET_ACCESS_TOKEN= 3 | #Search scope 4 | SMARTSHEET_SEARCH_SCOPE= 5 | #Results page size 6 | SMARTSHEET_PAGE_SIZE= 7 | SMARTSHEET_CONNECTOR_API_KEY= 8 | 9 | -------------------------------------------------------------------------------- /freshsales/provider/enums.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class EntityChoices(Enum): 5 | USER = "user" 6 | CONTACT = "contact" 7 | SALES_ACCOUNT = "sales_account" 8 | DEAL = "deal" 9 | -------------------------------------------------------------------------------- /medium/.env-template: -------------------------------------------------------------------------------- 1 | MEDIUM_SEARCH_API_TYPE= 2 | MEDIUM_API_TOKEN= 3 | MEDIUM_GRAPHQL_ENTITIES=["users","tags","posts","publications","lists"] 4 | MEDIUM_CONNECTOR_API_KEY= 5 | MEDIUM_GRAPHQL_SEARCH_LIMIT=10 -------------------------------------------------------------------------------- /pinecone/.env-template: -------------------------------------------------------------------------------- 1 | PINECONE_COHERE_API_KEY= 2 | PINECONE_COHERE_EMBED_MODEL=embed-english-v3.0 3 | PINECONE_API_KEY= 4 | PINECONE_INDEX= 5 | PINECONE_FIELDS_MAPPING= 6 | PINECONE_CONNECTOR_API_KEY= 7 | -------------------------------------------------------------------------------- /dropbox/.env-template: -------------------------------------------------------------------------------- 1 | DROPBOX_ACCESS_TOKEN= 2 | DROPBOX_SEARCH_LIMIT=5 3 | DROPBOX_PATH= 4 | DROPBOX_CONNECTOR_API_KEY= 5 | 6 | # Unstructured 7 | DROPBOX_UNSTRUCTURED_BASE_URL= 8 | DROPBOX_UNSTRUCTURED_API_KEY= -------------------------------------------------------------------------------- /agilitycms/.env-template: -------------------------------------------------------------------------------- 1 | AGILITYCMS_API_DOMAIN=api.aglty.io 2 | AGILITYCMS_API_GUID= 3 | AGILITYCMS_API_KEY= 4 | AGILITYCMS_API_LOCALE= 5 | AGILITYCMS_SEARCH_LIMIT= 6 | AGILITYCMS_CONNECTOR_API_KEY=abcdefg1234567890 -------------------------------------------------------------------------------- /redis/.env-template: -------------------------------------------------------------------------------- 1 | REDIS_HOST= 2 | REDIS_PORT= 3 | REDIS_USER= 4 | REDIS_PASSWORD= 5 | REDIS_INDEX= 6 | REDIS_FIELDS= 7 | REDIS_FIELDS_MAPPING={} 8 | REDIS_SEARCH_LIMIT=10 9 | REDIS_CONNECTOR_API_KEY= 10 | -------------------------------------------------------------------------------- /confluence/.env-template: -------------------------------------------------------------------------------- 1 | CONFLUENCE_USER= 2 | CONFLUENCE_API_TOKEN= 3 | CONFLUENCE_PRODUCT_URL=https://sample.atlassian.net 4 | CONFLUENCE_SEARCH_LIMIT=10 5 | 6 | # Connector Authorization 7 | CONFLUENCE_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /helpscout/.env-template: -------------------------------------------------------------------------------- 1 | # HelpScout Authorization 2 | HELPSCOUT_APP_ID= 3 | HELPSCOUT_APP_SECRET= 4 | # HelpScout search fields 5 | HELPSCOUT_SEARCH_FIELDS=subject,body,tag 6 | HELPSCOUT_CONNECTOR_API_KEY= 7 | 8 | 9 | -------------------------------------------------------------------------------- /postgres/.env-template: -------------------------------------------------------------------------------- 1 | POSTGRES_DSN=postgresql://postgres:password@localhost:5432/bbq_db 2 | POSTGRES_TABLE_NAME=bbq 3 | POSTGRES_FTS_COLUMN=search_vector 4 | POSTGRES_FTS_LANG=english 5 | POSTGRES_CONNECTOR_API_KEY= 6 | -------------------------------------------------------------------------------- /qdrant/.env-template: -------------------------------------------------------------------------------- 1 | QDRANT_CLUSTER_HOST=localhost 2 | QDRANT_CLUSTER_PORT=6333 3 | QDRANT_COLLECTION=bbq 4 | QDRANT_COHERE_APIKEY= 5 | QDRANT_COHERE_EMBED_MODEL=embed-english-light-v2.0 6 | QDRANT_CONNECTOR_API_KEY= 7 | -------------------------------------------------------------------------------- /jenkins/.env-template: -------------------------------------------------------------------------------- 1 | JENKINS_SERVER_URL=http://localhost:8080/ 2 | JENKINS_USER_NAME=ep 3 | JENKINS_API_KEY= 4 | JENKINS_CONNECTOR_API_KEY=abcdefg1234567890 5 | JENKINS_FOLDER_DEPTH= 6 | JENKINS_FOLDER_DEPTH_PER_REQUEST= 7 | -------------------------------------------------------------------------------- /mysql/.env-template: -------------------------------------------------------------------------------- 1 | MYSQL_HOST=mysql 2 | MYSQL_USER=mysql 3 | MYSQL_PASSWORD=password 4 | MYSQL_DATABASE=bbq 5 | MYSQL_TABLE_NAME=bbq 6 | MYSQL_FTS_COLUMNS=id, name, description, features, country 7 | MYSQL_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /outlook/.env-template: -------------------------------------------------------------------------------- 1 | OUTLOOK_GRAPH_AUTH_TYPE= 2 | OUTLOOK_GRAPH_CLIENT_ID= 3 | OUTLOOK_GRAPH_CLIENT_SECRET= 4 | OUTLOOK_GRAPH_TENANT_ID= 5 | OUTLOOK_USER_ID= 6 | OUTLOOK_GRAPH_SEARCH_LIMIT=10 7 | OUTLOOK_CONNECTOR_API_KEY= 8 | -------------------------------------------------------------------------------- /weaviate/.env-template: -------------------------------------------------------------------------------- 1 | WEAVIATE_URL=http://localhost:8080 2 | WEAVIATE_CLASS=BbqProduct 3 | WEAVIATE_CONNECTOR_API_KEY=abcdefg1234567890 4 | WEAVIATE_CONNECTOR_FIELDS_MAPPING={"Name": "title", "full_text": "text", "Url":"url"} 5 | -------------------------------------------------------------------------------- /.github/workflows/format.yml: -------------------------------------------------------------------------------- 1 | name: Format 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | format: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v3 10 | - uses: psf/black@24.1.1 11 | -------------------------------------------------------------------------------- /copper/.env-template: -------------------------------------------------------------------------------- 1 | COPPER_API_TOKEN= 2 | COPPER_API_EMAIL= 3 | COPPER_CONNECTOR_API_KEY= 4 | COPPER_SEARCH_LIMIT= 5 | COPPER_FIELDS_MAPPING={"opportunity.name":"title","opportunity.details":"text","task.name":"title","task.details":"text"} 6 | -------------------------------------------------------------------------------- /solr/.env-template: -------------------------------------------------------------------------------- 1 | SOLR_SERVER_URL=http://localhost:8983 2 | SOLR_COLLECTION=bbq 3 | SOLR_DEFAULT_FIELD=full_text 4 | SOLR_CONNECTOR_API_KEY=abcdefg1234567890 5 | SOLR_CONNECTOR_FIELDS_MAPPING={"Name": "title", "full_text": "text", "Url":"url"} 6 | -------------------------------------------------------------------------------- /basecamp/.env-template: -------------------------------------------------------------------------------- 1 | CONTENTFUL_SPACE_ID= 2 | CONTENTFUL_PREVIEW_ACCESS_TOKEN= 3 | CONTENTFUL_ENVIRONMENT=master 4 | CONTENTFUL_SEARCH_LIMIT=20 5 | CONTENTFUL_CONTENT_TYPE_SEARCH= 6 | CONTENTFUL_FIELDS_MAPPING= 7 | CONTENTFUL_CONNECTOR_API_KEY= 8 | -------------------------------------------------------------------------------- /fifteenfive/.env-template: -------------------------------------------------------------------------------- 1 | # Change to your domain 2 | FIFTEENFIVE_API_URL= 3 | FIFTEENFIVE_API_KEY= 4 | FIFTEENFIVE_CONNECTOR_API_KEY= 5 | FIFTEENFIVE_ALLOWED_ENTITIES=["user","vacation","question","answer","pulse","high-five","objective","review-cycle"] 6 | -------------------------------------------------------------------------------- /opensearch/.env-template: -------------------------------------------------------------------------------- 1 | OPENSEARCH_HOST= 2 | OPENSEARCH_PORT= 3 | OPENSEARCH_USER= 4 | OPENSEARCH_PASS= 5 | OPENSEARCH_INDEX= 6 | OPENSEARCH_USE_SSL= 7 | OPENSEARCH_SEARCH_LIMIT= 8 | OPENSEARCH_FIELDS_MAPPING= 9 | OPENSEARCH_CONNECTOR_API_KEY= 10 | -------------------------------------------------------------------------------- /carbon/.env-template: -------------------------------------------------------------------------------- 1 | CARBON_API_KEY= 2 | CARBON_CUSTOMER_ID= 3 | CARBON_EMBEDDING_MODEL=COHERE_MULTILINGUAL_V3 4 | CARBON_FIELDS_MAPPING={"content": "text", "name": "title", "source_url": "url"} 5 | 6 | # Connector-level Authentication 7 | CARBON_CONNECTOR_API_KEY= 8 | -------------------------------------------------------------------------------- /redshift/.env-template: -------------------------------------------------------------------------------- 1 | AWS_ACCESS_KEY_ID= 2 | AWS_SECRET_ACCESS_KEY= 3 | AWS_REGION= 4 | REDSHIFT_DATABASE_NAME= 5 | REDSHIFT_WORKGROUP_NAME= 6 | REDSHIFT_DATABASE_TABLE= 7 | REDSHIFT_DATABASE_COLUMN= 8 | REDSHIFT_LIMIT_SIZE= 9 | REDSHIFT_CONNECTOR_API_KEY= 10 | -------------------------------------------------------------------------------- /contentful/.env-template: -------------------------------------------------------------------------------- 1 | CONTENTFUL_SPACE_ID= 2 | CONTENTFUL_PREVIEW_ACCESS_TOKEN= 3 | CONTENTFUL_ENVIRONMENT=master 4 | CONTENTFUL_SEARCH_LIMIT=20 5 | CONTENTFUL_CONTENT_TYPE_SEARCH= 6 | CONTENTFUL_FIELDS_MAPPING= 7 | CONTENTFUL_RICHTEXT_FIELDS= 8 | CONTENTFUL_CONNECTOR_API_KEY= 9 | -------------------------------------------------------------------------------- /backstage/.env-template: -------------------------------------------------------------------------------- 1 | BACKSTAGE_SERVER_URL=https://demo.backstage.io 2 | BACKSTAGE_ACCESS_TOKEN= 3 | BACKSTAGE_SEARCH_ENDPOINT=/api/search/query 4 | BACKSTAGE_SEARCH_TERM=term 5 | BACKSTAGE_CONNECTOR_API_KEY=abcdefg1234567890 6 | BACKSTAGE_CONNECTOR_FIELDS_MAPPING={"location":"url"} 7 | -------------------------------------------------------------------------------- /jira/.env-template: -------------------------------------------------------------------------------- 1 | # Authentication 2 | JIRA_AUTH_TYPE= 3 | # OAuth 4 | JIRA_OAUTH_CLIENT_ID= 5 | # Basic Auth 6 | JIRA_USER_EMAIL= 7 | JIRA_API_TOKEN= 8 | JIRA_ORG_DOMAIN= 9 | # Optional 10 | JIRA_ISSUE_KEY=BBQ 11 | JIRA_SEARCH_LIMIT=10 12 | JIRA_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /servicenow/.env-template: -------------------------------------------------------------------------------- 1 | SERVICENOW_AUTH_TYPE=oauth 2 | SERVICENOW_USERNAME= 3 | SERVICENOW_PASSWORD= 4 | SERVICENOW_INSTANCE_URL=https://dev221936.service-now.com 5 | SERVICENOW_TABLE_NAME= 6 | SERVICENOW_SEARCH_LIMIT=10 7 | SERVICENOW_FIELDS_MAPPING={} 8 | SERVICENOW_CONNECTOR_API_KEY= 9 | -------------------------------------------------------------------------------- /mongodb/.env-template: -------------------------------------------------------------------------------- 1 | MONGODB_CONNECTION_STRING=mongodb+srv://MYUSER:MYPASSWORD@mydomain.mongodb.net/?retryWrites=true&w=majority 2 | MONGODB_DB=test 3 | MONGODB_COLLECTIONS=people,users 4 | MONGODB_CONNECTOR_FIELD_MAPPING={"email":"text","name":"title"} 5 | MONGODB_CONNECTOR_API_KEY=abcde 6 | -------------------------------------------------------------------------------- /freshsales/.env-template: -------------------------------------------------------------------------------- 1 | FRESHSALES_API_KEY= 2 | FRESHSALES_BUNDLE_ALIAS= 3 | FRESHSALES_USER_ENTITY_ENABLED=True 4 | FRESHSALES_CONTACT_ENTITY_ENABLED=True 5 | FRESHSALES_SALES_ACCOUNT_ENTITY_ENABLED=True 6 | FRESHSALES_DEAL_ENTITY_ENABLED=True 7 | FRESHSALES_SEARCH_LIMIT= 8 | FRESHSALES_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /wordpress/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from typing import Any 3 | from .client import get_client 4 | 5 | 6 | logger = logging.getLogger(__name__) 7 | 8 | 9 | def search(query: str) -> list[dict[str, Any]]: 10 | client = get_client() 11 | 12 | return client.search(query) 13 | -------------------------------------------------------------------------------- /jira/config.py: -------------------------------------------------------------------------------- 1 | class Config(object): 2 | JIRA_USER = None 3 | JIRA_PASS = None 4 | JIRA_URL = None 5 | JIRA_KEY = None 6 | 7 | 8 | class DevConfig(Config): 9 | pass 10 | 11 | 12 | class TestConfig(Config): 13 | pass 14 | 15 | 16 | class ProdConfig(Config): 17 | pass 18 | -------------------------------------------------------------------------------- /aha/.env-template: -------------------------------------------------------------------------------- 1 | AHA_DOMAIN= 2 | AHA_API_KEY= 3 | AHA_SEARCH_LIMIT= 4 | AHA_ALLOWED_ENTITIES=["users","capacity_scenarios","epics","features","goals","ideas","initiatives","integrations","products","release_phases","strategy_models","strategy_positions","strategy_visions","teams","tasks"] 5 | AHA_CONNECTOR_API_KEY= 6 | -------------------------------------------------------------------------------- /yext/.env-template: -------------------------------------------------------------------------------- 1 | YEXT_AUTH_TYPE=oauth 2 | YEXT_EXPERIENCE_KEY= 3 | YEXT_API_URL=https://cdn.yextapis.com 4 | YEXT_API_KEY= 5 | YEXT_ACCOUNT_ID= 6 | YEXT_SEARCH_LIMIT={} 7 | YEXT_RESTRICT_VERTICALS= 8 | YEXT_VERSION= 9 | YEXT_LOCALE=en 10 | YEXT_V=20240109 11 | YEXT_FIELDS_MAPPING= 12 | YEXT_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /box/.env-template: -------------------------------------------------------------------------------- 1 | BOX_CLIENT_ID= 2 | BOX_CLIENT_SECRET= 3 | BOX_ENTERPRISE_ID= 4 | BOX_SEARCH_LIMIT=10 5 | BOX_FILE_EXTENSIONS="eml,html,json,md,msg,rst,rtf,txt,xml,jpeg,png,csv,doc,docx,epub,odt,pdf,ppt,pptx,tsv,xlsx" 6 | BOX_UNSTRUCTURED_BASE_URL=https://api.unstructured.io 7 | BOX_UNSTRUCTURED_API_KEY= 8 | BOX_CONNECTOR_API_KEY= -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .venv/ 2 | .vscode/ 3 | **/dev/data/ 4 | *.pyc 5 | .trunk/ 6 | .DS_Store 7 | milvus/volumes/ 8 | 9 | # ENV 10 | .env 11 | credentials.json 12 | token.json 13 | .zuliprc 14 | 15 | # Python Byte-compiled / optimized / DLL files 16 | __pycache__/ 17 | *.py[cod] 18 | *$py.class 19 | 20 | # Deployment artifacts 21 | fly.toml -------------------------------------------------------------------------------- /sharepoint/.env-template: -------------------------------------------------------------------------------- 1 | SHAREPOINT_AUTH_TYPE= 2 | SHAREPOINT_CLIENT_ID= 3 | SHAREPOINT_CLIENT_SECRET= 4 | SHAREPOINT_TENANT_ID= 5 | SHAREPOINT_SEARCH_LIMIT=5 6 | SHAREPOINT_UNSTRUCTURED_BASE_URL=https://api.unstructured.io 7 | SHAREPOINT_UNSTRUCTURED_API_KEY= 8 | SHAREPOINT_PASSTHROUGH_FILE_TYPES= 9 | SHAREPOINT_CONNECTOR_API_KEY= 10 | -------------------------------------------------------------------------------- /msteams/.env-template: -------------------------------------------------------------------------------- 1 | MSTEAMS_GRAPH_AUTH_TYPE= 2 | MSTEAMS_GRAPH_CLIENT_ID= 3 | MSTEAMS_GRAPH_CLIENT_SECRET= 4 | MSTEAMS_GRAPH_TENANT_ID= 5 | MSTEAMS_USER_ID= 6 | MSTEAMS_GRAPH_SEARCH_LIMIT=5 7 | MSTEAMS_CONNECTOR_API_KEY= 8 | # Unstructured 9 | MSTEAMS_UNSTRUCTURED_BASE_URL=https://api.unstructured.io 10 | MSTEAMS_UNSTRUCTURED_API_KEY= 11 | -------------------------------------------------------------------------------- /agilitycms/provider/client.py: -------------------------------------------------------------------------------- 1 | from agility_cms import Client 2 | 3 | client = None 4 | 5 | 6 | def get_client(api_domain, api_guid, api_key, api_locale): 7 | global client 8 | if not client: 9 | client = Client( 10 | api_guid, api_key, locale=api_locale, preview=False, url=api_domain 11 | ) 12 | return client 13 | -------------------------------------------------------------------------------- /couchbase/.env-template: -------------------------------------------------------------------------------- 1 | COUCHBASE_CONNECTION_STRING= 2 | COUCHBASE_USER= 3 | COUCHBASE_PASSWORD= 4 | COUCHBASE_BUCKET= 5 | COUCHBASE_SCOPE= 6 | COUCHBASE_SEARCH_INDEX= 7 | COUCHBASE_SEARCH_LIMIT= 8 | COUCHBASE_CONNECTOR_API_KEY= 9 | COUCHBASE_SEARCH_FIELDS_MAPPING={"description":"text","name":"title","airportname":"title","with":"text","click":"title"} 10 | -------------------------------------------------------------------------------- /milvus/.env-template: -------------------------------------------------------------------------------- 1 | MILVUS_CLUSTER_URI=http://localhost:19530 2 | MILVUS_API_KEY= 3 | MILVUS_USER= 4 | MILVUS_PASSWORD= 5 | MILVUS_COLLECTION=bbq 6 | MILVUS_VECTOR_FIELD=summary 7 | MILVUS_COHERE_APIKEY= 8 | MILVUS_COHERE_EMBED_MODEL=embed-english-v3.0 9 | MILVUS_CONNECTOR_API_KEY= 10 | MILVUS_SEARCH_LIMIT=10 11 | MILVUS_FIELDS_MAPPING={} 12 | 13 | 14 | -------------------------------------------------------------------------------- /klaviyo/provider/client.py: -------------------------------------------------------------------------------- 1 | from flask import current_app as app 2 | from klaviyo_api import KlaviyoAPI 3 | 4 | client = None 5 | 6 | 7 | def get_client(): 8 | global client 9 | assert (api_key := app.config.get("API_KEY")), "KLAVIYO_API_KEY must be set" 10 | 11 | if not client: 12 | client = KlaviyoAPI(api_key) 13 | 14 | return client 15 | -------------------------------------------------------------------------------- /_template_fastapi_/provider/exceptions.py: -------------------------------------------------------------------------------- 1 | """ 2 | Custom Exceptions 3 | """ 4 | 5 | 6 | class UpstreamProviderError(Exception): 7 | """ 8 | Exception raised when the upstream provider encounters an error. 9 | """ 10 | 11 | def __init__(self, message) -> None: 12 | self.message = message 13 | 14 | def __str__(self) -> str: 15 | return self.message 16 | -------------------------------------------------------------------------------- /snowflake/.env-template: -------------------------------------------------------------------------------- 1 | SNOWFLAKE_USER=cohere_search 2 | SNOWFLAKE_PASSWORD=XXXXX 3 | SNOWFLAKE_ACCOUNT=xxxxxxx-xx12345 4 | SNOWFLAKE_WAREHOUSE=COMPUTE_WH 5 | SNOWFLAKE_DATABASE=bbq 6 | SNOWFLAKE_SCHEMA=bbq 7 | SNOWFLAKE_TABLE=bbq2 8 | SNOWFLAKE_SEARCH_FIELDS=brand,name,description,features 9 | SNOWFLAKE_SEARCH_FIELDS_MAPPING= 10 | SNOWFLAKE_SEARCH_LIMIT= 11 | SNOWFLAKE_CONNECTOR_API_KEY= 12 | -------------------------------------------------------------------------------- /elastic/.env-template: -------------------------------------------------------------------------------- 1 | ELASTIC_CLOUD_ID=elastic:mycloudid 2 | ELASTIC_URL=https://myelastic.com:9200 3 | ELASTIC_INDEX=bbq 4 | 5 | # Elasticsearch Authorization, either use API key or Basic Auth (username+password) 6 | ELASTIC_API_KEY= 7 | ELASTIC_USER=elastic 8 | ELASTIC_PASS=pass 9 | 10 | # Optional 11 | ELASTIC_SEARCH_LIMIT=10 12 | 13 | # Connector Authorization 14 | ELASTIC_CONNECTOR_API_KEY= 15 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yaml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Documentation 4 | url: https://docs.cohere.com/docs 5 | about: For detailed information about Cohere's API visit the documentation page. 6 | - name: General Community Help 7 | url: https://discord.com/invite/co-mmunity 8 | about: For any general question not related to connectors please visit Cohere's Community's Discord. 9 | -------------------------------------------------------------------------------- /gmail/credentials.json-template: -------------------------------------------------------------------------------- 1 | { 2 | "installed": { 3 | "client_id": "myclientid", 4 | "project_id": "myproject", 5 | "auth_uri": "https://accounts.google.com/o/oauth2/auth", 6 | "token_uri": "https://oauth2.googleapis.com/token", 7 | "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 8 | "client_secret": "mysecret", 9 | "redirect_uris": ["http://localhost"] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /vespa/dev/launch-and-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # start Vespa 4 | bash /usr/local/bin/start-container.sh & 5 | 6 | # wait until Vespa config server is ready 7 | until curl -s http://localhost:19071/state/v1/health; do sleep 5; done 8 | 9 | # deploy application 10 | /opt/vespa/bin/vespa-deploy prepare /opt/vespa/conf/vespa 11 | /opt/vespa/bin/vespa-deploy activate 12 | 13 | # keep container running 14 | tail -f /dev/null 15 | -------------------------------------------------------------------------------- /gcalendar/credentials.json-template: -------------------------------------------------------------------------------- 1 | { 2 | "installed": { 3 | "client_id": "myclientid", 4 | "project_id": "myproject", 5 | "auth_uri": "https://accounts.google.com/o/oauth2/auth", 6 | "token_uri": "https://oauth2.googleapis.com/token", 7 | "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 8 | "client_secret": "mysecret", 9 | "redirect_uris": ["http://localhost"] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /mongodb/provider/client.py: -------------------------------------------------------------------------------- 1 | import pymongo 2 | 3 | from flask import current_app as app 4 | 5 | client = None 6 | 7 | 8 | def get_client(): 9 | assert ( 10 | connection_string := app.config.get("CONNECTION_STRING") 11 | ), "MONGODB_CONNECTION_STRING must be set" 12 | global client 13 | 14 | if not client: 15 | client = pymongo.MongoClient( 16 | connection_string, 17 | ) 18 | 19 | return client 20 | -------------------------------------------------------------------------------- /_template_/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "template" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Walter B "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = { extras = ["swagger-ui"], version = "^2.14.2" } 12 | python-dotenv = "^1.0.0" 13 | gunicorn = "^22.0.0" 14 | 15 | 16 | [build-system] 17 | requires = ["poetry-core"] 18 | build-backend = "poetry.core.masonry.api" 19 | -------------------------------------------------------------------------------- /discourse/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "discourse" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | 15 | 16 | [build-system] 17 | requires = ["poetry-core"] 18 | build-backend = "poetry.core.masonry.api" 19 | -------------------------------------------------------------------------------- /stackoverflow/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "stackoverflow" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | requests = "^2.31.0" 13 | python-dotenv = "^1.0.0" 14 | 15 | 16 | [build-system] 17 | requires = ["poetry-core"] 18 | build-backend = "poetry.core.masonry.api" 19 | -------------------------------------------------------------------------------- /box/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "box" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | boxsdk = "^3.8.1" 14 | gunicorn = "^22.0.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /aha/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "aha" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /backstage/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "connectors-backstage" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | gunicorn = "^22.0.0" 13 | python-dotenv = "^1.0.0" 14 | 15 | 16 | [build-system] 17 | requires = ["poetry-core"] 18 | build-backend = "poetry.core.masonry.api" 19 | -------------------------------------------------------------------------------- /vespa/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "vespa" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | requests = "^2.31.0" 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^22.0.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /_template_fastapi_/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "connector-template" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Your Name "] 6 | 7 | [tool.poetry.dependencies] 8 | python = "^3.11" 9 | python-dotenv = "1.0.1" 10 | fastapi = "0.109.1" 11 | pydantic = "2.6.0" 12 | pydantic-settings = "2.1.0" 13 | uvicorn = "0.27.0.post1" 14 | # Add common dependencies here 15 | 16 | [build-system] 17 | requires = ["poetry-core>=1.0.0"] 18 | build-backend = "poetry.core.masonry.api" 19 | -------------------------------------------------------------------------------- /postgres/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "postgres" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | psycopg2 = "^2.9.6" 13 | gunicorn = "^22.0.0" 14 | python-dotenv = "^1.0.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /zendesk/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "zendesk" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^21.2.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /elastic/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "elastic" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | elasticsearch = "^8.8.0" 11 | flask = "2.2.5" 12 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 13 | gunicorn = "^22.0.0" 14 | python-dotenv = "^1.0.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /solr/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "connectors-solr" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | pysolr = "^3.9.0" 11 | flask = "2.2.5" 12 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 13 | gunicorn = "^22.0.0" 14 | python-dotenv = "^1.0.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /qdrant/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "qdrant-connector" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "~3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | cohere = "^4.18.0" 14 | qdrant-client = "^1.3.2" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /weaviate/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "weaviate" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | weaviate-client = "^3.22.1" 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^22.0.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /vectara/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "vectara" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Ofer M "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | requests = "^2.31.0" 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^22.0.0" 15 | dictdot = "^1.5.1" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /hubspot/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "hubspot-connector" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | hubspot-api-client = "^8.1.0" 14 | gunicorn = "^22.0.0" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /jenkins/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "connectors-jenkins" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | gunicorn = "^22.0.0" 13 | python-dotenv = "^1.0.0" 14 | python-jenkins = "^1.8.1" 15 | 16 | 17 | [build-system] 18 | requires = ["poetry-core"] 19 | build-backend = "poetry.core.masonry.api" 20 | -------------------------------------------------------------------------------- /agora/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "agora" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /copper/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "copper" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /linear/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "linear" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /medium/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "medium" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /basecamp/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "basecamp" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /cockroach/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "cockroach" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | gunicorn = "^22.0.0" 14 | black = "^24.3.0" 15 | psycopg2 = "^2.9.9" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /fireflies/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "fireflies" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /mysql/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "mysql" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | gunicorn = "^22.0.0" 13 | black = "^24.3.0" 14 | python-dotenv = "^1.0.0" 15 | mysql-connector-python = "8.0.33" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /opensearch/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "opensearch" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | opensearch-py = "^2.2.0" 13 | gunicorn = "^22.0.0" 14 | black = "^24.3.0" 15 | python-dotenv = "^1.0.0" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /yammer/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "yammer-provider" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^21.2.0" 15 | black = "^23.9.1" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /box/provider/client.py: -------------------------------------------------------------------------------- 1 | from flask import current_app as app 2 | from boxsdk import CCGAuth, Client 3 | from . import UpstreamProviderError 4 | 5 | 6 | def get_client(): 7 | try: 8 | auth = CCGAuth( 9 | client_id=app.config["CLIENT_ID"], 10 | client_secret=app.config["CLIENT_SECRET"], 11 | enterprise_id=app.config["ENTERPRISE_ID"], 12 | ) 13 | box_client = Client(auth) 14 | except Exception as e: 15 | raise UpstreamProviderError(str(e)) from e 16 | 17 | return box_client 18 | -------------------------------------------------------------------------------- /jira/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "connector-jira" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | atlassian-python-api = "^3.39.0" 11 | flask = "2.2.5" 12 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^22.0.0" 15 | requests = "^2.31.0" 16 | 17 | 18 | [build-system] 19 | requires = ["poetry-core"] 20 | build-backend = "poetry.core.masonry.api" 21 | -------------------------------------------------------------------------------- /crunchbase/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "crunchbase" 3 | version = "1.0.0" 4 | description = "" 5 | authors = ["Tomeu Cabot "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = { extras = ["swagger-ui"], version = "^2.14.2" } 12 | python-dotenv = "^1.0.0" 13 | gunicorn = "^22.0.0" 14 | 15 | 16 | [tool.poetry.group.dev.dependencies] 17 | black = "^24.3.0" 18 | 19 | [build-system] 20 | requires = ["poetry-core"] 21 | build-backend = "poetry.core.masonry.api" 22 | -------------------------------------------------------------------------------- /opsgenie/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "opsgenie-connector" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = { extras = ["swagger-ui"], version = "^2.14.2" } 12 | python-dotenv = "^1.0.0" 13 | gunicorn = "^22.0.0" 14 | opsgenie-sdk = "^2.1.5" 15 | black = "^24.3.0" 16 | 17 | 18 | 19 | [build-system] 20 | requires = ["poetry-core"] 21 | build-backend = "poetry.core.masonry.api" 22 | -------------------------------------------------------------------------------- /klaviyo/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "klaviyo" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | klaviyo-api = "^6.0.0" 17 | 18 | 19 | [build-system] 20 | requires = ["poetry-core"] 21 | build-backend = "poetry.core.masonry.api" 22 | -------------------------------------------------------------------------------- /agilitycms/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "agilitycms" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | agility-cms = "^0.1.0" 17 | 18 | 19 | [build-system] 20 | requires = ["poetry-core"] 21 | build-backend = "poetry.core.masonry.api" 22 | -------------------------------------------------------------------------------- /pinecone/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "pinecone-search" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | pinecone-client = "^3.2.2" 13 | python-dotenv = "^1.0.0" 14 | black = "^24.3.0" 15 | cohere = "^4.34" 16 | gunicorn = "^22.0.0" 17 | 18 | 19 | [build-system] 20 | requires = ["poetry-core"] 21 | build-backend = "poetry.core.masonry.api" 22 | -------------------------------------------------------------------------------- /vespa/dev/app/services.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /bigquery/credentials.json-template: -------------------------------------------------------------------------------- 1 | { 2 | "type": "service_account", 3 | "project_id": "service-account-name", 4 | "private_key_id": "my-key", 5 | "private_key": "my-private-key", 6 | "client_email": "bigquery-account@service-account-name", 7 | "client_id": "123456789", 8 | "auth_uri": "https://accounts.google.com/o/oauth2/auth", 9 | "token_uri": "https://oauth2.googleapis.com/token", 10 | "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 11 | "client_x509_cert_url": "cert-url", 12 | "universe_domain": "googleapis.com" 13 | } 14 | -------------------------------------------------------------------------------- /contentful/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "contentful-provider" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | black = "^24.3.0" 16 | contentful = "^2.1.1" 17 | 18 | 19 | [build-system] 20 | requires = ["poetry-core"] 21 | build-backend = "poetry.core.masonry.api" 22 | -------------------------------------------------------------------------------- /blogger/provider/provider.py: -------------------------------------------------------------------------------- 1 | from .client import get_client 2 | 3 | 4 | def serialize_results(results): 5 | serialized_results = [] 6 | for result in results: 7 | item_to_append = result 8 | item_to_append["text"] = result["content"] 9 | item_to_append = {k: str(v) for k, v in item_to_append.items()} 10 | serialized_results.append(item_to_append) 11 | return serialized_results 12 | 13 | 14 | def search(query): 15 | client = get_client() 16 | results = client.get_blogs_posts(query) 17 | 18 | return serialize_results(results) 19 | -------------------------------------------------------------------------------- /trello/.env-template: -------------------------------------------------------------------------------- 1 | TRELLO_API_KEY= 2 | TRELLO_API_TOKEN= 3 | TRELLO_IDBOARDS= 4 | TRELLO_IDORGANIZATIONS= 5 | TRELLO_IDCARDS= 6 | TRELLO_MODELTYPES= 7 | TRELLO_BOARD_FIELDS= 8 | TRELLO_BOARDS_LIMIT= 9 | TRELLO_BOARD_ORGANIZATION= 10 | TRELLO_CARD_FIELDS= 11 | TRELLO_CARDS_LIMIT= 12 | TRELLO_CARDS_PAGE= 13 | TRELLO_CARD_BOARD= 14 | TRELLO_CARD_LIST= 15 | TRELLO_CARD_MEMBERS= 16 | TRELLO_CARD_STICKERS= 17 | TRELLO_CARD_ATTACHMENTS= 18 | TRELLO_ORGANIZATION_FIELDS= 19 | TRELLO_ORGANIZATIONS_LIMIT= 20 | TRELLO_MEMBER_FIELDS= 21 | TRELLO_MEMBERS_LIMIT= 22 | TRELLO_PARTIAL= 23 | TRELLO_CONNECTOR_API_KEY= 24 | -------------------------------------------------------------------------------- /milvus/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "milvus-connector" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | cohere = "^4.38" 14 | pymilvus = "^2.3.4" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.dev.dependencies] 19 | black = "^24.3.0" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /guru/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "guru-connector" 3 | version = "0.1.0" 4 | description = "Connects Cohere with Guru." 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | 15 | 16 | [tool.poetry.group.development.dependencies] 17 | black = "^24.3.0" 18 | mypy = "^1.4.1" 19 | 20 | [build-system] 21 | requires = ["poetry-core"] 22 | build-backend = "poetry.core.masonry.api" 23 | -------------------------------------------------------------------------------- /linear/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from .client import get_client 4 | 5 | logger = logging.getLogger(__name__) 6 | 7 | 8 | def serialize_results(data): 9 | serialized_data = [] 10 | results = data.get("data", {}).get("searchIssues", {}).get("nodes", []) 11 | for issue in results: 12 | issue["text"] = issue.pop("description") 13 | serialized_data.append({k: str(v) for k, v in issue.items()}) 14 | return serialized_data 15 | 16 | 17 | def search(query): 18 | client = get_client() 19 | 20 | return serialize_results(client.search_issues_by_term(query)) 21 | -------------------------------------------------------------------------------- /asana/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "asana" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^22.0.0" 15 | 16 | [tool.poetry.group.development.dependencies] 17 | black = "^24.3.0" 18 | types-requests = "^2.31.0.1" 19 | 20 | [build-system] 21 | requires = ["poetry-core"] 22 | build-backend = "poetry.core.masonry.api" 23 | -------------------------------------------------------------------------------- /coda/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "coda" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /qdrant/dev/healthcheck.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | use strict; 3 | use warnings; 4 | use IO::Socket::INET; 5 | 6 | my $socket = IO::Socket::INET->new( 7 | PeerAddr => 'localhost', 8 | PeerPort => '6333', 9 | Proto => 'tcp', 10 | Timeout => 10 11 | ); 12 | 13 | unless ($socket) { 14 | print "Cannot connect to qdrant\n"; 15 | exit(1); 16 | } 17 | 18 | print $socket "GET / HTTP/1.1\nHost: localhost\n\n"; 19 | my $response = <$socket>; 20 | close($socket); 21 | 22 | if ($response =~ m|^HTTP/1.1 200|) { 23 | exit(0); 24 | } else { 25 | print "Service is down\n"; 26 | exit(1); 27 | } 28 | -------------------------------------------------------------------------------- /zulip/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "zulip_" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 12 | python-dotenv = "^1.0.0" 13 | mypy = "^1.4.1" 14 | zulip = "^0.8.2" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^23.7.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /egnyte/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "egnyte" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /gitlab/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "gitlab" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /jenkins/dev/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jenkins/jenkins:2.414.2-jdk17 2 | USER root 3 | RUN apt-get update && apt-get install -y lsb-release 4 | RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \ 5 | https://download.docker.com/linux/debian/gpg 6 | RUN echo "deb [arch=$(dpkg --print-architecture) \ 7 | signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \ 8 | https://download.docker.com/linux/debian \ 9 | $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list 10 | RUN apt-get update && apt-get install -y docker-ce-cli 11 | USER jenkins 12 | RUN jenkins-plugin-cli --plugins "blueocean docker-workflow" -------------------------------------------------------------------------------- /readme/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "readme" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /trello/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "trello" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /yext/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "yext" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^22.0.0" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /pagerduty/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "pagerduty" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /skilljar/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "skilljar" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /helpscout/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "helpscout" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene Pavletsov"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /smartsheet/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "smartsheet" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene Pavletsov"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /docusign/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "docusign-connector" 3 | version = "0.1.0" 4 | description = "Connects Cohere with Docusign." 5 | authors = ["Eugene P"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = { extras = ["swagger-ui"], version = "^2.14.2" } 12 | python-dotenv = "^1.0.0" 13 | docusign-esign = "^3.24.0" 14 | 15 | 16 | [tool.poetry.group.development.dependencies] 17 | black = "^24.3.0" 18 | mypy = "^1.4.1" 19 | 20 | [build-system] 21 | requires = ["poetry-core"] 22 | build-backend = "poetry.core.masonry.api" 23 | -------------------------------------------------------------------------------- /miro/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "miro" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /mongodb/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "mongodb" 3 | version = "0.1.0" 4 | description = "Connects Cohere with MongoDB." 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | pymongo = "4.6.3" 14 | gunicorn = "^22.0.0" 15 | 16 | [tool.poetry.group.development.dependencies] 17 | black = "^24.3.0" 18 | mypy = "^1.4.1" 19 | 20 | [build-system] 21 | requires = ["poetry-core"] 22 | build-backend = "poetry.core.masonry.api" 23 | 24 | -------------------------------------------------------------------------------- /servicenow/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "servicenow" 3 | version = "0.1.0" 4 | description = "Connects Cohere to ServiceNow." 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | mypy = "^1.4.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /slack/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "slack-connector" 3 | version = "0.1.0" 4 | description = "Connects Cohere with Slack." 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | slack-sdk = "^3.21.3" 14 | gunicorn = "^22.0.0" 15 | 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | mypy = "^1.4.1" 20 | 21 | [build-system] 22 | requires = ["poetry-core"] 23 | build-backend = "poetry.core.masonry.api" 24 | -------------------------------------------------------------------------------- /atera/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "atera" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /carbon/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "carbon" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /fifteenfive/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "15five" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /notion/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "notion" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /freshdesk/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "freshdesk" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /intercom/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "intercom" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /shortcut/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "shortcut" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /wikipedia/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "wikipedia" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /youtrack/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "youtrack" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^21.2.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^23.7.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /freshsales/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "freshsales" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | ### What's being changed: 6 | 7 | 8 | 9 | ### How did you test this change (include any code snippets, API requests, screenshots, or gifs): 10 | 11 | 12 | -------------------------------------------------------------------------------- /.github/workflows/dependabot.yml: -------------------------------------------------------------------------------- 1 | name: Dependabot auto-approve 2 | on: pull_request 3 | 4 | permissions: 5 | pull-requests: write 6 | 7 | jobs: 8 | dependabot: 9 | runs-on: ubuntu-latest 10 | if: github.actor == 'dependabot[bot]' 11 | steps: 12 | - name: Dependabot metadata 13 | id: metadata 14 | uses: dependabot/fetch-metadata@v1 15 | with: 16 | github-token: "${{ secrets.GITHUB_TOKEN }}" 17 | - name: Approve a PR 18 | run: gh pr review --approve "$PR_URL" 19 | env: 20 | PR_URL: ${{github.event.pull_request.html_url}} 21 | GH_TOKEN: ${{secrets.GITHUB_TOKEN}} 22 | -------------------------------------------------------------------------------- /freshservice/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "freshservice" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /knowledgeowl/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "knowledgeowl" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /kendra/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "kendra" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^22.0.0" 15 | boto3 = "^1.34.19" 16 | 17 | [tool.poetry.group.development.dependencies] 18 | black = "^24.3.0" 19 | types-requests = "^2.31.0.1" 20 | mypy = "^1.4.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /redshift/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "redshift" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | boto3 = "1.28.26" 16 | backoff = "^2.2.1" 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = ">=23.7,<25.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /reuters/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "reuters" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | black = "^24.3.0" 17 | 18 | 19 | [tool.poetry.group.development.dependencies] 20 | black = "^24.3.0" 21 | types-requests = "^2.31.0.1" 22 | 23 | [build-system] 24 | requires = ["poetry-core"] 25 | build-backend = "poetry.core.masonry.api" 26 | -------------------------------------------------------------------------------- /courier/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "courier" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | trycourier = "^5.0.0" 17 | 18 | 19 | [tool.poetry.group.development.dependencies] 20 | black = "^24.3.0" 21 | types-requests = "^2.31.0.1" 22 | 23 | [build-system] 24 | requires = ["poetry-core"] 25 | build-backend = "poetry.core.masonry.api" 26 | -------------------------------------------------------------------------------- /hackernews/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "hackernews" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | requests = "^2.31.0" 11 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 12 | python-dotenv = "^1.0.0" 13 | mypy = "^1.4.1" 14 | gunicorn = "^22.0.0" 15 | flask = "2.2.5" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | pytest = "^7.4.4" 22 | 23 | [build-system] 24 | requires = ["poetry-core"] 25 | build-backend = "poetry.core.masonry.api" 26 | -------------------------------------------------------------------------------- /algolia/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "algolia" 3 | version = "0.1.0" 4 | description = "Connects Cohere to Algolia" 5 | authors = ["Walter Beller-Morales "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = { extras = ["swagger-ui"], version = "^2.14.2" } 12 | algoliasearch = "^3.0.0" 13 | python-dotenv = "^1.0.0" 14 | 15 | 16 | [build-system] 17 | requires = ["poetry-core"] 18 | build-backend = "poetry.core.masonry.api" 19 | 20 | [tool.poetry.group.dev.dependencies] 21 | flake8 = "6.0.0" 22 | isort = "5.10.1" 23 | black = "24.3.0" 24 | pytest = "7.4.0" 25 | pytest-cov = "4.1.0" 26 | -------------------------------------------------------------------------------- /bigquery/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "bigquery" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Tianjing Li "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | google = "^3.0.0" 16 | google-cloud-bigquery = "^3.11.4" 17 | 18 | 19 | [tool.poetry.group.development.dependencies] 20 | black = "^24.3.0" 21 | types-requests = "^2.31.0.1" 22 | 23 | [build-system] 24 | requires = ["poetry-core"] 25 | build-backend = "poetry.core.masonry.api" 26 | -------------------------------------------------------------------------------- /github/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "github" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = {version = "2.2.5", extras = ["swagger-ui"]} 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.development.dependencies] 19 | black = "^24.3.0" 20 | types-requests = "^2.31.0.1" 21 | 22 | [build-system] 23 | requires = ["poetry-core"] 24 | build-backend = "poetry.core.masonry.api" 25 | -------------------------------------------------------------------------------- /outlook/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "outlook" 3 | version = "0.1.0" 4 | description = "Microsoft Outlook Search Connector" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | python-dotenv = "1.0.0" 12 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 13 | msal = "^1.25.0" 14 | gunicorn = "^22.0.0" 15 | requests = "^2.31.0" 16 | beautifulsoup4 = "^4.12.2" 17 | 18 | 19 | 20 | 21 | [tool.poetry.group.dev.dependencies] 22 | black = "^24.3.0" 23 | 24 | [build-system] 25 | requires = ["poetry-core"] 26 | build-backend = "poetry.core.masonry.api" 27 | -------------------------------------------------------------------------------- /_template_fastapi_/provider/config.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | from pydantic_settings import BaseSettings 3 | 4 | 5 | class AppConfig(BaseSettings): 6 | """ 7 | Application Configuration 8 | """ 9 | 10 | CONNECTOR_ID: str = Field(..., env="CONNECTOR_ID") 11 | CONNECTOR_API_KEY: str = Field(..., env="CONNECTOR_API_KEY") 12 | CLIENT_AUTH_TOKEN: str = Field(..., env="CLIENT_AUTH_TOKEN") 13 | CLIENT_SEARCH_LIMIT: int = Field(5, env="CLIENT_SEARCH_LIMIT") 14 | 15 | class Config: 16 | """ 17 | Loads environment variables from a file named .env 18 | """ 19 | 20 | env_file = ".env" 21 | env_file_encoding = "utf-8" 22 | -------------------------------------------------------------------------------- /confluence/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "connector-confluence" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | atlassian-python-api = "^3.39.0" 11 | flask = "2.2.5" 12 | connexion = { extras = ["swagger-ui"], version = "^2.14.2" } 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^22.0.0" 15 | asyncio = "^3.4.3" 16 | black = "^24.3.0" 17 | aiohttp = "^3.9.4" 18 | nltk = "^3.9.1" 19 | mypy = "^1.11.2" 20 | types-requests = "^2.32.0.20240914" 21 | 22 | 23 | [build-system] 24 | requires = ["poetry-core"] 25 | build-backend = "poetry.core.masonry.api" 26 | -------------------------------------------------------------------------------- /techcrunch/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "techcrunch" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | gunicorn = "^22.0.0" 16 | black = "^24.3.0" 17 | beautifulsoup4 = "^4.12.2" 18 | 19 | 20 | [tool.poetry.group.development.dependencies] 21 | black = "^24.3.0" 22 | types-requests = "^2.31.0.1" 23 | 24 | [build-system] 25 | requires = ["poetry-core"] 26 | build-backend = "poetry.core.masonry.api" 27 | -------------------------------------------------------------------------------- /zulip/provider/client.py: -------------------------------------------------------------------------------- 1 | import zulip 2 | from flask import current_app as app 3 | 4 | from . import UpstreamProviderError 5 | 6 | client = None 7 | 8 | 9 | def get_client(): 10 | global client 11 | if not client: 12 | assert (api_key := app.config.get("API_KEY")), "ZULIP_API_KEY must be set" 13 | assert (bot_email := app.config.get("BOT_EMAIL")), "ZULIP_BOT_EMAIL must be set" 14 | assert (site := app.config.get("SITE")), "ZULIP_SITE must be set" 15 | 16 | try: 17 | client = zulip.Client(api_key=api_key, email=bot_email, site=site) 18 | except Exception as e: 19 | raise UpstreamProviderError(str(e)) 20 | 21 | return client 22 | -------------------------------------------------------------------------------- /dropbox/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "dropbox-connector" 3 | version = "0.1.0" 4 | description = "Search provider for connecting Cohere with Dropbox." 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | dropbox = "^11.36.2" 14 | requests = "^2.31.0" 15 | gunicorn = "^22.0.0" 16 | aiohttp = "^3.9.4" 17 | 18 | 19 | [tool.poetry.group.development.dependencies] 20 | black = "^24.3.0" 21 | mypy = "^1.4.1" 22 | 23 | [build-system] 24 | requires = ["poetry-core"] 25 | build-backend = "poetry.core.masonry.api" 26 | -------------------------------------------------------------------------------- /sharepoint/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "sharepoint" 3 | version = "0.1.0" 4 | description = "Connects Cohere to Sharepoint" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | azure-core = "1.23.1" 12 | azure-identity = "1.10.0" 13 | python-dotenv = "1.0.0" 14 | msgraph-core = "0.2.2" 15 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 16 | requests = "^2.31.0" 17 | gunicorn = "^22.0.0" 18 | aiohttp = "^3.9.4" 19 | 20 | 21 | [tool.poetry.group.dev.dependencies] 22 | black = "^24.3.0" 23 | 24 | [build-system] 25 | requires = ["poetry-core"] 26 | build-backend = "poetry.core.masonry.api" 27 | -------------------------------------------------------------------------------- /atera/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | 24 | return {} 25 | -------------------------------------------------------------------------------- /github/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | 24 | return {} 25 | -------------------------------------------------------------------------------- /redis/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | 24 | return {} 25 | -------------------------------------------------------------------------------- /wordpress/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "wordpress-connector" 3 | version = "0.1.0" 4 | description = "Connector for Cohere with WordPress." 5 | authors = ["Alex W "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | python-dotenv = "^1.0.0" 13 | requests = "^2.31.0" 14 | gunicorn = "^22.0.0" 15 | asyncio = "^3.4.3" 16 | aiohttp = "^3.9.4" 17 | beautifulsoup4 = "^4.12.2" 18 | 19 | 20 | [tool.poetry.group.development.dependencies] 21 | black = "^24.3.0" 22 | mypy = "^1.4.1" 23 | 24 | [build-system] 25 | requires = ["poetry-core"] 26 | build-backend = "poetry.core.masonry.api" 27 | -------------------------------------------------------------------------------- /intercom/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | 24 | return {} 25 | -------------------------------------------------------------------------------- /shortcut/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | 24 | return {} 25 | -------------------------------------------------------------------------------- /freshdesk/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from typing import Any 3 | 4 | from .client import get_client 5 | 6 | logger = logging.getLogger(__name__) 7 | 8 | 9 | def search(query) -> list[dict[str, Any]]: 10 | freshdesk_client = get_client() 11 | 12 | search_results = freshdesk_client.search(query) 13 | return [serialize_result(result) for result in search_results] 14 | 15 | 16 | def serialize_result(entry) -> dict[str, str]: 17 | serialized_result = {} 18 | 19 | for key, value in entry.items(): 20 | serialized_result[key] = ( 21 | str(value) 22 | if not isinstance(value, list) 23 | else ", ".join(str(vl) for vl in value) 24 | ) 25 | 26 | return serialized_result 27 | -------------------------------------------------------------------------------- /coda/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /algolia/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /bigquery/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /egnyte/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /freshdesk/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /gitlab/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /kendra/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /readme/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /trello/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /zulip/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /freshsales/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /mysql/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | mysql: 4 | image: mysql:8.0.33 5 | container_name: mysql 6 | restart: unless-stopped 7 | environment: 8 | MYSQL_USER: mysql 9 | MYSQL_PASSWORD: password 10 | MYSQL_DATABASE: bbq 11 | MYSQL_ROOT_PASSWORD: password 12 | ports: 13 | - 5432:5432 14 | command: --default-authentication-plugin=mysql_native_password --secure-file-priv=/data 15 | healthcheck: 16 | test: ["CMD-SHELL", "mysqladmin", "ping"] 17 | interval: 10s 18 | timeout: 5s 19 | retries: 5 20 | networks: 21 | - mysql-network 22 | volumes: 23 | - ./bbq.sql:/docker-entrypoint-initdb.d/bbq.sql 24 | 25 | networks: 26 | mysql-network: 27 | driver: bridge 28 | -------------------------------------------------------------------------------- /skilljar/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream provider error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | if token != str(app.config.get("CONNECTOR_API_KEY")): 22 | raise Unauthorized() 23 | # successfully authenticated 24 | return {} 25 | -------------------------------------------------------------------------------- /msteams/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "msteams-search-connector" 3 | version = "0.1.0" 4 | description = "Microsoft Teams Search Connector" 5 | authors = ["Eugene P "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | python-dotenv = "1.0.0" 12 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 13 | msal = "^1.25.0" 14 | gunicorn = "^22.0.0" 15 | requests = "^2.31.0" 16 | beautifulsoup4 = "^4.12.2" 17 | unstructured-client = "^0.14.3" 18 | aiohttp = "^3.9.4" 19 | asyncio = "^3.4.3" 20 | 21 | 22 | 23 | 24 | [tool.poetry.group.dev.dependencies] 25 | black = "^24.3.0" 26 | 27 | [build-system] 28 | requires = ["poetry-core"] 29 | build-backend = "poetry.core.masonry.api" 30 | -------------------------------------------------------------------------------- /asana/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /blogger/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "blogger" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene P"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | google-api-python-client = "^2.100.0" 16 | google-auth-httplib2 = "^0.1.1" 17 | google-auth-oauthlib = "^1.1.0" 18 | gunicorn = "^22.0.0" 19 | aiohttp = "^3.9.4" 20 | 21 | 22 | [tool.poetry.group.development.dependencies] 23 | black = "^24.3.0" 24 | types-requests = "^2.31.0.1" 25 | 26 | [build-system] 27 | requires = ["poetry-core"] 28 | build-backend = "poetry.core.masonry.api" 29 | -------------------------------------------------------------------------------- /carbon/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /courier/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /miro/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /mongodb/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /notion/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /couchbase/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "couchbase" 3 | version = "0.1.0" 4 | description = "Connects Cohere to Couchbase" 5 | authors = ["Eugene P"] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | flask = "2.2.5" 11 | connexion = {extras = ["swagger-ui"], version = "^2.14.2"} 12 | requests = "^2.31.0" 13 | python-dotenv = "^1.0.0" 14 | gunicorn = "^21.2.0" 15 | couchbase = "^4.1.8" 16 | 17 | 18 | 19 | [tool.poetry.group.dev.dependencies] 20 | black = "^23.7.0" 21 | mypy = "^1.4.1" 22 | 23 | 24 | [tool.poetry.group.development.dependencies] 25 | black = "^23.7.0" 26 | types-colorama = "^0.4.15.12" 27 | 28 | 29 | [build-system] 30 | requires = ["poetry-core"] 31 | build-backend = "poetry.core.masonry.api" 32 | -------------------------------------------------------------------------------- /freshservice/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /gcalendar/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /knowledgeowl/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /msteams/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream provider error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /outlook/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream provider error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /sharepoint/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream provider error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | 25 | return {} 26 | -------------------------------------------------------------------------------- /yext/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from typing import Any 3 | 4 | from . import UpstreamProviderError 5 | from .client import get_client 6 | 7 | logger = logging.getLogger(__name__) 8 | 9 | 10 | def serialize_results(results, mapping): 11 | data = [] 12 | for module in results: 13 | for result in module["results"]: 14 | item = {} 15 | for key, value in result["data"].items(): 16 | item[key] = str(value) 17 | if key in mapping: 18 | item[mapping[key]] = item.pop(key) 19 | data.append(item) 20 | return data 21 | 22 | 23 | def search(query) -> list[dict[str, Any]]: 24 | client = get_client() 25 | return serialize_results(client.search(query), client.mapping) 26 | -------------------------------------------------------------------------------- /gdrive/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "gdrive" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Eugene Pavletsov "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | flask = "2.2.5" 11 | requests = "^2.31.0" 12 | connexion = { version = "2.14.2", extras = ["swagger-ui"] } 13 | python-dotenv = "^1.0.0" 14 | mypy = "^1.4.1" 15 | google-api-python-client = "^2.100.0" 16 | google-auth-httplib2 = "^0.1.1" 17 | google-auth-oauthlib = "^1.1.0" 18 | gunicorn = "^22.0.0" 19 | aiohttp = "^3.9.4" 20 | nltk = "^3.8.1" 21 | 22 | [tool.poetry.group.development.dependencies] 23 | black = "^24.3.0" 24 | types-requests = "^2.31.0.1" 25 | 26 | [build-system] 27 | requires = ["poetry-core"] 28 | build-backend = "poetry.core.masonry.api" 29 | -------------------------------------------------------------------------------- /redis/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "connector-redis" 3 | version = "0.1.0" 4 | description = "Connects Cohere to Redis RediSearch" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 11 | python-dotenv = "^1.0.0" 12 | flask = "2.2.5" 13 | gunicorn = "^22.0.0" 14 | redis = "^5.0.1" 15 | 16 | [tool.pytest.ini_options] 17 | pythonpath = [ 18 | ".","provider" 19 | ] 20 | 21 | [tool.poetry.dev-dependencies] 22 | black = "^24.3.0" 23 | types-colorama = "^0.4.15.12" 24 | types-redis = "^4.6.0.3" 25 | pytest = "^7.4.4" 26 | mypy = "^1.4.1" 27 | 28 | [build-system] 29 | requires = ["poetry-core"] 30 | build-backend = "poetry.core.masonry.api" 31 | -------------------------------------------------------------------------------- /youtrack/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort 5 | from flask import current_app as app 6 | 7 | from . import UpstreamProviderError, provider 8 | 9 | logger = logging.getLogger(__name__) 10 | 11 | 12 | def search(body): 13 | try: 14 | data = provider.search(body["query"]) 15 | except UpstreamProviderError as error: 16 | logger.error(f"Upstream search error: {error.message}") 17 | abort(502, error.message) 18 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 19 | 20 | 21 | def apikey_auth(token): 22 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 23 | if api_key != "" and token != api_key: 24 | raise Unauthorized() 25 | 26 | return {} 27 | -------------------------------------------------------------------------------- /yext/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | # successfully authenticated 25 | return {} 26 | -------------------------------------------------------------------------------- /reuters/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream provider error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | # successfully authenticated 25 | return {} 26 | -------------------------------------------------------------------------------- /wikipedia/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream provider error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | if api_key != "" and token != api_key: 23 | raise Unauthorized() 24 | # successfully authenticated 25 | return {} 26 | -------------------------------------------------------------------------------- /hackernews/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream provider error: {error.message}") 16 | abort(502, error.message) 17 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 18 | 19 | 20 | def apikey_auth(token): 21 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 22 | 23 | if api_key != "" and token != api_key: 24 | raise Unauthorized() 25 | # successfully authenticated 26 | return {} 27 | -------------------------------------------------------------------------------- /helpscout/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from typing import Any 3 | 4 | from . import UpstreamProviderError 5 | from .client import get_client 6 | 7 | logger = logging.getLogger(__name__) 8 | 9 | 10 | def process_response_data(data) -> list[dict[str, Any]]: 11 | results = [] 12 | if "_embedded" in data and "conversations" in data["_embedded"]: 13 | for conversation in data["_embedded"]["conversations"]: 14 | results.append(conversation) 15 | else: 16 | logger.error(f"HelpScout search error: {data}") 17 | raise UpstreamProviderError(f"HelpScout search error: {data}") 18 | return results 19 | 20 | 21 | def search(query) -> list[dict[str, Any]]: 22 | scout_client = get_client() 23 | data = scout_client.get_conversations(query) 24 | return process_response_data(data) 25 | -------------------------------------------------------------------------------- /snowflake/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "snowflake" 3 | version = "0.1.0" 4 | description = "Connects Cohere to Snowflake" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | connexion = {version = "^2.14.2", extras = ["swagger-ui"]} 11 | python-dotenv = "^1.0.0" 12 | flask = {version = "2.2.5", extras = ["swagger-ui"]} 13 | requests = "^2.31.0" 14 | snowflake-connector-python = "^3.1.0" 15 | gunicorn = "^22.0.0" 16 | 17 | 18 | [tool.poetry.group.dev.dependencies] 19 | black = "^24.3.0" 20 | mypy = "^1.4.1" 21 | 22 | 23 | [tool.poetry.group.development.dependencies] 24 | black = "^24.3.0" 25 | types-colorama = "^0.4.15.12" 26 | 27 | 28 | [build-system] 29 | requires = ["poetry-core"] 30 | build-backend = "poetry.core.masonry.api" 31 | -------------------------------------------------------------------------------- /agora/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from .client import get_client 4 | 5 | logger = logging.getLogger(__name__) 6 | 7 | 8 | def search_projects(data, query): 9 | results = [] 10 | keywords = query.split(" ") 11 | if "projects" in data: 12 | for project in data["projects"]: 13 | if any(keyword.lower() in project["name"].lower() for keyword in keywords): 14 | project["title"] = project.get("name") 15 | project["text"] = project.get("name") 16 | project["url"] = f"https://console.agora.io/project/{project['id']}" 17 | results.append({k: str(v) for k, v in project.items()}) 18 | 19 | return results 20 | 21 | 22 | def search(query): 23 | client = get_client() 24 | 25 | return search_projects(client.get_projects(), query) 26 | -------------------------------------------------------------------------------- /elastic/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | from . import UpstreamProviderError, provider 6 | 7 | logger = logging.getLogger(__name__) 8 | 9 | 10 | def search(body): 11 | logger.debug(f'Search request: {body["query"]}') 12 | 13 | try: 14 | data = provider.search(body["query"]) 15 | logger.info(f"Found {len(data)} results") 16 | except UpstreamProviderError as error: 17 | logger.error(f"Upstream search error: {error.message}") 18 | abort(502, error.message) 19 | 20 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 21 | 22 | 23 | def apikey_auth(token): 24 | if token != str(app.config.get("CONNECTOR_API_KEY")): 25 | raise Unauthorized() 26 | 27 | return {} 28 | -------------------------------------------------------------------------------- /gmail/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "gmail" 3 | version = "0.1.0" 4 | description = "Connects Cohere to GMail" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 11 | python-dotenv = "^1.0.0" 12 | flask = "2.2.5" 13 | requests = "^2.31.0" 14 | google-api-python-client = "2.92.0" 15 | google-auth-httplib2 = "0.1.0" 16 | google-auth-oauthlib = "1.0.0" 17 | gunicorn = "^22.0.0" 18 | 19 | 20 | [tool.poetry.group.dev.dependencies] 21 | black = "^24.3.0" 22 | mypy = "^1.4.1" 23 | 24 | 25 | [tool.poetry.group.development.dependencies] 26 | black = "^24.3.0" 27 | types-colorama = "^0.4.15.12" 28 | 29 | 30 | [build-system] 31 | requires = ["poetry-core"] 32 | build-backend = "poetry.core.masonry.api" 33 | -------------------------------------------------------------------------------- /gcalendar/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "gmail" 3 | version = "0.1.0" 4 | description = "Connects Cohere to GMail" 5 | authors = ["Scott Mountenay "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.11" 10 | connexion = {version = "2.14.2", extras = ["swagger-ui"]} 11 | python-dotenv = "^1.0.0" 12 | flask = "2.2.5" 13 | requests = "^2.31.0" 14 | google-api-python-client = "2.92.0" 15 | google-auth-httplib2 = "0.1.0" 16 | google-auth-oauthlib = "1.0.0" 17 | gunicorn = "^22.0.0" 18 | 19 | 20 | [tool.poetry.group.dev.dependencies] 21 | black = "^24.3.0" 22 | mypy = "^1.4.1" 23 | 24 | 25 | [tool.poetry.group.development.dependencies] 26 | black = "^24.3.0" 27 | types-colorama = "^0.4.15.12" 28 | 29 | 30 | [build-system] 31 | requires = ["poetry-core"] 32 | build-backend = "poetry.core.masonry.api" 33 | -------------------------------------------------------------------------------- /pagerduty/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from typing import Any 3 | 4 | from .client import get_client 5 | from .enums import SearchTypes 6 | 7 | logger = logging.getLogger(__name__) 8 | 9 | BASE_PATH = "https://api.pagerduty.com" 10 | 11 | 12 | def search(query) -> list[dict[str, Any]]: 13 | client = get_client() 14 | search_type_method_mapping = { 15 | SearchTypes.INCIDENTS.value: client.search_incidents, 16 | SearchTypes.USERS.value: client.search_users, 17 | SearchTypes.TEAMS.value: client.search_teams, 18 | } 19 | 20 | search_results = [] 21 | for search_type in client.get_search_types(): 22 | if search_type in search_type_method_mapping.keys(): 23 | results = search_type_method_mapping[search_type](query) 24 | search_results.extend(results) 25 | 26 | return search_results 27 | -------------------------------------------------------------------------------- /postgres/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | import psycopg2 4 | import psycopg2.extras 5 | from flask import current_app as app 6 | 7 | logger = logging.getLogger(__name__) 8 | pg_connection = None 9 | 10 | 11 | def search(query): 12 | global pg_connection 13 | 14 | if pg_connection is None: 15 | pg_connection = psycopg2.connect(app.config["DSN"]) 16 | 17 | cursor = pg_connection.cursor(cursor_factory=psycopg2.extras.RealDictCursor) 18 | 19 | search_query = ( 20 | "SELECT * " 21 | f'FROM {app.config["TABLE_NAME"]} ' 22 | f'WHERE {app.config["FTS_COLUMN"]} @@ to_tsquery(\'{app.config["FTS_LANG"]}\', %s)' 23 | ) 24 | 25 | query_and = query.replace(" ", " & ") 26 | cursor.execute(search_query, (query_and,)) 27 | response = cursor.fetchall() 28 | cursor.close() 29 | 30 | return response 31 | -------------------------------------------------------------------------------- /readme/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from typing import Any 3 | 4 | import requests 5 | from flask import current_app as app 6 | 7 | from . import UpstreamProviderError 8 | 9 | 10 | logger = logging.getLogger(__name__) 11 | 12 | 13 | def search(query) -> list[dict[str, Any]]: 14 | assert (api_key := app.config.get("API_KEY")), "README_API_KEY must be set" 15 | 16 | url = "https://dash.readme.com/api/v1/docs/search" 17 | 18 | params = { 19 | "search": query, 20 | } 21 | 22 | auth = requests.auth.HTTPBasicAuth(api_key, "") 23 | response = requests.post(url, params=params, auth=auth) 24 | 25 | if response.status_code != 200: 26 | message = response.text or f"Error: HTTP {response.status_code}" 27 | raise UpstreamProviderError(message) 28 | 29 | data = response.json() 30 | return data["results"] 31 | -------------------------------------------------------------------------------- /bigquery/provider/client.py: -------------------------------------------------------------------------------- 1 | import os 2 | from google.cloud import bigquery 3 | from . import UpstreamProviderError 4 | 5 | CREDENTIALS_FILE_PATH = "./credentials.json" 6 | 7 | 8 | def get_client(): 9 | """ 10 | Google BigQuery API client requires user to authenticate with a 11 | service account's credentials. Make sure to see the README for details. 12 | """ 13 | 14 | assert os.path.exists( 15 | CREDENTIALS_FILE_PATH 16 | ), f"credentials.json must be created at {CREDENTIALS_FILE_PATH}, see README" 17 | 18 | try: 19 | client = bigquery.Client.from_service_account_json(CREDENTIALS_FILE_PATH) 20 | except Exception as e: 21 | message = ( 22 | "Error authenticating BigQuery client with the provided credentials.json" 23 | ) 24 | raise UpstreamProviderError(message) 25 | 26 | return client 27 | -------------------------------------------------------------------------------- /redis/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | services: 3 | redis: 4 | image: redis/redis-stack:latest 5 | container_name: redis 6 | restart: unless-stopped 7 | ports: 8 | - 6379:6379 9 | healthcheck: 10 | test: ["CMD", "redis-cli", "--raw", "incr", "ping"] 11 | interval: 10s 12 | timeout: 5s 13 | retries: 5 14 | networks: 15 | - redis-network 16 | volumes: 17 | - ./redis-data:/data 18 | 19 | data-loader: 20 | image: python:3.11 21 | depends_on: 22 | - redis 23 | volumes: 24 | - ./dev/bbq.csv:/dev/bbq.csv 25 | - ./dev/load_data.py:/load_data.py 26 | command: sh -c "pip install redis python-dotenv && python3 /load_data.py" 27 | profiles: 28 | - tools 29 | networks: 30 | - redis-network 31 | 32 | networks: 33 | redis-network: 34 | driver: bridge 35 | -------------------------------------------------------------------------------- /blogger/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message): 14 | self.message = message 15 | 16 | def __str__(self): 17 | return self.message 18 | 19 | 20 | def create_app(): 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | 31 | return flask_app 32 | -------------------------------------------------------------------------------- /box/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from flask import abort, current_app as app 3 | from connexion.exceptions import Unauthorized 4 | 5 | from . import UpstreamProviderError, provider 6 | 7 | logger = logging.getLogger(__name__) 8 | 9 | 10 | def search(body): 11 | logger.debug(f'Search request: {body["query"]}') 12 | 13 | try: 14 | data = provider.search(body["query"]) 15 | logger.info(f"Found {len(data)} results") 16 | except UpstreamProviderError as error: 17 | logger.error(f"Upstream search error: {error.message}") 18 | abort(502, error.message) 19 | 20 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 21 | 22 | 23 | def apikey_auth(token): 24 | if token != str(app.config.get("CONNECTOR_API_KEY")): 25 | raise Unauthorized() 26 | # successfully authenticated 27 | return {} 28 | -------------------------------------------------------------------------------- /pinecone/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message): 14 | self.message = message 15 | 16 | def __str__(self): 17 | return self.message 18 | 19 | 20 | def create_app(): 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | 31 | return flask_app 32 | -------------------------------------------------------------------------------- /guru/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream search error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | if token != str(app.config.get("CONNECTOR_API_KEY")): 26 | raise Unauthorized() 27 | # successfully authenticated 28 | return {} 29 | -------------------------------------------------------------------------------- /techcrunch/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message): 14 | self.message = message 15 | 16 | def __str__(self): 17 | return self.message 18 | 19 | 20 | def create_app(): 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | 31 | return flask_app 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.yaml: -------------------------------------------------------------------------------- 1 | name: Bug in existing connector 2 | description: Raise a bug related to an existing connector 3 | labels: 4 | - bug 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: Which connector is affected? 9 | description: Name of connector. 10 | validations: 11 | required: true 12 | 13 | - type: textarea 14 | attributes: 15 | label: What is the issue? 16 | description: | 17 | - Give as much detail as you can to help us understand the bug. 18 | - Include any error messages or error codes. 19 | - Try to add reproduction steps if possible. 20 | validations: 21 | required: true 22 | 23 | - type: textarea 24 | attributes: 25 | label: Additional information 26 | description: Any other context, images or comments to add. 27 | validations: 28 | required: false 29 | -------------------------------------------------------------------------------- /discourse/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream search error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | if token != str(app.config.get("CONNECTOR_API_KEY")): 26 | raise Unauthorized() 27 | # successfully authenticated 28 | return {} 29 | -------------------------------------------------------------------------------- /milvus/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream search error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | if token != str(app.config.get("CONNECTOR_API_KEY")): 26 | raise Unauthorized() 27 | # successfully authenticated 28 | return {} 29 | -------------------------------------------------------------------------------- /postgres/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream search error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | if token != str(app.config.get("CONNECTOR_API_KEY")): 26 | raise Unauthorized() 27 | # successfully authenticated 28 | return {} 29 | -------------------------------------------------------------------------------- /qdrant/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream search error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | if token != str(app.config.get("CONNECTOR_API_KEY")): 26 | raise Unauthorized() 27 | # successfully authenticated 28 | return {} 29 | -------------------------------------------------------------------------------- /wordpress/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream search error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | if token != str(app.config.get("CONNECTOR_API_KEY")): 26 | raise Unauthorized() 27 | # successfully authenticated 28 | return {} 29 | -------------------------------------------------------------------------------- /stackoverflow/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream provider error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | if token != str(app.config.get("CONNECTOR_API_KEY")): 26 | raise Unauthorized() 27 | # successfully authenticated 28 | return {} 29 | -------------------------------------------------------------------------------- /jira/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream search error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 26 | if api_key != "" and token != api_key: 27 | raise Unauthorized() 28 | 29 | return {} 30 | -------------------------------------------------------------------------------- /servicenow/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | logger.debug(f'Search request: {body["query"]}') 13 | 14 | try: 15 | data = provider.search(body["query"]) 16 | logger.info(f"Found {len(data)} results") 17 | except UpstreamProviderError as error: 18 | logger.error(f"Upstream search error: {error.message}") 19 | abort(502, error.message) 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 26 | if api_key != "" and token != api_key: 27 | raise Unauthorized() 28 | 29 | return {} 30 | -------------------------------------------------------------------------------- /agora/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /aha/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /coda/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from typing import Any 3 | 4 | import requests 5 | from flask import current_app as app 6 | 7 | from . import UpstreamProviderError 8 | 9 | 10 | logger = logging.getLogger(__name__) 11 | 12 | BASE_PATH = "https://coda.io/apis/v1" 13 | 14 | 15 | def search(query) -> list[dict[str, Any]]: 16 | url = BASE_PATH + "/docs" 17 | assert (token := app.config.get("API_TOKEN")), "CODA_API_TOKEN must be set" 18 | 19 | headers = {"Authorization": f"Bearer {token}"} 20 | 21 | params = { 22 | "query": query, 23 | } 24 | 25 | response = requests.get( 26 | url, 27 | headers=headers, 28 | params=params, 29 | ) 30 | 31 | if response.status_code != 200: 32 | message = response.text or f"Error: HTTP {response.status_code}" 33 | raise UpstreamProviderError(message) 34 | 35 | return response.json()["items"] 36 | -------------------------------------------------------------------------------- /copper/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /hubspot/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /jira/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /klaviyo/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /linear/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /medium/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /mysql/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /vespa/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /yammer/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /zendesk/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /agilitycms/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /basecamp/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /box/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[1].upper() 29 | flask_app.config.from_prefixed_env(config_prefix) 30 | flask_app.config["APP_ID"] = config_prefix 31 | return flask_app 32 | -------------------------------------------------------------------------------- /contentful/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /discourse/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /fireflies/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /milvus/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import connexion # type: ignore 2 | import logging 3 | import os 4 | 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[1].upper() 29 | flask_app.config.from_prefixed_env(config_prefix) 30 | flask_app.config["APP_ID"] = config_prefix 31 | return flask_app 32 | -------------------------------------------------------------------------------- /opensearch/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /opsgenie/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /pagerduty/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /qdrant/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import connexion # type: ignore 2 | import logging 3 | import os 4 | 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[1].upper() 29 | flask_app.config.from_prefixed_env(config_prefix) 30 | flask_app.config["APP_ID"] = config_prefix 31 | return flask_app 32 | -------------------------------------------------------------------------------- /redshift/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /weaviate/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/suggest-new-connector.yaml: -------------------------------------------------------------------------------- 1 | name: Suggest new connector 2 | description: Suggest a new connector to add 3 | labels: 4 | - addition 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: What platform/tool would you like to add as a connector? 9 | description: Name of the platform or tool to add. 10 | validations: 11 | required: true 12 | 13 | - type: textarea 14 | attributes: 15 | label: Why do you want to add this connector? 16 | description: Give us details as to why you think this connector would be valuable for your use-case or for the community. 17 | validations: 18 | required: true 19 | 20 | - type: textarea 21 | attributes: 22 | label: Additional information 23 | description: | 24 | - Any other information is much appreciated, such as API documentation, Python SDKs, etc. 25 | validations: 26 | required: false 27 | -------------------------------------------------------------------------------- /mongodb/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | services: 3 | mongo: 4 | image: mongo:latest 5 | container_name: mongo 6 | restart: always 7 | ports: 8 | - 27017:27017 9 | environment: 10 | MONGO_INITDB_ROOT_USERNAME: root 11 | MONGO_INITDB_ROOT_PASSWORD: example 12 | MONGO_INITDB_DATABASE: bbq 13 | networks: 14 | - mongo-network 15 | 16 | data-loader: 17 | image: python:3.11 18 | container_name: data-loader 19 | depends_on: 20 | - mongo 21 | environment: 22 | MONGODB_CONNECTION_STRING: mongodb://root:example@mongo:27017 23 | volumes: 24 | - ./dev/bbq.csv:/bbq.csv 25 | - ./dev/load_data.py:/load_data.py 26 | command: sh -c "pip install pymongo python-dotenv && python3 /load_data.py" 27 | profiles: 28 | - tools 29 | networks: 30 | - mongo-network 31 | 32 | networks: 33 | mongo-network: 34 | driver: bridge 35 | -------------------------------------------------------------------------------- /msteams/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | 31 | return flask_app 32 | -------------------------------------------------------------------------------- /outlook/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | 31 | return flask_app 32 | -------------------------------------------------------------------------------- /smartsheet/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from flask import abort, current_app as app 4 | from connexion.exceptions import Unauthorized 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Smartsheet search error: {error.message}") 16 | abort(502, error.message) 17 | except AssertionError as error: 18 | logger.error(f"Smartsheet config error: {error}") 19 | abort(502, f"Smartsheet config error: {error}") 20 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 21 | 22 | 23 | def apikey_auth(token): 24 | if token != str(app.config.get("CONNECTOR_API_KEY")): 25 | raise Unauthorized() 26 | # successfully authenticated 27 | return {} 28 | -------------------------------------------------------------------------------- /stackoverflow/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | config_prefix = os.path.split(os.getcwd())[1].upper() 28 | flask_app.config.from_prefixed_env(config_prefix) 29 | flask_app.config["APP_ID"] = config_prefix 30 | return flask_app 31 | -------------------------------------------------------------------------------- /crunchbase/provider/provider.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from .client import get_client 4 | 5 | logger = logging.getLogger(__name__) 6 | 7 | 8 | def serialize_results(data): 9 | # debug data 10 | logger.debug(f"Raw data: {data}") 11 | 12 | serialized_data = [] 13 | results = data.get("entities", []) 14 | for entity in results: 15 | identifier = entity.pop("identifier", {}) 16 | serialized_data.append( 17 | { 18 | "text": entity.pop("short_description"), 19 | "title": identifier.pop("value"), 20 | "url": f"https://www.crunchbase.com/{identifier.pop('entity_def_id')}/{identifier.pop('permalink')}", 21 | "id": identifier.pop("uuid"), 22 | } 23 | ) 24 | return serialized_data 25 | 26 | 27 | def search(query): 28 | client = get_client() 29 | 30 | return serialize_results(client.autocomplete(query)) 31 | -------------------------------------------------------------------------------- /vectara/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | load_dotenv() 8 | 9 | API_VERSION = "api.yaml" 10 | 11 | 12 | class UpstreamProviderError(Exception): 13 | def __init__(self, message) -> None: 14 | self.message = message 15 | 16 | def __str__(self) -> str: 17 | return self.message 18 | 19 | 20 | def create_app() -> connexion.FlaskApp: 21 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 22 | app.add_api( 23 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 24 | ) 25 | logging.basicConfig(level=logging.INFO) 26 | flask_app = app.app 27 | 28 | config_prefix = os.path.split(os.getcwd())[1].upper() 29 | flask_app.config.from_prefixed_env(config_prefix) 30 | flask_app.config["APP_ID"] = config_prefix 31 | 32 | return flask_app 33 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/improvement.yaml: -------------------------------------------------------------------------------- 1 | name: Improve existing connector 2 | description: Make a suggestion to improve the code in an existing connector. 3 | labels: 4 | - improvement 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: Which connector is affected? 9 | description: Name of connector. 10 | validations: 11 | required: true 12 | 13 | - type: textarea 14 | attributes: 15 | label: What would you like to see improved? 16 | description: | 17 | - Give as much detail as you can to help us understand the change. 18 | - Why should these changes be made, and what is the expected change in behavior versus the current one? 19 | validations: 20 | required: true 21 | 22 | - type: textarea 23 | attributes: 24 | label: Additional information 25 | description: Any other context, images or comments to add. 26 | validations: 27 | required: false 28 | -------------------------------------------------------------------------------- /gmail/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | except AssertionError as error: 18 | logger.error(f"Gmail connector config error: {error}") 19 | abort(502, f"Gmail connector config error: {error}") 20 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 21 | 22 | 23 | def apikey_auth(token): 24 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 25 | if api_key != "" and token != api_key: 26 | raise Unauthorized() 27 | 28 | return {} 29 | -------------------------------------------------------------------------------- /snowflake/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort 5 | from flask import current_app as app 6 | 7 | from . import UpstreamProviderError, provider 8 | 9 | logger = logging.getLogger(__name__) 10 | 11 | 12 | def search(body): 13 | try: 14 | data = provider.search(body["query"]) 15 | except UpstreamProviderError as error: 16 | logger.error(f"Upstream search error: {error.message}") 17 | abort(502, error.message) 18 | except AssertionError as error: 19 | logger.error(f"SnowFlake config error: {error}") 20 | abort(502, f"SnowFlake config error: {error}") 21 | 22 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 23 | 24 | 25 | def apikey_auth(token): 26 | if token != str(app.config.get("CONNECTOR_API_KEY")): 27 | raise Unauthorized() 28 | # successfully authenticated 29 | return {} 30 | -------------------------------------------------------------------------------- /blogger/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | except AssertionError as error: 18 | logger.error(f"Blogger config error: {error}") 19 | abort(502, f"Blogger config error: {error}") 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 26 | if api_key != "" and token != api_key: 27 | raise Unauthorized() 28 | # successfully authenticated 29 | return {} 30 | -------------------------------------------------------------------------------- /helpscout/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"HelpScout search error: {error.message}") 16 | abort(502, error.message) 17 | except AssertionError as error: 18 | logger.error(f"HelpScout config error: {error}") 19 | abort(502, f"HelpScout config error: {error}") 20 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 21 | 22 | 23 | def apikey_auth(token): 24 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 25 | if api_key != "" and token != api_key: 26 | raise Unauthorized() 27 | # successfully authenticated 28 | return {} 29 | -------------------------------------------------------------------------------- /pinecone/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | except AssertionError as error: 18 | logger.error(f"Pinecone config error: {error}") 19 | abort(502, f"Pinecone config error: {error}") 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 26 | if api_key != "" and token != api_key: 27 | raise Unauthorized() 28 | # successfully authenticated 29 | return {} 30 | -------------------------------------------------------------------------------- /redis/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /gdrive/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | import nltk 4 | 5 | import connexion 6 | from dotenv import load_dotenv 7 | 8 | load_dotenv() 9 | 10 | # download nltk data 11 | nltk.download("stopwords") 12 | nltk.download("punkt") 13 | 14 | API_VERSION = "api.yaml" 15 | 16 | 17 | class UpstreamProviderError(Exception): 18 | def __init__(self, message): 19 | self.message = message 20 | 21 | def __str__(self): 22 | return self.message 23 | 24 | 25 | def create_app(): 26 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 27 | app.add_api( 28 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 29 | ) 30 | logging.basicConfig(level=logging.INFO) 31 | flask_app = app.app 32 | config_prefix = os.path.split(os.getcwd())[1].upper() 33 | flask_app.config.from_prefixed_env(config_prefix) 34 | flask_app.config["APP_ID"] = config_prefix 35 | 36 | return flask_app 37 | -------------------------------------------------------------------------------- /techcrunch/provider/app.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from connexion.exceptions import Unauthorized 4 | from flask import abort, current_app as app 5 | 6 | from . import UpstreamProviderError, provider 7 | 8 | logger = logging.getLogger(__name__) 9 | 10 | 11 | def search(body): 12 | try: 13 | data = provider.search(body["query"]) 14 | except UpstreamProviderError as error: 15 | logger.error(f"Upstream search error: {error.message}") 16 | abort(502, error.message) 17 | except AssertionError as error: 18 | logger.error(f"Techcrunch config error: {error}") 19 | abort(502, f"Techcrunch config error: {error}") 20 | 21 | return {"results": data}, 200, {"X-Connector-Id": app.config.get("APP_ID")} 22 | 23 | 24 | def apikey_auth(token): 25 | api_key = str(app.config.get("CONNECTOR_API_KEY", "")) 26 | if api_key != "" and token != api_key: 27 | raise Unauthorized() 28 | # successfully authenticated 29 | return {} 30 | -------------------------------------------------------------------------------- /asana/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /bigquery/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /coda/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /egnyte/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /gitlab/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /kendra/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /miro/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /readme/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /skilljar/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /trello/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /yext/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /zulip/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /dropbox/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | 11 | API_VERSION = "api.yaml" 12 | 13 | 14 | class UpstreamProviderError(Exception): 15 | def __init__(self, message) -> None: 16 | self.message = message 17 | 18 | def __str__(self) -> str: 19 | return self.message 20 | 21 | 22 | def create_app() -> connexion.FlaskApp: 23 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 24 | app.add_api( 25 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 26 | ) 27 | logging.basicConfig(level=logging.INFO) 28 | flask_app = app.app 29 | config_prefix = os.path.split(os.getcwd())[ 30 | 1 31 | ].upper() # Current directory name, upper-cased 32 | flask_app.config.from_prefixed_env(config_prefix) 33 | flask_app.config["APP_ID"] = config_prefix 34 | return flask_app 35 | -------------------------------------------------------------------------------- /freshdesk/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | -------------------------------------------------------------------------------- /freshsales/provider/__init__.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | import connexion # type: ignore 5 | from dotenv import load_dotenv 6 | 7 | 8 | load_dotenv() 9 | 10 | API_VERSION = "api.yaml" 11 | 12 | 13 | class UpstreamProviderError(Exception): 14 | def __init__(self, message) -> None: 15 | self.message = message 16 | 17 | def __str__(self) -> str: 18 | return self.message 19 | 20 | 21 | def create_app() -> connexion.FlaskApp: 22 | app = connexion.FlaskApp(__name__, specification_dir="../../.openapi") 23 | app.add_api( 24 | API_VERSION, resolver=connexion.resolver.RelativeResolver("provider.app") 25 | ) 26 | logging.basicConfig(level=logging.INFO) 27 | flask_app = app.app 28 | config_prefix = os.path.split(os.getcwd())[ 29 | 1 30 | ].upper() # Current directory name, upper-cased 31 | flask_app.config.from_prefixed_env(config_prefix) 32 | flask_app.config["APP_ID"] = config_prefix 33 | return flask_app 34 | --------------------------------------------------------------------------------