carbon_ruby_sdk 0.2.28 → 0.2.29
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +69 -2
- data/lib/carbon_ruby_sdk/api/integrations_api.rb +154 -2
- data/lib/carbon_ruby_sdk/models/authentication_property.rb +1 -0
- data/lib/carbon_ruby_sdk/models/data_source_type.rb +3 -1
- data/lib/carbon_ruby_sdk/models/data_source_type_nullable.rb +3 -1
- data/lib/carbon_ruby_sdk/models/file_formats.rb +3 -1
- data/lib/carbon_ruby_sdk/models/file_formats_nullable.rb +3 -1
- data/lib/carbon_ruby_sdk/models/guru_authentication.rb +244 -0
- data/lib/carbon_ruby_sdk/models/guru_connect_request.rb +359 -0
- data/lib/carbon_ruby_sdk/version.rb +1 -1
- data/lib/carbon_ruby_sdk.rb +2 -0
- data/spec/api/integrations_api_spec.rb +13 -1
- data/spec/models/guru_authentication_spec.rb +40 -0
- data/spec/models/guru_connect_request_spec.rb +100 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce3304355eb6ab6beb6b01902cb9700349cccb4b394a61eda49bcee5c58fe2ce
|
4
|
+
data.tar.gz: 20e739c2119523d2ae6d1c5b7aa91ba20c963448842b926df5ffc99119e18218
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30d783afae3a2c594ef7f37e3ecfbaf7e066b9c5fec2521c885311c0ebd31667dba7b6a5862275772a4c5dab7f120ff1aa1c9ebadb2d2955c4e49d8a04a134c7
|
7
|
+
data.tar.gz: fce08819369c7e49973e4432ed936c432f33aedb89a47390f3930a05b9848eca0e4d7d0148bed21d4ad4125e9e4ee7bfd3ef4dba78c15fea72039b4b8e06f870
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
Connect external data to LLMs, no matter the source.
|
8
8
|
|
9
|
-
[![npm](https://img.shields.io/badge/gem-v0.2.
|
9
|
+
[![npm](https://img.shields.io/badge/gem-v0.2.29-blue)](https://rubygems.org/gems/carbon_ruby_sdk/versions/0.2.29)
|
10
10
|
|
11
11
|
</div>
|
12
12
|
|
@@ -45,6 +45,7 @@ Connect external data to LLMs, no matter the source.
|
|
45
45
|
* [`carbon.integrations.connect_data_source`](#carbonintegrationsconnect_data_source)
|
46
46
|
* [`carbon.integrations.connect_freshdesk`](#carbonintegrationsconnect_freshdesk)
|
47
47
|
* [`carbon.integrations.connect_gitbook`](#carbonintegrationsconnect_gitbook)
|
48
|
+
* [`carbon.integrations.connect_guru`](#carbonintegrationsconnect_guru)
|
48
49
|
* [`carbon.integrations.create_aws_iam_user`](#carbonintegrationscreate_aws_iam_user)
|
49
50
|
* [`carbon.integrations.get_oauth_url`](#carbonintegrationsget_oauth_url)
|
50
51
|
* [`carbon.integrations.list_confluence_pages`](#carbonintegrationslist_confluence_pages)
|
@@ -93,7 +94,7 @@ Connect external data to LLMs, no matter the source.
|
|
93
94
|
Add to Gemfile:
|
94
95
|
|
95
96
|
```ruby
|
96
|
-
gem 'carbon_ruby_sdk', '~> 0.2.
|
97
|
+
gem 'carbon_ruby_sdk', '~> 0.2.29'
|
97
98
|
```
|
98
99
|
|
99
100
|
## Getting Started<a id="getting-started"></a>
|
@@ -1555,6 +1556,70 @@ via list items endpoint
|
|
1555
1556
|
---
|
1556
1557
|
|
1557
1558
|
|
1559
|
+
### `carbon.integrations.connect_guru`<a id="carbonintegrationsconnect_guru"></a>
|
1560
|
+
|
1561
|
+
You will need an access token to connect your Guru account. To obtain an access token, follow the steps highlighted here
|
1562
|
+
https://help.getguru.com/docs/gurus-api#obtaining-a-user-token. The username should be your Guru username.
|
1563
|
+
|
1564
|
+
#### 🛠️ Usage<a id="🛠️-usage"></a>
|
1565
|
+
|
1566
|
+
```ruby
|
1567
|
+
result = carbon.integrations.connect_guru(
|
1568
|
+
username: "string_example",
|
1569
|
+
access_token: "string_example",
|
1570
|
+
tags: {},
|
1571
|
+
chunk_size: 1500,
|
1572
|
+
chunk_overlap: 20,
|
1573
|
+
skip_embedding_generation: false,
|
1574
|
+
embedding_model: "OPENAI",
|
1575
|
+
generate_sparse_vectors: false,
|
1576
|
+
prepend_filename_to_chunks: false,
|
1577
|
+
sync_files_on_connection: true,
|
1578
|
+
request_id: "string_example",
|
1579
|
+
sync_source_items: true,
|
1580
|
+
file_sync_config: {
|
1581
|
+
"auto_synced_source_types" => ["ARTICLE"],
|
1582
|
+
"sync_attachments" => false,
|
1583
|
+
"detect_audio_language" => false,
|
1584
|
+
"transcription_service" => "assemblyai",
|
1585
|
+
"include_speaker_labels" => false,
|
1586
|
+
"split_rows" => false,
|
1587
|
+
},
|
1588
|
+
)
|
1589
|
+
p result
|
1590
|
+
```
|
1591
|
+
|
1592
|
+
#### ⚙️ Parameters<a id="⚙️-parameters"></a>
|
1593
|
+
|
1594
|
+
##### username: `String`<a id="username-string"></a>
|
1595
|
+
##### access_token: `String`<a id="access_token-string"></a>
|
1596
|
+
##### tags: `Object`<a id="tags-object"></a>
|
1597
|
+
##### chunk_size: `Integer`<a id="chunk_size-integer"></a>
|
1598
|
+
##### chunk_overlap: `Integer`<a id="chunk_overlap-integer"></a>
|
1599
|
+
##### skip_embedding_generation: `Boolean`<a id="skip_embedding_generation-boolean"></a>
|
1600
|
+
##### embedding_model: [`EmbeddingGenerators`](./lib/carbon_ruby_sdk/models/embedding_generators.rb)<a id="embedding_model-embeddinggeneratorslibcarbon_ruby_sdkmodelsembedding_generatorsrb"></a>
|
1601
|
+
##### generate_sparse_vectors: `Boolean`<a id="generate_sparse_vectors-boolean"></a>
|
1602
|
+
##### prepend_filename_to_chunks: `Boolean`<a id="prepend_filename_to_chunks-boolean"></a>
|
1603
|
+
##### sync_files_on_connection: `Boolean`<a id="sync_files_on_connection-boolean"></a>
|
1604
|
+
##### request_id: `String`<a id="request_id-string"></a>
|
1605
|
+
##### sync_source_items: `Boolean`<a id="sync_source_items-boolean"></a>
|
1606
|
+
Enabling this flag will fetch all available content from the source to be listed
|
1607
|
+
via list items endpoint
|
1608
|
+
|
1609
|
+
##### file_sync_config: [`FileSyncConfigNullable`](./lib/carbon_ruby_sdk/models/file_sync_config_nullable.rb)<a id="file_sync_config-filesyncconfignullablelibcarbon_ruby_sdkmodelsfile_sync_config_nullablerb"></a>
|
1610
|
+
#### 🔄 Return<a id="🔄-return"></a>
|
1611
|
+
|
1612
|
+
[GenericSuccessResponse](./lib/carbon_ruby_sdk/models/generic_success_response.rb)
|
1613
|
+
|
1614
|
+
#### 🌐 Endpoint<a id="🌐-endpoint"></a>
|
1615
|
+
|
1616
|
+
`/integrations/guru` `POST`
|
1617
|
+
|
1618
|
+
[🔙 **Back to Table of Contents**](#table-of-contents)
|
1619
|
+
|
1620
|
+
---
|
1621
|
+
|
1622
|
+
|
1558
1623
|
### `carbon.integrations.create_aws_iam_user`<a id="carbonintegrationscreate_aws_iam_user"></a>
|
1559
1624
|
|
1560
1625
|
This endpoint can be used to connect S3 as well as Digital Ocean Spaces (S3 compatible)
|
@@ -2268,6 +2333,8 @@ You can also use them in combination to get emails from a certain period.
|
|
2268
2333
|
<b>is</b>: Can have the following values - starred, important, snoozed, and unread
|
2269
2334
|
<b>from</b>: Email address of the sender
|
2270
2335
|
<b>to</b>: Email address of the recipient
|
2336
|
+
<b>in</b>: Can have the following values - sent (sync emails sent by the user)
|
2337
|
+
<b>has</b>: Can have the following values - attachment (sync emails that have attachments)
|
2271
2338
|
|
2272
2339
|
Using keys or values outside of the specified values can lead to unexpected behaviour.
|
2273
2340
|
|
@@ -506,6 +506,154 @@ module Carbon
|
|
506
506
|
end
|
507
507
|
|
508
508
|
|
509
|
+
# Guru Connect
|
510
|
+
#
|
511
|
+
# You will need an access token to connect your Guru account. To obtain an access token, follow the steps highlighted here
|
512
|
+
# https://help.getguru.com/docs/gurus-api#obtaining-a-user-token. The username should be your Guru username.
|
513
|
+
#
|
514
|
+
# @param username [String]
|
515
|
+
# @param access_token [String]
|
516
|
+
# @param tags [Object]
|
517
|
+
# @param chunk_size [Integer]
|
518
|
+
# @param chunk_overlap [Integer]
|
519
|
+
# @param skip_embedding_generation [Boolean]
|
520
|
+
# @param embedding_model [EmbeddingGenerators]
|
521
|
+
# @param generate_sparse_vectors [Boolean]
|
522
|
+
# @param prepend_filename_to_chunks [Boolean]
|
523
|
+
# @param sync_files_on_connection [Boolean]
|
524
|
+
# @param request_id [String]
|
525
|
+
# @param sync_source_items [Boolean] Enabling this flag will fetch all available content from the source to be listed via list items endpoint
|
526
|
+
# @param file_sync_config [FileSyncConfigNullable]
|
527
|
+
# @param body [GuruConnectRequest]
|
528
|
+
# @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
|
529
|
+
def connect_guru(username:, access_token:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, sync_files_on_connection: true, request_id: SENTINEL, sync_source_items: true, file_sync_config: SENTINEL, extra: {})
|
530
|
+
_body = {}
|
531
|
+
_body[:tags] = tags if tags != SENTINEL
|
532
|
+
_body[:username] = username if username != SENTINEL
|
533
|
+
_body[:access_token] = access_token if access_token != SENTINEL
|
534
|
+
_body[:chunk_size] = chunk_size if chunk_size != SENTINEL
|
535
|
+
_body[:chunk_overlap] = chunk_overlap if chunk_overlap != SENTINEL
|
536
|
+
_body[:skip_embedding_generation] = skip_embedding_generation if skip_embedding_generation != SENTINEL
|
537
|
+
_body[:embedding_model] = embedding_model if embedding_model != SENTINEL
|
538
|
+
_body[:generate_sparse_vectors] = generate_sparse_vectors if generate_sparse_vectors != SENTINEL
|
539
|
+
_body[:prepend_filename_to_chunks] = prepend_filename_to_chunks if prepend_filename_to_chunks != SENTINEL
|
540
|
+
_body[:sync_files_on_connection] = sync_files_on_connection if sync_files_on_connection != SENTINEL
|
541
|
+
_body[:request_id] = request_id if request_id != SENTINEL
|
542
|
+
_body[:sync_source_items] = sync_source_items if sync_source_items != SENTINEL
|
543
|
+
_body[:file_sync_config] = file_sync_config if file_sync_config != SENTINEL
|
544
|
+
guru_connect_request = _body
|
545
|
+
api_response = connect_guru_with_http_info_impl(guru_connect_request, extra)
|
546
|
+
api_response.data
|
547
|
+
end
|
548
|
+
|
549
|
+
# Guru Connect
|
550
|
+
#
|
551
|
+
# You will need an access token to connect your Guru account. To obtain an access token, follow the steps highlighted here
|
552
|
+
# https://help.getguru.com/docs/gurus-api#obtaining-a-user-token. The username should be your Guru username.
|
553
|
+
#
|
554
|
+
# @param username [String]
|
555
|
+
# @param access_token [String]
|
556
|
+
# @param tags [Object]
|
557
|
+
# @param chunk_size [Integer]
|
558
|
+
# @param chunk_overlap [Integer]
|
559
|
+
# @param skip_embedding_generation [Boolean]
|
560
|
+
# @param embedding_model [EmbeddingGenerators]
|
561
|
+
# @param generate_sparse_vectors [Boolean]
|
562
|
+
# @param prepend_filename_to_chunks [Boolean]
|
563
|
+
# @param sync_files_on_connection [Boolean]
|
564
|
+
# @param request_id [String]
|
565
|
+
# @param sync_source_items [Boolean] Enabling this flag will fetch all available content from the source to be listed via list items endpoint
|
566
|
+
# @param file_sync_config [FileSyncConfigNullable]
|
567
|
+
# @param body [GuruConnectRequest]
|
568
|
+
# @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
|
569
|
+
def connect_guru_with_http_info(username:, access_token:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, sync_files_on_connection: true, request_id: SENTINEL, sync_source_items: true, file_sync_config: SENTINEL, extra: {})
|
570
|
+
_body = {}
|
571
|
+
_body[:tags] = tags if tags != SENTINEL
|
572
|
+
_body[:username] = username if username != SENTINEL
|
573
|
+
_body[:access_token] = access_token if access_token != SENTINEL
|
574
|
+
_body[:chunk_size] = chunk_size if chunk_size != SENTINEL
|
575
|
+
_body[:chunk_overlap] = chunk_overlap if chunk_overlap != SENTINEL
|
576
|
+
_body[:skip_embedding_generation] = skip_embedding_generation if skip_embedding_generation != SENTINEL
|
577
|
+
_body[:embedding_model] = embedding_model if embedding_model != SENTINEL
|
578
|
+
_body[:generate_sparse_vectors] = generate_sparse_vectors if generate_sparse_vectors != SENTINEL
|
579
|
+
_body[:prepend_filename_to_chunks] = prepend_filename_to_chunks if prepend_filename_to_chunks != SENTINEL
|
580
|
+
_body[:sync_files_on_connection] = sync_files_on_connection if sync_files_on_connection != SENTINEL
|
581
|
+
_body[:request_id] = request_id if request_id != SENTINEL
|
582
|
+
_body[:sync_source_items] = sync_source_items if sync_source_items != SENTINEL
|
583
|
+
_body[:file_sync_config] = file_sync_config if file_sync_config != SENTINEL
|
584
|
+
guru_connect_request = _body
|
585
|
+
connect_guru_with_http_info_impl(guru_connect_request, extra)
|
586
|
+
end
|
587
|
+
|
588
|
+
# Guru Connect
|
589
|
+
# You will need an access token to connect your Guru account. To obtain an access token, follow the steps highlighted here https://help.getguru.com/docs/gurus-api#obtaining-a-user-token. The username should be your Guru username.
|
590
|
+
# @param guru_connect_request [GuruConnectRequest]
|
591
|
+
# @param [Hash] opts the optional parameters
|
592
|
+
# @return [GenericSuccessResponse]
|
593
|
+
private def connect_guru_impl(guru_connect_request, opts = {})
|
594
|
+
data, _status_code, _headers = connect_guru_with_http_info(guru_connect_request, opts)
|
595
|
+
data
|
596
|
+
end
|
597
|
+
|
598
|
+
# Guru Connect
|
599
|
+
# You will need an access token to connect your Guru account. To obtain an access token, follow the steps highlighted here https://help.getguru.com/docs/gurus-api#obtaining-a-user-token. The username should be your Guru username.
|
600
|
+
# @param guru_connect_request [GuruConnectRequest]
|
601
|
+
# @param [Hash] opts the optional parameters
|
602
|
+
# @return [APIResponse] data is GenericSuccessResponse, status code, headers and response
|
603
|
+
private def connect_guru_with_http_info_impl(guru_connect_request, opts = {})
|
604
|
+
if @api_client.config.debugging
|
605
|
+
@api_client.config.logger.debug 'Calling API: IntegrationsApi.connect_guru ...'
|
606
|
+
end
|
607
|
+
# verify the required parameter 'guru_connect_request' is set
|
608
|
+
if @api_client.config.client_side_validation && guru_connect_request.nil?
|
609
|
+
fail ArgumentError, "Missing the required parameter 'guru_connect_request' when calling IntegrationsApi.connect_guru"
|
610
|
+
end
|
611
|
+
# resource path
|
612
|
+
local_var_path = '/integrations/guru'
|
613
|
+
|
614
|
+
# query parameters
|
615
|
+
query_params = opts[:query_params] || {}
|
616
|
+
|
617
|
+
# header parameters
|
618
|
+
header_params = opts[:header_params] || {}
|
619
|
+
# HTTP header 'Accept' (if needed)
|
620
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json'])
|
621
|
+
# HTTP header 'Content-Type'
|
622
|
+
content_type = @api_client.select_header_content_type(['application/json'])
|
623
|
+
if !content_type.nil?
|
624
|
+
header_params['Content-Type'] = content_type
|
625
|
+
end
|
626
|
+
|
627
|
+
# form parameters
|
628
|
+
form_params = opts[:form_params] || {}
|
629
|
+
|
630
|
+
# http body (model)
|
631
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(guru_connect_request)
|
632
|
+
|
633
|
+
# return_type
|
634
|
+
return_type = opts[:debug_return_type] || 'GenericSuccessResponse'
|
635
|
+
|
636
|
+
# auth_names
|
637
|
+
auth_names = opts[:debug_auth_names] || ['accessToken', 'apiKey', 'customerId']
|
638
|
+
|
639
|
+
new_options = opts.merge(
|
640
|
+
:operation => :"IntegrationsApi.connect_guru",
|
641
|
+
:header_params => header_params,
|
642
|
+
:query_params => query_params,
|
643
|
+
:form_params => form_params,
|
644
|
+
:body => post_body,
|
645
|
+
:auth_names => auth_names,
|
646
|
+
:return_type => return_type
|
647
|
+
)
|
648
|
+
|
649
|
+
data, status_code, headers, response = @api_client.call_api(:POST, local_var_path, new_options)
|
650
|
+
if @api_client.config.debugging
|
651
|
+
@api_client.config.logger.debug "API called: IntegrationsApi#connect_guru\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
652
|
+
end
|
653
|
+
APIResponse::new(data, status_code, headers, response)
|
654
|
+
end
|
655
|
+
|
656
|
+
|
509
657
|
# S3 Auth
|
510
658
|
#
|
511
659
|
# This endpoint can be used to connect S3 as well as Digital Ocean Spaces (S3 compatible)
|
@@ -2315,6 +2463,8 @@ module Carbon
|
|
2315
2463
|
# <b>is</b>: Can have the following values - starred, important, snoozed, and unread
|
2316
2464
|
# <b>from</b>: Email address of the sender
|
2317
2465
|
# <b>to</b>: Email address of the recipient
|
2466
|
+
# <b>in</b>: Can have the following values - sent (sync emails sent by the user)
|
2467
|
+
# <b>has</b>: Can have the following values - attachment (sync emails that have attachments)
|
2318
2468
|
#
|
2319
2469
|
# Using keys or values outside of the specified values can lead to unexpected behaviour.
|
2320
2470
|
#
|
@@ -2405,6 +2555,8 @@ module Carbon
|
|
2405
2555
|
# <b>is</b>: Can have the following values - starred, important, snoozed, and unread
|
2406
2556
|
# <b>from</b>: Email address of the sender
|
2407
2557
|
# <b>to</b>: Email address of the recipient
|
2558
|
+
# <b>in</b>: Can have the following values - sent (sync emails sent by the user)
|
2559
|
+
# <b>has</b>: Can have the following values - attachment (sync emails that have attachments)
|
2408
2560
|
#
|
2409
2561
|
# Using keys or values outside of the specified values can lead to unexpected behaviour.
|
2410
2562
|
#
|
@@ -2483,7 +2635,7 @@ module Carbon
|
|
2483
2635
|
end
|
2484
2636
|
|
2485
2637
|
# Gmail Sync
|
2486
|
-
# Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. <b>label</b>: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. <b>after</b> or <b>before</b>: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. <b>is</b>: Can have the following values - starred, important, snoozed, and unread <b>from</b>: Email address of the sender <b>to</b>: Email address of the recipient Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter in the above example.
|
2638
|
+
# Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. <b>label</b>: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. <b>after</b> or <b>before</b>: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. <b>is</b>: Can have the following values - starred, important, snoozed, and unread <b>from</b>: Email address of the sender <b>to</b>: Email address of the recipient <b>in</b>: Can have the following values - sent (sync emails sent by the user) <b>has</b>: Can have the following values - attachment (sync emails that have attachments) Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter in the above example.
|
2487
2639
|
# @param gmail_sync_input [GmailSyncInput]
|
2488
2640
|
# @param [Hash] opts the optional parameters
|
2489
2641
|
# @return [GenericSuccessResponse]
|
@@ -2493,7 +2645,7 @@ module Carbon
|
|
2493
2645
|
end
|
2494
2646
|
|
2495
2647
|
# Gmail Sync
|
2496
|
-
# Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. <b>label</b>: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. <b>after</b> or <b>before</b>: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. <b>is</b>: Can have the following values - starred, important, snoozed, and unread <b>from</b>: Email address of the sender <b>to</b>: Email address of the recipient Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter in the above example.
|
2648
|
+
# Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. <b>label</b>: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. <b>after</b> or <b>before</b>: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. <b>is</b>: Can have the following values - starred, important, snoozed, and unread <b>from</b>: Email address of the sender <b>to</b>: Email address of the recipient <b>in</b>: Can have the following values - sent (sync emails sent by the user) <b>has</b>: Can have the following values - attachment (sync emails that have attachments) Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter in the above example.
|
2497
2649
|
# @param gmail_sync_input [GmailSyncInput]
|
2498
2650
|
# @param [Hash] opts the optional parameters
|
2499
2651
|
# @return [APIResponse] data is GenericSuccessResponse, status code, headers and response
|
@@ -45,6 +45,7 @@ module Carbon
|
|
45
45
|
SALESFORCE = "SALESFORCE".freeze
|
46
46
|
GITHUB = "GITHUB".freeze
|
47
47
|
SLACK = "SLACK".freeze
|
48
|
+
GURU = "GURU".freeze
|
48
49
|
JPG = "JPG".freeze
|
49
50
|
PNG = "PNG".freeze
|
50
51
|
JPEG = "JPEG".freeze
|
@@ -67,9 +68,10 @@ module Carbon
|
|
67
68
|
FLV = "FLV".freeze
|
68
69
|
WEBM = "WEBM".freeze
|
69
70
|
EML = "EML".freeze
|
71
|
+
MSG = "MSG".freeze
|
70
72
|
|
71
73
|
def self.all_vars
|
72
|
-
@all_vars ||= [GOOGLE_CLOUD_STORAGE, GOOGLE_DRIVE, NOTION, NOTION_DATABASE, INTERCOM, DROPBOX, ONEDRIVE, SHAREPOINT, CONFLUENCE, BOX, ZENDESK, ZOTERO, S3, GMAIL, OUTLOOK, TEXT, CSV, TSV, PDF, DOCX, PPTX, XLSX, MD, RTF, JSON, HTML, RAW_TEXT, WEB_SCRAPE, RSS_FEED, FRESHDESK, GITBOOK, SALESFORCE, GITHUB, SLACK, JPG, PNG, JPEG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM, EML].freeze
|
74
|
+
@all_vars ||= [GOOGLE_CLOUD_STORAGE, GOOGLE_DRIVE, NOTION, NOTION_DATABASE, INTERCOM, DROPBOX, ONEDRIVE, SHAREPOINT, CONFLUENCE, BOX, ZENDESK, ZOTERO, S3, GMAIL, OUTLOOK, TEXT, CSV, TSV, PDF, DOCX, PPTX, XLSX, MD, RTF, JSON, HTML, RAW_TEXT, WEB_SCRAPE, RSS_FEED, FRESHDESK, GITBOOK, SALESFORCE, GITHUB, SLACK, GURU, JPG, PNG, JPEG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM, EML, MSG].freeze
|
73
75
|
end
|
74
76
|
|
75
77
|
# Builds the enum from string
|
@@ -45,6 +45,7 @@ module Carbon
|
|
45
45
|
SALESFORCE = "SALESFORCE".freeze
|
46
46
|
GITHUB = "GITHUB".freeze
|
47
47
|
SLACK = "SLACK".freeze
|
48
|
+
GURU = "GURU".freeze
|
48
49
|
JPG = "JPG".freeze
|
49
50
|
PNG = "PNG".freeze
|
50
51
|
JPEG = "JPEG".freeze
|
@@ -67,9 +68,10 @@ module Carbon
|
|
67
68
|
FLV = "FLV".freeze
|
68
69
|
WEBM = "WEBM".freeze
|
69
70
|
EML = "EML".freeze
|
71
|
+
MSG = "MSG".freeze
|
70
72
|
|
71
73
|
def self.all_vars
|
72
|
-
@all_vars ||= [GOOGLE_CLOUD_STORAGE, GOOGLE_DRIVE, NOTION, NOTION_DATABASE, INTERCOM, DROPBOX, ONEDRIVE, SHAREPOINT, CONFLUENCE, BOX, ZENDESK, ZOTERO, S3, GMAIL, OUTLOOK, TEXT, CSV, TSV, PDF, DOCX, PPTX, XLSX, MD, RTF, JSON, HTML, RAW_TEXT, WEB_SCRAPE, RSS_FEED, FRESHDESK, GITBOOK, SALESFORCE, GITHUB, SLACK, JPG, PNG, JPEG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM, EML].freeze
|
74
|
+
@all_vars ||= [GOOGLE_CLOUD_STORAGE, GOOGLE_DRIVE, NOTION, NOTION_DATABASE, INTERCOM, DROPBOX, ONEDRIVE, SHAREPOINT, CONFLUENCE, BOX, ZENDESK, ZOTERO, S3, GMAIL, OUTLOOK, TEXT, CSV, TSV, PDF, DOCX, PPTX, XLSX, MD, RTF, JSON, HTML, RAW_TEXT, WEB_SCRAPE, RSS_FEED, FRESHDESK, GITBOOK, SALESFORCE, GITHUB, SLACK, GURU, JPG, PNG, JPEG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM, EML, MSG].freeze
|
73
75
|
end
|
74
76
|
|
75
77
|
# Builds the enum from string
|
@@ -38,6 +38,7 @@ module Carbon
|
|
38
38
|
SALESFORCE = "SALESFORCE".freeze
|
39
39
|
GITHUB = "GITHUB".freeze
|
40
40
|
SLACK = "SLACK".freeze
|
41
|
+
GURU = "GURU".freeze
|
41
42
|
JPG = "JPG".freeze
|
42
43
|
PNG = "PNG".freeze
|
43
44
|
MP3 = "MP3".freeze
|
@@ -59,9 +60,10 @@ module Carbon
|
|
59
60
|
FLV = "FLV".freeze
|
60
61
|
WEBM = "WEBM".freeze
|
61
62
|
EML = "EML".freeze
|
63
|
+
MSG = "MSG".freeze
|
62
64
|
|
63
65
|
def self.all_vars
|
64
|
-
@all_vars ||= [TXT, CSV, TSV, PDF, DOCX, PPTX, XLSX, MD, RTF, JSON, HTML, NOTION, GOOGLE_DOCS, GOOGLE_SHEETS, GOOGLE_SLIDES, INTERCOM, CONFLUENCE, RSS_FEED, GMAIL, OUTLOOK, ZENDESK, FRESHDESK, WEB_SCRAPE, GITBOOK, SALESFORCE, GITHUB, SLACK, JPG, PNG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM, EML].freeze
|
66
|
+
@all_vars ||= [TXT, CSV, TSV, PDF, DOCX, PPTX, XLSX, MD, RTF, JSON, HTML, NOTION, GOOGLE_DOCS, GOOGLE_SHEETS, GOOGLE_SLIDES, INTERCOM, CONFLUENCE, RSS_FEED, GMAIL, OUTLOOK, ZENDESK, FRESHDESK, WEB_SCRAPE, GITBOOK, SALESFORCE, GITHUB, SLACK, GURU, JPG, PNG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM, EML, MSG].freeze
|
65
67
|
end
|
66
68
|
|
67
69
|
# Builds the enum from string
|
@@ -38,6 +38,7 @@ module Carbon
|
|
38
38
|
SALESFORCE = "SALESFORCE".freeze
|
39
39
|
GITHUB = "GITHUB".freeze
|
40
40
|
SLACK = "SLACK".freeze
|
41
|
+
GURU = "GURU".freeze
|
41
42
|
JPG = "JPG".freeze
|
42
43
|
PNG = "PNG".freeze
|
43
44
|
MP3 = "MP3".freeze
|
@@ -59,9 +60,10 @@ module Carbon
|
|
59
60
|
FLV = "FLV".freeze
|
60
61
|
WEBM = "WEBM".freeze
|
61
62
|
EML = "EML".freeze
|
63
|
+
MSG = "MSG".freeze
|
62
64
|
|
63
65
|
def self.all_vars
|
64
|
-
@all_vars ||= [TXT, CSV, TSV, PDF, DOCX, PPTX, XLSX, MD, RTF, JSON, HTML, NOTION, GOOGLE_DOCS, GOOGLE_SHEETS, GOOGLE_SLIDES, INTERCOM, CONFLUENCE, RSS_FEED, GMAIL, OUTLOOK, ZENDESK, FRESHDESK, WEB_SCRAPE, GITBOOK, SALESFORCE, GITHUB, SLACK, JPG, PNG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM, EML].freeze
|
66
|
+
@all_vars ||= [TXT, CSV, TSV, PDF, DOCX, PPTX, XLSX, MD, RTF, JSON, HTML, NOTION, GOOGLE_DOCS, GOOGLE_SHEETS, GOOGLE_SLIDES, INTERCOM, CONFLUENCE, RSS_FEED, GMAIL, OUTLOOK, ZENDESK, FRESHDESK, WEB_SCRAPE, GITBOOK, SALESFORCE, GITHUB, SLACK, GURU, JPG, PNG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM, EML, MSG].freeze
|
65
67
|
end
|
66
68
|
|
67
69
|
# Builds the enum from string
|
@@ -0,0 +1,244 @@
|
|
1
|
+
=begin
|
2
|
+
#Carbon
|
3
|
+
|
4
|
+
#Connect external data to LLMs, no matter the source.
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
7
|
+
=end
|
8
|
+
|
9
|
+
require 'date'
|
10
|
+
require 'time'
|
11
|
+
|
12
|
+
module Carbon
|
13
|
+
class GuruAuthentication
|
14
|
+
attr_accessor :source
|
15
|
+
|
16
|
+
attr_accessor :access_token
|
17
|
+
|
18
|
+
attr_accessor :username
|
19
|
+
|
20
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
21
|
+
def self.attribute_map
|
22
|
+
{
|
23
|
+
:'source' => :'source',
|
24
|
+
:'access_token' => :'access_token',
|
25
|
+
:'username' => :'username'
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
# Returns all the JSON keys this model knows about
|
30
|
+
def self.acceptable_attributes
|
31
|
+
attribute_map.values
|
32
|
+
end
|
33
|
+
|
34
|
+
# Attribute type mapping.
|
35
|
+
def self.openapi_types
|
36
|
+
{
|
37
|
+
:'source' => :'Object',
|
38
|
+
:'access_token' => :'String',
|
39
|
+
:'username' => :'String'
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
# List of attributes with nullable: true
|
44
|
+
def self.openapi_nullable
|
45
|
+
Set.new([
|
46
|
+
:'source',
|
47
|
+
])
|
48
|
+
end
|
49
|
+
|
50
|
+
# Initializes the object
|
51
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
52
|
+
def initialize(attributes = {})
|
53
|
+
if (!attributes.is_a?(Hash))
|
54
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Carbon::GuruAuthentication` initialize method"
|
55
|
+
end
|
56
|
+
|
57
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
58
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
59
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
60
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Carbon::GuruAuthentication`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
61
|
+
end
|
62
|
+
h[k.to_sym] = v
|
63
|
+
}
|
64
|
+
|
65
|
+
if attributes.key?(:'source')
|
66
|
+
self.source = attributes[:'source']
|
67
|
+
end
|
68
|
+
|
69
|
+
if attributes.key?(:'access_token')
|
70
|
+
self.access_token = attributes[:'access_token']
|
71
|
+
end
|
72
|
+
|
73
|
+
if attributes.key?(:'username')
|
74
|
+
self.username = attributes[:'username']
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
79
|
+
# @return Array for valid properties with the reasons
|
80
|
+
def list_invalid_properties
|
81
|
+
invalid_properties = Array.new
|
82
|
+
if @access_token.nil?
|
83
|
+
invalid_properties.push('invalid value for "access_token", access_token cannot be nil.')
|
84
|
+
end
|
85
|
+
|
86
|
+
if @username.nil?
|
87
|
+
invalid_properties.push('invalid value for "username", username cannot be nil.')
|
88
|
+
end
|
89
|
+
|
90
|
+
invalid_properties
|
91
|
+
end
|
92
|
+
|
93
|
+
# Check to see if the all the properties in the model are valid
|
94
|
+
# @return true if the model is valid
|
95
|
+
def valid?
|
96
|
+
return false if @access_token.nil?
|
97
|
+
return false if @username.nil?
|
98
|
+
true
|
99
|
+
end
|
100
|
+
|
101
|
+
# Checks equality by comparing each attribute.
|
102
|
+
# @param [Object] Object to be compared
|
103
|
+
def ==(o)
|
104
|
+
return true if self.equal?(o)
|
105
|
+
self.class == o.class &&
|
106
|
+
source == o.source &&
|
107
|
+
access_token == o.access_token &&
|
108
|
+
username == o.username
|
109
|
+
end
|
110
|
+
|
111
|
+
# @see the `==` method
|
112
|
+
# @param [Object] Object to be compared
|
113
|
+
def eql?(o)
|
114
|
+
self == o
|
115
|
+
end
|
116
|
+
|
117
|
+
# Calculates hash code according to all attributes.
|
118
|
+
# @return [Integer] Hash code
|
119
|
+
def hash
|
120
|
+
[source, access_token, username].hash
|
121
|
+
end
|
122
|
+
|
123
|
+
# Builds the object from hash
|
124
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
125
|
+
# @return [Object] Returns the model itself
|
126
|
+
def self.build_from_hash(attributes)
|
127
|
+
new.build_from_hash(attributes)
|
128
|
+
end
|
129
|
+
|
130
|
+
# Builds the object from hash
|
131
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
132
|
+
# @return [Object] Returns the model itself
|
133
|
+
def build_from_hash(attributes)
|
134
|
+
return nil unless attributes.is_a?(Hash)
|
135
|
+
attributes = attributes.transform_keys(&:to_sym)
|
136
|
+
self.class.openapi_types.each_pair do |key, type|
|
137
|
+
if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
|
138
|
+
self.send("#{key}=", nil)
|
139
|
+
elsif type =~ /\AArray<(.*)>/i
|
140
|
+
# check to ensure the input is an array given that the attribute
|
141
|
+
# is documented as an array but the input is not
|
142
|
+
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
143
|
+
self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
|
144
|
+
end
|
145
|
+
elsif !attributes[self.class.attribute_map[key]].nil?
|
146
|
+
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
self
|
151
|
+
end
|
152
|
+
|
153
|
+
# Deserializes the data based on type
|
154
|
+
# @param string type Data type
|
155
|
+
# @param string value Value to be deserialized
|
156
|
+
# @return [Object] Deserialized data
|
157
|
+
def _deserialize(type, value)
|
158
|
+
case type.to_sym
|
159
|
+
when :Time
|
160
|
+
Time.parse(value)
|
161
|
+
when :Date
|
162
|
+
Date.parse(value)
|
163
|
+
when :String
|
164
|
+
value.to_s
|
165
|
+
when :Integer
|
166
|
+
value.to_i
|
167
|
+
when :Float
|
168
|
+
value.to_f
|
169
|
+
when :Boolean
|
170
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
171
|
+
true
|
172
|
+
else
|
173
|
+
false
|
174
|
+
end
|
175
|
+
when :Object
|
176
|
+
# generic object (usually a Hash), return directly
|
177
|
+
value
|
178
|
+
when /\AArray<(?<inner_type>.+)>\z/
|
179
|
+
inner_type = Regexp.last_match[:inner_type]
|
180
|
+
value.map { |v| _deserialize(inner_type, v) }
|
181
|
+
when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
|
182
|
+
k_type = Regexp.last_match[:k_type]
|
183
|
+
v_type = Regexp.last_match[:v_type]
|
184
|
+
{}.tap do |hash|
|
185
|
+
value.each do |k, v|
|
186
|
+
hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
|
187
|
+
end
|
188
|
+
end
|
189
|
+
else # model
|
190
|
+
# models (e.g. Pet) or oneOf
|
191
|
+
klass = Carbon.const_get(type)
|
192
|
+
klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
# Returns the string representation of the object
|
197
|
+
# @return [String] String presentation of the object
|
198
|
+
def to_s
|
199
|
+
to_hash.to_s
|
200
|
+
end
|
201
|
+
|
202
|
+
# to_body is an alias to to_hash (backward compatibility)
|
203
|
+
# @return [Hash] Returns the object in the form of hash
|
204
|
+
def to_body
|
205
|
+
to_hash
|
206
|
+
end
|
207
|
+
|
208
|
+
# Returns the object in the form of hash
|
209
|
+
# @return [Hash] Returns the object in the form of hash
|
210
|
+
def to_hash
|
211
|
+
hash = {}
|
212
|
+
self.class.attribute_map.each_pair do |attr, param|
|
213
|
+
value = self.send(attr)
|
214
|
+
if value.nil?
|
215
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
216
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
217
|
+
end
|
218
|
+
|
219
|
+
hash[param] = _to_hash(value)
|
220
|
+
end
|
221
|
+
hash
|
222
|
+
end
|
223
|
+
|
224
|
+
# Outputs non-array value in the form of hash
|
225
|
+
# For object, use to_hash. Otherwise, just return the value
|
226
|
+
# @param [Object] value Any valid value
|
227
|
+
# @return [Hash] Returns the value in the form of hash
|
228
|
+
def _to_hash(value)
|
229
|
+
if value.is_a?(Array)
|
230
|
+
value.compact.map { |v| _to_hash(v) }
|
231
|
+
elsif value.is_a?(Hash)
|
232
|
+
{}.tap do |hash|
|
233
|
+
value.each { |k, v| hash[k] = _to_hash(v) }
|
234
|
+
end
|
235
|
+
elsif value.respond_to? :to_hash
|
236
|
+
value.to_hash
|
237
|
+
else
|
238
|
+
value
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
end
|
243
|
+
|
244
|
+
end
|
@@ -0,0 +1,359 @@
|
|
1
|
+
=begin
|
2
|
+
#Carbon
|
3
|
+
|
4
|
+
#Connect external data to LLMs, no matter the source.
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
7
|
+
=end
|
8
|
+
|
9
|
+
require 'date'
|
10
|
+
require 'time'
|
11
|
+
|
12
|
+
module Carbon
|
13
|
+
class GuruConnectRequest
|
14
|
+
attr_accessor :tags
|
15
|
+
|
16
|
+
attr_accessor :username
|
17
|
+
|
18
|
+
attr_accessor :access_token
|
19
|
+
|
20
|
+
attr_accessor :chunk_size
|
21
|
+
|
22
|
+
attr_accessor :chunk_overlap
|
23
|
+
|
24
|
+
attr_accessor :skip_embedding_generation
|
25
|
+
|
26
|
+
attr_accessor :embedding_model
|
27
|
+
|
28
|
+
attr_accessor :generate_sparse_vectors
|
29
|
+
|
30
|
+
attr_accessor :prepend_filename_to_chunks
|
31
|
+
|
32
|
+
attr_accessor :sync_files_on_connection
|
33
|
+
|
34
|
+
attr_accessor :request_id
|
35
|
+
|
36
|
+
# Enabling this flag will fetch all available content from the source to be listed via list items endpoint
|
37
|
+
attr_accessor :sync_source_items
|
38
|
+
|
39
|
+
attr_accessor :file_sync_config
|
40
|
+
|
41
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
42
|
+
def self.attribute_map
|
43
|
+
{
|
44
|
+
:'tags' => :'tags',
|
45
|
+
:'username' => :'username',
|
46
|
+
:'access_token' => :'access_token',
|
47
|
+
:'chunk_size' => :'chunk_size',
|
48
|
+
:'chunk_overlap' => :'chunk_overlap',
|
49
|
+
:'skip_embedding_generation' => :'skip_embedding_generation',
|
50
|
+
:'embedding_model' => :'embedding_model',
|
51
|
+
:'generate_sparse_vectors' => :'generate_sparse_vectors',
|
52
|
+
:'prepend_filename_to_chunks' => :'prepend_filename_to_chunks',
|
53
|
+
:'sync_files_on_connection' => :'sync_files_on_connection',
|
54
|
+
:'request_id' => :'request_id',
|
55
|
+
:'sync_source_items' => :'sync_source_items',
|
56
|
+
:'file_sync_config' => :'file_sync_config'
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
# Returns all the JSON keys this model knows about
|
61
|
+
def self.acceptable_attributes
|
62
|
+
attribute_map.values
|
63
|
+
end
|
64
|
+
|
65
|
+
# Attribute type mapping.
|
66
|
+
def self.openapi_types
|
67
|
+
{
|
68
|
+
:'tags' => :'Object',
|
69
|
+
:'username' => :'String',
|
70
|
+
:'access_token' => :'String',
|
71
|
+
:'chunk_size' => :'Integer',
|
72
|
+
:'chunk_overlap' => :'Integer',
|
73
|
+
:'skip_embedding_generation' => :'Boolean',
|
74
|
+
:'embedding_model' => :'EmbeddingGenerators',
|
75
|
+
:'generate_sparse_vectors' => :'Boolean',
|
76
|
+
:'prepend_filename_to_chunks' => :'Boolean',
|
77
|
+
:'sync_files_on_connection' => :'Boolean',
|
78
|
+
:'request_id' => :'String',
|
79
|
+
:'sync_source_items' => :'Boolean',
|
80
|
+
:'file_sync_config' => :'FileSyncConfigNullable'
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
84
|
+
# List of attributes with nullable: true
|
85
|
+
def self.openapi_nullable
|
86
|
+
Set.new([
|
87
|
+
:'tags',
|
88
|
+
:'chunk_size',
|
89
|
+
:'chunk_overlap',
|
90
|
+
:'skip_embedding_generation',
|
91
|
+
:'generate_sparse_vectors',
|
92
|
+
:'prepend_filename_to_chunks',
|
93
|
+
:'sync_files_on_connection',
|
94
|
+
:'request_id',
|
95
|
+
:'file_sync_config'
|
96
|
+
])
|
97
|
+
end
|
98
|
+
|
99
|
+
# Initializes the object
|
100
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
101
|
+
def initialize(attributes = {})
|
102
|
+
if (!attributes.is_a?(Hash))
|
103
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Carbon::GuruConnectRequest` initialize method"
|
104
|
+
end
|
105
|
+
|
106
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
107
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
108
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
109
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Carbon::GuruConnectRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
110
|
+
end
|
111
|
+
h[k.to_sym] = v
|
112
|
+
}
|
113
|
+
|
114
|
+
if attributes.key?(:'tags')
|
115
|
+
self.tags = attributes[:'tags']
|
116
|
+
end
|
117
|
+
|
118
|
+
if attributes.key?(:'username')
|
119
|
+
self.username = attributes[:'username']
|
120
|
+
end
|
121
|
+
|
122
|
+
if attributes.key?(:'access_token')
|
123
|
+
self.access_token = attributes[:'access_token']
|
124
|
+
end
|
125
|
+
|
126
|
+
if attributes.key?(:'chunk_size')
|
127
|
+
self.chunk_size = attributes[:'chunk_size']
|
128
|
+
else
|
129
|
+
self.chunk_size = 1500
|
130
|
+
end
|
131
|
+
|
132
|
+
if attributes.key?(:'chunk_overlap')
|
133
|
+
self.chunk_overlap = attributes[:'chunk_overlap']
|
134
|
+
else
|
135
|
+
self.chunk_overlap = 20
|
136
|
+
end
|
137
|
+
|
138
|
+
if attributes.key?(:'skip_embedding_generation')
|
139
|
+
self.skip_embedding_generation = attributes[:'skip_embedding_generation']
|
140
|
+
else
|
141
|
+
self.skip_embedding_generation = false
|
142
|
+
end
|
143
|
+
|
144
|
+
if attributes.key?(:'embedding_model')
|
145
|
+
self.embedding_model = attributes[:'embedding_model']
|
146
|
+
else
|
147
|
+
self.embedding_model = 'OPENAI'
|
148
|
+
end
|
149
|
+
|
150
|
+
if attributes.key?(:'generate_sparse_vectors')
|
151
|
+
self.generate_sparse_vectors = attributes[:'generate_sparse_vectors']
|
152
|
+
else
|
153
|
+
self.generate_sparse_vectors = false
|
154
|
+
end
|
155
|
+
|
156
|
+
if attributes.key?(:'prepend_filename_to_chunks')
|
157
|
+
self.prepend_filename_to_chunks = attributes[:'prepend_filename_to_chunks']
|
158
|
+
else
|
159
|
+
self.prepend_filename_to_chunks = false
|
160
|
+
end
|
161
|
+
|
162
|
+
if attributes.key?(:'sync_files_on_connection')
|
163
|
+
self.sync_files_on_connection = attributes[:'sync_files_on_connection']
|
164
|
+
else
|
165
|
+
self.sync_files_on_connection = true
|
166
|
+
end
|
167
|
+
|
168
|
+
if attributes.key?(:'request_id')
|
169
|
+
self.request_id = attributes[:'request_id']
|
170
|
+
end
|
171
|
+
|
172
|
+
if attributes.key?(:'sync_source_items')
|
173
|
+
self.sync_source_items = attributes[:'sync_source_items']
|
174
|
+
else
|
175
|
+
self.sync_source_items = true
|
176
|
+
end
|
177
|
+
|
178
|
+
if attributes.key?(:'file_sync_config')
|
179
|
+
self.file_sync_config = attributes[:'file_sync_config']
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
184
|
+
# @return Array for valid properties with the reasons
|
185
|
+
def list_invalid_properties
|
186
|
+
invalid_properties = Array.new
|
187
|
+
if @username.nil?
|
188
|
+
invalid_properties.push('invalid value for "username", username cannot be nil.')
|
189
|
+
end
|
190
|
+
|
191
|
+
if @access_token.nil?
|
192
|
+
invalid_properties.push('invalid value for "access_token", access_token cannot be nil.')
|
193
|
+
end
|
194
|
+
|
195
|
+
invalid_properties
|
196
|
+
end
|
197
|
+
|
198
|
+
# Check to see if the all the properties in the model are valid
|
199
|
+
# @return true if the model is valid
|
200
|
+
def valid?
|
201
|
+
return false if @username.nil?
|
202
|
+
return false if @access_token.nil?
|
203
|
+
true
|
204
|
+
end
|
205
|
+
|
206
|
+
# Checks equality by comparing each attribute.
|
207
|
+
# @param [Object] Object to be compared
|
208
|
+
def ==(o)
|
209
|
+
return true if self.equal?(o)
|
210
|
+
self.class == o.class &&
|
211
|
+
tags == o.tags &&
|
212
|
+
username == o.username &&
|
213
|
+
access_token == o.access_token &&
|
214
|
+
chunk_size == o.chunk_size &&
|
215
|
+
chunk_overlap == o.chunk_overlap &&
|
216
|
+
skip_embedding_generation == o.skip_embedding_generation &&
|
217
|
+
embedding_model == o.embedding_model &&
|
218
|
+
generate_sparse_vectors == o.generate_sparse_vectors &&
|
219
|
+
prepend_filename_to_chunks == o.prepend_filename_to_chunks &&
|
220
|
+
sync_files_on_connection == o.sync_files_on_connection &&
|
221
|
+
request_id == o.request_id &&
|
222
|
+
sync_source_items == o.sync_source_items &&
|
223
|
+
file_sync_config == o.file_sync_config
|
224
|
+
end
|
225
|
+
|
226
|
+
# @see the `==` method
|
227
|
+
# @param [Object] Object to be compared
|
228
|
+
def eql?(o)
|
229
|
+
self == o
|
230
|
+
end
|
231
|
+
|
232
|
+
# Calculates hash code according to all attributes.
|
233
|
+
# @return [Integer] Hash code
|
234
|
+
def hash
|
235
|
+
[tags, username, access_token, chunk_size, chunk_overlap, skip_embedding_generation, embedding_model, generate_sparse_vectors, prepend_filename_to_chunks, sync_files_on_connection, request_id, sync_source_items, file_sync_config].hash
|
236
|
+
end
|
237
|
+
|
238
|
+
# Builds the object from hash
|
239
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
240
|
+
# @return [Object] Returns the model itself
|
241
|
+
def self.build_from_hash(attributes)
|
242
|
+
new.build_from_hash(attributes)
|
243
|
+
end
|
244
|
+
|
245
|
+
# Builds the object from hash
|
246
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
247
|
+
# @return [Object] Returns the model itself
|
248
|
+
def build_from_hash(attributes)
|
249
|
+
return nil unless attributes.is_a?(Hash)
|
250
|
+
attributes = attributes.transform_keys(&:to_sym)
|
251
|
+
self.class.openapi_types.each_pair do |key, type|
|
252
|
+
if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
|
253
|
+
self.send("#{key}=", nil)
|
254
|
+
elsif type =~ /\AArray<(.*)>/i
|
255
|
+
# check to ensure the input is an array given that the attribute
|
256
|
+
# is documented as an array but the input is not
|
257
|
+
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
258
|
+
self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
|
259
|
+
end
|
260
|
+
elsif !attributes[self.class.attribute_map[key]].nil?
|
261
|
+
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
self
|
266
|
+
end
|
267
|
+
|
268
|
+
# Deserializes the data based on type
|
269
|
+
# @param string type Data type
|
270
|
+
# @param string value Value to be deserialized
|
271
|
+
# @return [Object] Deserialized data
|
272
|
+
def _deserialize(type, value)
|
273
|
+
case type.to_sym
|
274
|
+
when :Time
|
275
|
+
Time.parse(value)
|
276
|
+
when :Date
|
277
|
+
Date.parse(value)
|
278
|
+
when :String
|
279
|
+
value.to_s
|
280
|
+
when :Integer
|
281
|
+
value.to_i
|
282
|
+
when :Float
|
283
|
+
value.to_f
|
284
|
+
when :Boolean
|
285
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
286
|
+
true
|
287
|
+
else
|
288
|
+
false
|
289
|
+
end
|
290
|
+
when :Object
|
291
|
+
# generic object (usually a Hash), return directly
|
292
|
+
value
|
293
|
+
when /\AArray<(?<inner_type>.+)>\z/
|
294
|
+
inner_type = Regexp.last_match[:inner_type]
|
295
|
+
value.map { |v| _deserialize(inner_type, v) }
|
296
|
+
when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
|
297
|
+
k_type = Regexp.last_match[:k_type]
|
298
|
+
v_type = Regexp.last_match[:v_type]
|
299
|
+
{}.tap do |hash|
|
300
|
+
value.each do |k, v|
|
301
|
+
hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
|
302
|
+
end
|
303
|
+
end
|
304
|
+
else # model
|
305
|
+
# models (e.g. Pet) or oneOf
|
306
|
+
klass = Carbon.const_get(type)
|
307
|
+
klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
# Returns the string representation of the object
|
312
|
+
# @return [String] String presentation of the object
|
313
|
+
def to_s
|
314
|
+
to_hash.to_s
|
315
|
+
end
|
316
|
+
|
317
|
+
# to_body is an alias to to_hash (backward compatibility)
|
318
|
+
# @return [Hash] Returns the object in the form of hash
|
319
|
+
def to_body
|
320
|
+
to_hash
|
321
|
+
end
|
322
|
+
|
323
|
+
# Returns the object in the form of hash
|
324
|
+
# @return [Hash] Returns the object in the form of hash
|
325
|
+
def to_hash
|
326
|
+
hash = {}
|
327
|
+
self.class.attribute_map.each_pair do |attr, param|
|
328
|
+
value = self.send(attr)
|
329
|
+
if value.nil?
|
330
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
331
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
332
|
+
end
|
333
|
+
|
334
|
+
hash[param] = _to_hash(value)
|
335
|
+
end
|
336
|
+
hash
|
337
|
+
end
|
338
|
+
|
339
|
+
# Outputs non-array value in the form of hash
|
340
|
+
# For object, use to_hash. Otherwise, just return the value
|
341
|
+
# @param [Object] value Any valid value
|
342
|
+
# @return [Hash] Returns the value in the form of hash
|
343
|
+
def _to_hash(value)
|
344
|
+
if value.is_a?(Array)
|
345
|
+
value.compact.map { |v| _to_hash(v) }
|
346
|
+
elsif value.is_a?(Hash)
|
347
|
+
{}.tap do |hash|
|
348
|
+
value.each { |k, v| hash[k] = _to_hash(v) }
|
349
|
+
end
|
350
|
+
elsif value.respond_to? :to_hash
|
351
|
+
value.to_hash
|
352
|
+
else
|
353
|
+
value
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
end
|
358
|
+
|
359
|
+
end
|
data/lib/carbon_ruby_sdk.rb
CHANGED
@@ -75,6 +75,8 @@ require 'carbon_ruby_sdk/models/github_authentication'
|
|
75
75
|
require 'carbon_ruby_sdk/models/github_connect_request'
|
76
76
|
require 'carbon_ruby_sdk/models/github_fetch_repos_request'
|
77
77
|
require 'carbon_ruby_sdk/models/gmail_sync_input'
|
78
|
+
require 'carbon_ruby_sdk/models/guru_authentication'
|
79
|
+
require 'carbon_ruby_sdk/models/guru_connect_request'
|
78
80
|
require 'carbon_ruby_sdk/models/http_validation_error'
|
79
81
|
require 'carbon_ruby_sdk/models/helpdesk_file_types'
|
80
82
|
require 'carbon_ruby_sdk/models/hybrid_search_tuning_params'
|
@@ -72,6 +72,18 @@ describe 'IntegrationsApi' do
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
# unit tests for connect_guru
|
76
|
+
# Guru Connect
|
77
|
+
# You will need an access token to connect your Guru account. To obtain an access token, follow the steps highlighted here https://help.getguru.com/docs/gurus-api#obtaining-a-user-token. The username should be your Guru username.
|
78
|
+
# @param guru_connect_request
|
79
|
+
# @param [Hash] opts the optional parameters
|
80
|
+
# @return [GenericSuccessResponse]
|
81
|
+
describe 'connect_guru test' do
|
82
|
+
it 'should work' do
|
83
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
75
87
|
# unit tests for create_aws_iam_user
|
76
88
|
# S3 Auth
|
77
89
|
# This endpoint can be used to connect S3 as well as Digital Ocean Spaces (S3 compatible) For S3, create a new IAM user with permissions to: <ol> <li>List all buckets.</li> <li>Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry the same permissions.</li> </ol> Once created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand. For Digital Ocean Spaces, generate the above credentials in your Applications and API page here https://cloud.digitalocean.com/account/api/spaces. Endpoint URL is required to connect Digital Ocean Spaces. It should look like <<region>>.digitaloceanspaces.com
|
@@ -257,7 +269,7 @@ describe 'IntegrationsApi' do
|
|
257
269
|
|
258
270
|
# unit tests for sync_gmail
|
259
271
|
# Gmail Sync
|
260
|
-
# Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. <b>label</b>: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. <b>after</b> or <b>before</b>: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. <b>is</b>: Can have the following values - starred, important, snoozed, and unread <b>from</b>: Email address of the sender <b>to</b>: Email address of the recipient Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter in the above example.
|
272
|
+
# Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. <b>label</b>: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. <b>after</b> or <b>before</b>: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. <b>is</b>: Can have the following values - starred, important, snoozed, and unread <b>from</b>: Email address of the sender <b>to</b>: Email address of the recipient <b>in</b>: Can have the following values - sent (sync emails sent by the user) <b>has</b>: Can have the following values - attachment (sync emails that have attachments) Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter in the above example.
|
261
273
|
# @param gmail_sync_input
|
262
274
|
# @param [Hash] opts the optional parameters
|
263
275
|
# @return [GenericSuccessResponse]
|
@@ -0,0 +1,40 @@
|
|
1
|
+
=begin
|
2
|
+
#Carbon
|
3
|
+
|
4
|
+
#Connect external data to LLMs, no matter the source.
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
7
|
+
=end
|
8
|
+
|
9
|
+
require 'spec_helper'
|
10
|
+
require 'json'
|
11
|
+
require 'date'
|
12
|
+
|
13
|
+
# Unit tests for Carbon::GuruAuthentication
|
14
|
+
describe Carbon::GuruAuthentication do
|
15
|
+
let(:instance) { Carbon::GuruAuthentication.new }
|
16
|
+
|
17
|
+
describe 'test an instance of GuruAuthentication' do
|
18
|
+
it 'should create an instance of GuruAuthentication' do
|
19
|
+
expect(instance).to be_instance_of(Carbon::GuruAuthentication)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
describe 'test attribute "source"' do
|
23
|
+
it 'should work' do
|
24
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'test attribute "access_token"' do
|
29
|
+
it 'should work' do
|
30
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'test attribute "username"' do
|
35
|
+
it 'should work' do
|
36
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
=begin
|
2
|
+
#Carbon
|
3
|
+
|
4
|
+
#Connect external data to LLMs, no matter the source.
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
7
|
+
=end
|
8
|
+
|
9
|
+
require 'spec_helper'
|
10
|
+
require 'json'
|
11
|
+
require 'date'
|
12
|
+
|
13
|
+
# Unit tests for Carbon::GuruConnectRequest
|
14
|
+
describe Carbon::GuruConnectRequest do
|
15
|
+
let(:instance) { Carbon::GuruConnectRequest.new }
|
16
|
+
|
17
|
+
describe 'test an instance of GuruConnectRequest' do
|
18
|
+
it 'should create an instance of GuruConnectRequest' do
|
19
|
+
expect(instance).to be_instance_of(Carbon::GuruConnectRequest)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
describe 'test attribute "tags"' do
|
23
|
+
it 'should work' do
|
24
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'test attribute "username"' do
|
29
|
+
it 'should work' do
|
30
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'test attribute "access_token"' do
|
35
|
+
it 'should work' do
|
36
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'test attribute "chunk_size"' do
|
41
|
+
it 'should work' do
|
42
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe 'test attribute "chunk_overlap"' do
|
47
|
+
it 'should work' do
|
48
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'test attribute "skip_embedding_generation"' do
|
53
|
+
it 'should work' do
|
54
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe 'test attribute "embedding_model"' do
|
59
|
+
it 'should work' do
|
60
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe 'test attribute "generate_sparse_vectors"' do
|
65
|
+
it 'should work' do
|
66
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'test attribute "prepend_filename_to_chunks"' do
|
71
|
+
it 'should work' do
|
72
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe 'test attribute "sync_files_on_connection"' do
|
77
|
+
it 'should work' do
|
78
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'test attribute "request_id"' do
|
83
|
+
it 'should work' do
|
84
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe 'test attribute "sync_source_items"' do
|
89
|
+
it 'should work' do
|
90
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe 'test attribute "file_sync_config"' do
|
95
|
+
it 'should work' do
|
96
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carbon_ruby_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konfig
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -157,6 +157,8 @@ files:
|
|
157
157
|
- lib/carbon_ruby_sdk/models/github_connect_request.rb
|
158
158
|
- lib/carbon_ruby_sdk/models/github_fetch_repos_request.rb
|
159
159
|
- lib/carbon_ruby_sdk/models/gmail_sync_input.rb
|
160
|
+
- lib/carbon_ruby_sdk/models/guru_authentication.rb
|
161
|
+
- lib/carbon_ruby_sdk/models/guru_connect_request.rb
|
160
162
|
- lib/carbon_ruby_sdk/models/helpdesk_file_types.rb
|
161
163
|
- lib/carbon_ruby_sdk/models/http_validation_error.rb
|
162
164
|
- lib/carbon_ruby_sdk/models/hybrid_search_tuning_params.rb
|
@@ -331,6 +333,8 @@ files:
|
|
331
333
|
- spec/models/github_connect_request_spec.rb
|
332
334
|
- spec/models/github_fetch_repos_request_spec.rb
|
333
335
|
- spec/models/gmail_sync_input_spec.rb
|
336
|
+
- spec/models/guru_authentication_spec.rb
|
337
|
+
- spec/models/guru_connect_request_spec.rb
|
334
338
|
- spec/models/helpdesk_file_types_spec.rb
|
335
339
|
- spec/models/http_validation_error_spec.rb
|
336
340
|
- spec/models/hybrid_search_tuning_params_nullable_spec.rb
|
@@ -512,6 +516,7 @@ test_files:
|
|
512
516
|
- spec/models/gitbook_authetication_spec.rb
|
513
517
|
- spec/models/connect_data_source_response_spec.rb
|
514
518
|
- spec/models/list_data_source_items_response_spec.rb
|
519
|
+
- spec/models/guru_authentication_spec.rb
|
515
520
|
- spec/models/s3_auth_request_spec.rb
|
516
521
|
- spec/models/file_statistics_nullable_spec.rb
|
517
522
|
- spec/models/delete_users_input_spec.rb
|
@@ -527,6 +532,7 @@ test_files:
|
|
527
532
|
- spec/models/sent_webhook_payload_object_additional_information_spec.rb
|
528
533
|
- spec/models/outh_url_response_spec.rb
|
529
534
|
- spec/models/slack_sync_request_spec.rb
|
535
|
+
- spec/models/guru_connect_request_spec.rb
|
530
536
|
- spec/models/organization_user_data_source_filters_spec.rb
|
531
537
|
- spec/models/user_file_spec.rb
|
532
538
|
- spec/models/get_embedding_documents_body_spec.rb
|