carbon_ruby_sdk 0.2.28 → 0.2.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +5 -7
  3. data/README.md +109 -6
  4. data/lib/carbon_ruby_sdk/api/embeddings_api.rb +2 -2
  5. data/lib/carbon_ruby_sdk/api/files_api.rb +21 -6
  6. data/lib/carbon_ruby_sdk/api/integrations_api.rb +166 -10
  7. data/lib/carbon_ruby_sdk/api/utilities_api.rb +6 -2
  8. data/lib/carbon_ruby_sdk/models/authentication_property.rb +63 -5
  9. data/lib/carbon_ruby_sdk/models/auto_synced_source_types_property_inner.rb +226 -0
  10. data/lib/carbon_ruby_sdk/models/data_source_type.rb +4 -1
  11. data/lib/carbon_ruby_sdk/models/data_source_type_nullable.rb +4 -1
  12. data/lib/carbon_ruby_sdk/models/external_data_source_type.rb +2 -1
  13. data/lib/carbon_ruby_sdk/models/file_formats.rb +4 -1
  14. data/lib/carbon_ruby_sdk/models/file_formats_nullable.rb +4 -1
  15. data/lib/carbon_ruby_sdk/models/file_sync_config.rb +17 -5
  16. data/lib/carbon_ruby_sdk/models/file_sync_config_nullable.rb +17 -5
  17. data/lib/carbon_ruby_sdk/models/get_embedding_documents_body.rb +1 -1
  18. data/lib/carbon_ruby_sdk/models/guru_authentication.rb +244 -0
  19. data/lib/carbon_ruby_sdk/models/guru_connect_request.rb +359 -0
  20. data/lib/carbon_ruby_sdk/models/o_auth_url_request.rb +16 -6
  21. data/lib/carbon_ruby_sdk/models/organization_user_files_to_sync_filters.rb +1 -1
  22. data/lib/carbon_ruby_sdk/models/raw_text_input.rb +16 -4
  23. data/lib/carbon_ruby_sdk/models/service_now_authentication.rb +296 -0
  24. data/lib/carbon_ruby_sdk/models/service_now_credentials.rb +262 -0
  25. data/lib/carbon_ruby_sdk/models/service_now_credentials_nullable.rb +263 -0
  26. data/lib/carbon_ruby_sdk/models/service_now_file_types.rb +37 -0
  27. data/lib/carbon_ruby_sdk/models/sitemap_scrape_request.rb +17 -5
  28. data/lib/carbon_ruby_sdk/models/sync_files_request.rb +1 -1
  29. data/lib/carbon_ruby_sdk/models/sync_options.rb +1 -1
  30. data/lib/carbon_ruby_sdk/models/upload_file_from_url_input.rb +16 -4
  31. data/lib/carbon_ruby_sdk/models/webscrape_request.rb +17 -5
  32. data/lib/carbon_ruby_sdk/version.rb +1 -1
  33. data/lib/carbon_ruby_sdk.rb +7 -0
  34. data/spec/api/files_api_spec.rb +1 -0
  35. data/spec/api/integrations_api_spec.rb +13 -1
  36. data/spec/models/authentication_property_spec.rb +24 -0
  37. data/spec/models/auto_synced_source_types_property_inner_spec.rb +22 -0
  38. data/spec/models/file_sync_config_nullable_spec.rb +6 -0
  39. data/spec/models/file_sync_config_spec.rb +6 -0
  40. data/spec/models/guru_authentication_spec.rb +40 -0
  41. data/spec/models/guru_connect_request_spec.rb +100 -0
  42. data/spec/models/o_auth_url_request_spec.rb +6 -0
  43. data/spec/models/raw_text_input_spec.rb +6 -0
  44. data/spec/models/service_now_authentication_spec.rb +64 -0
  45. data/spec/models/service_now_credentials_nullable_spec.rb +46 -0
  46. data/spec/models/service_now_credentials_spec.rb +46 -0
  47. data/spec/models/service_now_file_types_spec.rb +22 -0
  48. data/spec/models/sitemap_scrape_request_spec.rb +6 -0
  49. data/spec/models/upload_file_from_url_input_spec.rb +6 -0
  50. data/spec/models/webscrape_request_spec.rb +6 -0
  51. metadata +169 -148
@@ -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)
@@ -665,12 +813,13 @@ module Carbon
665
813
  # @param parse_pdf_tables_with_ocr [Boolean]
666
814
  # @param enable_file_picker [Boolean] Enable integration's file picker for sources that support it. Supported sources: BOX, DROPBOX, GOOGLE_DRIVE, ONEDRIVE, SHAREPOINT
667
815
  # @param sync_source_items [Boolean] Enabling this flag will fetch all available content from the source to be listed via list items endpoint
668
- # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT. It will be ignored for other data sources.
816
+ # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT, SERVICENOW. It will be ignored for other data sources.
669
817
  # @param file_sync_config [FileSyncConfigNullable]
670
818
  # @param automatically_open_file_picker [Boolean] Automatically open source file picker after the OAuth flow is complete. This flag is currently supported by BOX, DROPBOX, GOOGLE_DRIVE, ONEDRIVE, SHAREPOINT. It will be ignored for other data sources.
819
+ # @param servicenow_credentials [ServiceNowCredentialsNullable]
671
820
  # @param body [OAuthURLRequest]
672
821
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
673
- def get_oauth_url(service:, tags: SENTINEL, scope: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', zendesk_subdomain: SENTINEL, microsoft_tenant: SENTINEL, sharepoint_site_name: SENTINEL, confluence_subdomain: SENTINEL, generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, salesforce_domain: SENTINEL, sync_files_on_connection: true, set_page_as_boundary: false, data_source_id: SENTINEL, connecting_new_account: false, request_id: SENTINEL, use_ocr: false, parse_pdf_tables_with_ocr: false, enable_file_picker: true, sync_source_items: true, incremental_sync: false, file_sync_config: SENTINEL, automatically_open_file_picker: SENTINEL, extra: {})
822
+ def get_oauth_url(service:, tags: SENTINEL, scope: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', zendesk_subdomain: SENTINEL, microsoft_tenant: SENTINEL, sharepoint_site_name: SENTINEL, confluence_subdomain: SENTINEL, generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, salesforce_domain: SENTINEL, sync_files_on_connection: true, set_page_as_boundary: false, data_source_id: SENTINEL, connecting_new_account: false, request_id: SENTINEL, use_ocr: false, parse_pdf_tables_with_ocr: false, enable_file_picker: true, sync_source_items: true, incremental_sync: false, file_sync_config: SENTINEL, automatically_open_file_picker: SENTINEL, servicenow_credentials: SENTINEL, extra: {})
674
823
  _body = {}
675
824
  _body[:tags] = tags if tags != SENTINEL
676
825
  _body[:scope] = scope if scope != SENTINEL
@@ -699,6 +848,7 @@ module Carbon
699
848
  _body[:incremental_sync] = incremental_sync if incremental_sync != SENTINEL
700
849
  _body[:file_sync_config] = file_sync_config if file_sync_config != SENTINEL
701
850
  _body[:automatically_open_file_picker] = automatically_open_file_picker if automatically_open_file_picker != SENTINEL
851
+ _body[:servicenow_credentials] = servicenow_credentials if servicenow_credentials != SENTINEL
702
852
  o_auth_url_request = _body
703
853
  api_response = get_oauth_url_with_http_info_impl(o_auth_url_request, extra)
704
854
  api_response.data
@@ -735,12 +885,13 @@ module Carbon
735
885
  # @param parse_pdf_tables_with_ocr [Boolean]
736
886
  # @param enable_file_picker [Boolean] Enable integration's file picker for sources that support it. Supported sources: BOX, DROPBOX, GOOGLE_DRIVE, ONEDRIVE, SHAREPOINT
737
887
  # @param sync_source_items [Boolean] Enabling this flag will fetch all available content from the source to be listed via list items endpoint
738
- # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT. It will be ignored for other data sources.
888
+ # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT, SERVICENOW. It will be ignored for other data sources.
739
889
  # @param file_sync_config [FileSyncConfigNullable]
740
890
  # @param automatically_open_file_picker [Boolean] Automatically open source file picker after the OAuth flow is complete. This flag is currently supported by BOX, DROPBOX, GOOGLE_DRIVE, ONEDRIVE, SHAREPOINT. It will be ignored for other data sources.
891
+ # @param servicenow_credentials [ServiceNowCredentialsNullable]
741
892
  # @param body [OAuthURLRequest]
742
893
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
743
- def get_oauth_url_with_http_info(service:, tags: SENTINEL, scope: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', zendesk_subdomain: SENTINEL, microsoft_tenant: SENTINEL, sharepoint_site_name: SENTINEL, confluence_subdomain: SENTINEL, generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, salesforce_domain: SENTINEL, sync_files_on_connection: true, set_page_as_boundary: false, data_source_id: SENTINEL, connecting_new_account: false, request_id: SENTINEL, use_ocr: false, parse_pdf_tables_with_ocr: false, enable_file_picker: true, sync_source_items: true, incremental_sync: false, file_sync_config: SENTINEL, automatically_open_file_picker: SENTINEL, extra: {})
894
+ def get_oauth_url_with_http_info(service:, tags: SENTINEL, scope: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', zendesk_subdomain: SENTINEL, microsoft_tenant: SENTINEL, sharepoint_site_name: SENTINEL, confluence_subdomain: SENTINEL, generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, salesforce_domain: SENTINEL, sync_files_on_connection: true, set_page_as_boundary: false, data_source_id: SENTINEL, connecting_new_account: false, request_id: SENTINEL, use_ocr: false, parse_pdf_tables_with_ocr: false, enable_file_picker: true, sync_source_items: true, incremental_sync: false, file_sync_config: SENTINEL, automatically_open_file_picker: SENTINEL, servicenow_credentials: SENTINEL, extra: {})
744
895
  _body = {}
745
896
  _body[:tags] = tags if tags != SENTINEL
746
897
  _body[:scope] = scope if scope != SENTINEL
@@ -769,6 +920,7 @@ module Carbon
769
920
  _body[:incremental_sync] = incremental_sync if incremental_sync != SENTINEL
770
921
  _body[:file_sync_config] = file_sync_config if file_sync_config != SENTINEL
771
922
  _body[:automatically_open_file_picker] = automatically_open_file_picker if automatically_open_file_picker != SENTINEL
923
+ _body[:servicenow_credentials] = servicenow_credentials if servicenow_credentials != SENTINEL
772
924
  o_auth_url_request = _body
773
925
  get_oauth_url_with_http_info_impl(o_auth_url_request, extra)
774
926
  end
@@ -1656,7 +1808,7 @@ module Carbon
1656
1808
  # @param request_id [String]
1657
1809
  # @param use_ocr [Boolean]
1658
1810
  # @param parse_pdf_tables_with_ocr [Boolean]
1659
- # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT. It will be ignored for other data sources.
1811
+ # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT, SERVICENOW. It will be ignored for other data sources.
1660
1812
  # @param file_sync_config [FileSyncConfigNullable]
1661
1813
  # @param body [SyncFilesRequest]
1662
1814
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
@@ -1706,7 +1858,7 @@ module Carbon
1706
1858
  # @param request_id [String]
1707
1859
  # @param use_ocr [Boolean]
1708
1860
  # @param parse_pdf_tables_with_ocr [Boolean]
1709
- # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT. It will be ignored for other data sources.
1861
+ # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT, SERVICENOW. It will be ignored for other data sources.
1710
1862
  # @param file_sync_config [FileSyncConfigNullable]
1711
1863
  # @param body [SyncFilesRequest]
1712
1864
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
@@ -1914,7 +2066,7 @@ module Carbon
1914
2066
  # @param request_id [String]
1915
2067
  # @param use_ocr [Boolean]
1916
2068
  # @param parse_pdf_tables_with_ocr [Boolean]
1917
- # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT. It will be ignored for other data sources.
2069
+ # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT, SERVICENOW. It will be ignored for other data sources.
1918
2070
  # @param file_sync_config [FileSyncConfigNullable]
1919
2071
  # @param body [SyncFilesRequest]
1920
2072
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
@@ -1962,7 +2114,7 @@ module Carbon
1962
2114
  # @param request_id [String]
1963
2115
  # @param use_ocr [Boolean]
1964
2116
  # @param parse_pdf_tables_with_ocr [Boolean]
1965
- # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT. It will be ignored for other data sources.
2117
+ # @param incremental_sync [Boolean] Only sync files if they have not already been synced or if the embedding properties have changed. This flag is currently supported by ONEDRIVE, GOOGLE_DRIVE, BOX, DROPBOX, INTERCOM, GMAIL, OUTLOOK, ZENDESK, CONFLUENCE, NOTION, SHAREPOINT, SERVICENOW. It will be ignored for other data sources.
1966
2118
  # @param file_sync_config [FileSyncConfigNullable]
1967
2119
  # @param body [SyncFilesRequest]
1968
2120
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
@@ -2315,6 +2467,8 @@ module Carbon
2315
2467
  # <b>is</b>: Can have the following values - starred, important, snoozed, and unread
2316
2468
  # <b>from</b>: Email address of the sender
2317
2469
  # <b>to</b>: Email address of the recipient
2470
+ # <b>in</b>: Can have the following values - sent (sync emails sent by the user)
2471
+ # <b>has</b>: Can have the following values - attachment (sync emails that have attachments)
2318
2472
  #
2319
2473
  # Using keys or values outside of the specified values can lead to unexpected behaviour.
2320
2474
  #
@@ -2405,6 +2559,8 @@ module Carbon
2405
2559
  # <b>is</b>: Can have the following values - starred, important, snoozed, and unread
2406
2560
  # <b>from</b>: Email address of the sender
2407
2561
  # <b>to</b>: Email address of the recipient
2562
+ # <b>in</b>: Can have the following values - sent (sync emails sent by the user)
2563
+ # <b>has</b>: Can have the following values - attachment (sync emails that have attachments)
2408
2564
  #
2409
2565
  # Using keys or values outside of the specified values can lead to unexpected behaviour.
2410
2566
  #
@@ -2483,7 +2639,7 @@ module Carbon
2483
2639
  end
2484
2640
 
2485
2641
  # 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.
2642
+ # 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
2643
  # @param gmail_sync_input [GmailSyncInput]
2488
2644
  # @param [Hash] opts the optional parameters
2489
2645
  # @return [GenericSuccessResponse]
@@ -2493,7 +2649,7 @@ module Carbon
2493
2649
  end
2494
2650
 
2495
2651
  # 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. &lt;b&gt;label&lt;/b&gt;: Inbuilt Gmail labels, for example \&quot;Important\&quot; or a custom label you created. &lt;b&gt;after&lt;/b&gt; or &lt;b&gt;before&lt;/b&gt;: 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. &lt;b&gt;is&lt;/b&gt;: Can have the following values - starred, important, snoozed, and unread &lt;b&gt;from&lt;/b&gt;: Email address of the sender &lt;b&gt;to&lt;/b&gt;: 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 &#x60;&#x60;&#x60;json { \&quot;filters\&quot;: { \&quot;key\&quot;: \&quot;label\&quot;, \&quot;value\&quot;: \&quot;Test\&quot; } } &#x60;&#x60;&#x60; Which will list all emails that have the label \&quot;Test\&quot;. You can use AND and OR operation in the following way: &#x60;&#x60;&#x60;json { \&quot;filters\&quot;: { \&quot;AND\&quot;: [ { \&quot;key\&quot;: \&quot;after\&quot;, \&quot;value\&quot;: \&quot;2024/01/07\&quot; }, { \&quot;OR\&quot;: [ { \&quot;key\&quot;: \&quot;label\&quot;, \&quot;value\&quot;: \&quot;Personal\&quot; }, { \&quot;key\&quot;: \&quot;is\&quot;, \&quot;value\&quot;: \&quot;starred\&quot; } ] } ] } } &#x60;&#x60;&#x60; This will return emails after 7th of Jan that are either starred or have the label \&quot;Personal\&quot;. Note that this is the highest level of nesting we support, i.e. you can&#39;t add more AND/OR filters within the OR filter in the above example.
2652
+ # 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. &lt;b&gt;label&lt;/b&gt;: Inbuilt Gmail labels, for example \&quot;Important\&quot; or a custom label you created. &lt;b&gt;after&lt;/b&gt; or &lt;b&gt;before&lt;/b&gt;: 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. &lt;b&gt;is&lt;/b&gt;: Can have the following values - starred, important, snoozed, and unread &lt;b&gt;from&lt;/b&gt;: Email address of the sender &lt;b&gt;to&lt;/b&gt;: Email address of the recipient &lt;b&gt;in&lt;/b&gt;: Can have the following values - sent (sync emails sent by the user) &lt;b&gt;has&lt;/b&gt;: 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 &#x60;&#x60;&#x60;json { \&quot;filters\&quot;: { \&quot;key\&quot;: \&quot;label\&quot;, \&quot;value\&quot;: \&quot;Test\&quot; } } &#x60;&#x60;&#x60; Which will list all emails that have the label \&quot;Test\&quot;. You can use AND and OR operation in the following way: &#x60;&#x60;&#x60;json { \&quot;filters\&quot;: { \&quot;AND\&quot;: [ { \&quot;key\&quot;: \&quot;after\&quot;, \&quot;value\&quot;: \&quot;2024/01/07\&quot; }, { \&quot;OR\&quot;: [ { \&quot;key\&quot;: \&quot;label\&quot;, \&quot;value\&quot;: \&quot;Personal\&quot; }, { \&quot;key\&quot;: \&quot;is\&quot;, \&quot;value\&quot;: \&quot;starred\&quot; } ] } ] } } &#x60;&#x60;&#x60; This will return emails after 7th of Jan that are either starred or have the label \&quot;Personal\&quot;. Note that this is the highest level of nesting we support, i.e. you can&#39;t add more AND/OR filters within the OR filter in the above example.
2497
2653
  # @param gmail_sync_input [GmailSyncInput]
2498
2654
  # @param [Hash] opts the optional parameters
2499
2655
  # @return [APIResponse] data is GenericSuccessResponse, status code, headers and response
@@ -438,9 +438,10 @@ module Carbon
438
438
  # @param url_paths_to_exclude [Array<String>] URL subpaths or directories that you want to exclude. For example if you want to exclude URLs that start with /questions in stackoverflow.com, you will add /questions/ in this input
439
439
  # @param urls_to_scrape [Array<String>] You can submit a subset of URLs from the sitemap that should be scraped. To get the list of URLs, you can check out /process_sitemap endpoint. If left empty, all URLs from the sitemap will be scraped.
440
440
  # @param download_css_and_media [Boolean] Whether the scraper should download css and media from the page (images, fonts, etc). Scrapes might take longer to finish with this flag enabled, but the success rate is improved.
441
+ # @param generate_chunks_only [Boolean] If this flag is enabled, the file will be chunked and stored with Carbon, but no embeddings will be generated. This overrides the skip_embedding_generation flag.
441
442
  # @param body [SitemapScrapeRequest]
442
443
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
443
- def scrape_sitemap(url:, tags: SENTINEL, max_pages_to_scrape: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, enable_auto_sync: false, generate_sparse_vectors: false, prepend_filename_to_chunks: false, html_tags_to_skip: SENTINEL, css_classes_to_skip: SENTINEL, css_selectors_to_skip: SENTINEL, embedding_model: 'OPENAI', url_paths_to_include: SENTINEL, url_paths_to_exclude: SENTINEL, urls_to_scrape: SENTINEL, download_css_and_media: false, extra: {})
444
+ def scrape_sitemap(url:, tags: SENTINEL, max_pages_to_scrape: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, enable_auto_sync: false, generate_sparse_vectors: false, prepend_filename_to_chunks: false, html_tags_to_skip: SENTINEL, css_classes_to_skip: SENTINEL, css_selectors_to_skip: SENTINEL, embedding_model: 'OPENAI', url_paths_to_include: SENTINEL, url_paths_to_exclude: SENTINEL, urls_to_scrape: SENTINEL, download_css_and_media: false, generate_chunks_only: false, extra: {})
444
445
  _body = {}
445
446
  _body[:tags] = tags if tags != SENTINEL
446
447
  _body[:url] = url if url != SENTINEL
@@ -459,6 +460,7 @@ module Carbon
459
460
  _body[:url_paths_to_exclude] = url_paths_to_exclude if url_paths_to_exclude != SENTINEL
460
461
  _body[:urls_to_scrape] = urls_to_scrape if urls_to_scrape != SENTINEL
461
462
  _body[:download_css_and_media] = download_css_and_media if download_css_and_media != SENTINEL
463
+ _body[:generate_chunks_only] = generate_chunks_only if generate_chunks_only != SENTINEL
462
464
  sitemap_scrape_request = _body
463
465
  api_response = scrape_sitemap_with_http_info_impl(sitemap_scrape_request, extra)
464
466
  api_response.data
@@ -491,9 +493,10 @@ module Carbon
491
493
  # @param url_paths_to_exclude [Array<String>] URL subpaths or directories that you want to exclude. For example if you want to exclude URLs that start with /questions in stackoverflow.com, you will add /questions/ in this input
492
494
  # @param urls_to_scrape [Array<String>] You can submit a subset of URLs from the sitemap that should be scraped. To get the list of URLs, you can check out /process_sitemap endpoint. If left empty, all URLs from the sitemap will be scraped.
493
495
  # @param download_css_and_media [Boolean] Whether the scraper should download css and media from the page (images, fonts, etc). Scrapes might take longer to finish with this flag enabled, but the success rate is improved.
496
+ # @param generate_chunks_only [Boolean] If this flag is enabled, the file will be chunked and stored with Carbon, but no embeddings will be generated. This overrides the skip_embedding_generation flag.
494
497
  # @param body [SitemapScrapeRequest]
495
498
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
496
- def scrape_sitemap_with_http_info(url:, tags: SENTINEL, max_pages_to_scrape: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, enable_auto_sync: false, generate_sparse_vectors: false, prepend_filename_to_chunks: false, html_tags_to_skip: SENTINEL, css_classes_to_skip: SENTINEL, css_selectors_to_skip: SENTINEL, embedding_model: 'OPENAI', url_paths_to_include: SENTINEL, url_paths_to_exclude: SENTINEL, urls_to_scrape: SENTINEL, download_css_and_media: false, extra: {})
499
+ def scrape_sitemap_with_http_info(url:, tags: SENTINEL, max_pages_to_scrape: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, enable_auto_sync: false, generate_sparse_vectors: false, prepend_filename_to_chunks: false, html_tags_to_skip: SENTINEL, css_classes_to_skip: SENTINEL, css_selectors_to_skip: SENTINEL, embedding_model: 'OPENAI', url_paths_to_include: SENTINEL, url_paths_to_exclude: SENTINEL, urls_to_scrape: SENTINEL, download_css_and_media: false, generate_chunks_only: false, extra: {})
497
500
  _body = {}
498
501
  _body[:tags] = tags if tags != SENTINEL
499
502
  _body[:url] = url if url != SENTINEL
@@ -512,6 +515,7 @@ module Carbon
512
515
  _body[:url_paths_to_exclude] = url_paths_to_exclude if url_paths_to_exclude != SENTINEL
513
516
  _body[:urls_to_scrape] = urls_to_scrape if urls_to_scrape != SENTINEL
514
517
  _body[:download_css_and_media] = download_css_and_media if download_css_and_media != SENTINEL
518
+ _body[:generate_chunks_only] = generate_chunks_only if generate_chunks_only != SENTINEL
515
519
  sitemap_scrape_request = _body
516
520
  scrape_sitemap_with_http_info_impl(sitemap_scrape_request, extra)
517
521
  end
@@ -44,6 +44,14 @@ module Carbon
44
44
  # You can specify a Digital Ocean endpoint URL to connect a Digital Ocean Space through this endpoint. The URL should be of format <region>.digitaloceanspaces.com. It's not required for S3 buckets.
45
45
  attr_accessor :endpoint_url
46
46
 
47
+ attr_accessor :instance_subdomain
48
+
49
+ attr_accessor :client_id
50
+
51
+ attr_accessor :client_secret
52
+
53
+ attr_accessor :redirect_uri
54
+
47
55
  # Attribute mapping from ruby-style variable name to JSON key.
48
56
  def self.attribute_map
49
57
  {
@@ -62,7 +70,11 @@ module Carbon
62
70
  :'api_key' => :'api_key',
63
71
  :'access_key' => :'access_key',
64
72
  :'access_key_secret' => :'access_key_secret',
65
- :'endpoint_url' => :'endpoint_url'
73
+ :'endpoint_url' => :'endpoint_url',
74
+ :'instance_subdomain' => :'instance_subdomain',
75
+ :'client_id' => :'client_id',
76
+ :'client_secret' => :'client_secret',
77
+ :'redirect_uri' => :'redirect_uri'
66
78
  }
67
79
  end
68
80
 
@@ -89,7 +101,11 @@ module Carbon
89
101
  :'api_key' => :'String',
90
102
  :'access_key' => :'String',
91
103
  :'access_key_secret' => :'String',
92
- :'endpoint_url' => :'String'
104
+ :'endpoint_url' => :'String',
105
+ :'instance_subdomain' => :'String',
106
+ :'client_id' => :'String',
107
+ :'client_secret' => :'String',
108
+ :'redirect_uri' => :'String'
93
109
  }
94
110
  end
95
111
 
@@ -98,7 +114,7 @@ module Carbon
98
114
  Set.new([
99
115
  :'source',
100
116
  :'refresh_token',
101
- :'endpoint_url'
117
+ :'endpoint_url',
102
118
  ])
103
119
  end
104
120
 
@@ -109,10 +125,12 @@ module Carbon
109
125
  :'FreskdeskAuthentication',
110
126
  :'GitbookAuthetication',
111
127
  :'GithubAuthentication',
128
+ :'GuruAuthentication',
112
129
  :'NotionAuthentication',
113
130
  :'OAuthAuthentication',
114
131
  :'S3Authentication',
115
132
  :'SalesforceAuthentication',
133
+ :'ServiceNowAuthentication',
116
134
  :'SharepointAuthentication',
117
135
  :'ZendeskAuthentication',
118
136
  :'ZoteroAuthentication'
@@ -197,6 +215,22 @@ module Carbon
197
215
  if attributes.key?(:'endpoint_url')
198
216
  self.endpoint_url = attributes[:'endpoint_url']
199
217
  end
218
+
219
+ if attributes.key?(:'instance_subdomain')
220
+ self.instance_subdomain = attributes[:'instance_subdomain']
221
+ end
222
+
223
+ if attributes.key?(:'client_id')
224
+ self.client_id = attributes[:'client_id']
225
+ end
226
+
227
+ if attributes.key?(:'client_secret')
228
+ self.client_secret = attributes[:'client_secret']
229
+ end
230
+
231
+ if attributes.key?(:'redirect_uri')
232
+ self.redirect_uri = attributes[:'redirect_uri']
233
+ end
200
234
  end
201
235
 
202
236
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -255,6 +289,22 @@ module Carbon
255
289
  invalid_properties.push('invalid value for "access_key_secret", access_key_secret cannot be nil.')
256
290
  end
257
291
 
292
+ if @instance_subdomain.nil?
293
+ invalid_properties.push('invalid value for "instance_subdomain", instance_subdomain cannot be nil.')
294
+ end
295
+
296
+ if @client_id.nil?
297
+ invalid_properties.push('invalid value for "client_id", client_id cannot be nil.')
298
+ end
299
+
300
+ if @client_secret.nil?
301
+ invalid_properties.push('invalid value for "client_secret", client_secret cannot be nil.')
302
+ end
303
+
304
+ if @redirect_uri.nil?
305
+ invalid_properties.push('invalid value for "redirect_uri", redirect_uri cannot be nil.')
306
+ end
307
+
258
308
  invalid_properties
259
309
  end
260
310
 
@@ -274,6 +324,10 @@ module Carbon
274
324
  return false if @api_key.nil?
275
325
  return false if @access_key.nil?
276
326
  return false if @access_key_secret.nil?
327
+ return false if @instance_subdomain.nil?
328
+ return false if @client_id.nil?
329
+ return false if @client_secret.nil?
330
+ return false if @redirect_uri.nil?
277
331
  _any_of_found = false
278
332
  self.class.openapi_any_of.each do |_class|
279
333
  _any_of = Carbon.const_get(_class).build_from_hash(self.to_hash)
@@ -309,7 +363,11 @@ module Carbon
309
363
  api_key == o.api_key &&
310
364
  access_key == o.access_key &&
311
365
  access_key_secret == o.access_key_secret &&
312
- endpoint_url == o.endpoint_url
366
+ endpoint_url == o.endpoint_url &&
367
+ instance_subdomain == o.instance_subdomain &&
368
+ client_id == o.client_id &&
369
+ client_secret == o.client_secret &&
370
+ redirect_uri == o.redirect_uri
313
371
  end
314
372
 
315
373
  # @see the `==` method
@@ -321,7 +379,7 @@ module Carbon
321
379
  # Calculates hash code according to all attributes.
322
380
  # @return [Integer] Hash code
323
381
  def hash
324
- [source, access_token, refresh_token, workspace_id, tenant_name, site_name, subdomain, access_token_secret, username, zotero_id, organization_name, domain, api_key, access_key, access_key_secret, endpoint_url].hash
382
+ [source, access_token, refresh_token, workspace_id, tenant_name, site_name, subdomain, access_token_secret, username, zotero_id, organization_name, domain, api_key, access_key, access_key_secret, endpoint_url, instance_subdomain, client_id, client_secret, redirect_uri].hash
325
383
  end
326
384
 
327
385
  # Builds the object from hash