carbon_ruby_sdk 0.2.5 → 0.2.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c7706176e499f1533fc878b19eedf2ec5861f96ff958fe1e5b06a3165a880af2
4
- data.tar.gz: 2bbd00bf0d604cc026a3c88b6db2760fc3385d471de31e4ff741d8377b27cc3d
3
+ metadata.gz: ddb2e107da136926a97fa3b21a799aa742f6d6a601fa4e15e9d5053e55fb236e
4
+ data.tar.gz: ab09446db102397cd5a8bda28ad42977aa25dcf2a689a587c61078464a049f09
5
5
  SHA512:
6
- metadata.gz: 58edf104baac33bc87aa26f7bab3b5bbcc206234745f72bffc7bcd4569c07d25cd421c8d28e269db58116035f98930cf51ccb407a905dab8c87118cd769b6623
7
- data.tar.gz: fa7538776a59eaa0f81583a91166d98d8712501f816ed55fb16abb7f6f7b70eb8e05aecf0968d0f307bff65810edc028a5917c630a341ce62e3a1badacd35a1b
6
+ metadata.gz: 8b9acb08e3051a67bda2acfe4966192f95bb50f06c1ab43a0369bce60492e033296efb0c21950b3b811aaf5b0114eef2db160b21270f9091d377bda378a13df1
7
+ data.tar.gz: 1295e13d22b198f6c19c2c6209e8a0267830c8a7e847f62105e5c20dda74d6a5e328c7a98326bd4e8eb22f2b487cd6a5ab66f09be361953fe370699b4bbcd1a2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- carbon_ruby_sdk (0.2.4)
4
+ carbon_ruby_sdk (0.2.7)
5
5
  faraday (>= 1.0.1, < 3.0)
6
6
  faraday-multipart (~> 1.0, >= 1.0.4)
7
7
 
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.5-blue)](https://rubygems.org/gems/carbon_ruby_sdk/versions/0.2.5)
9
+ [![npm](https://img.shields.io/badge/gem-v0.2.7-blue)](https://rubygems.org/gems/carbon_ruby_sdk/versions/0.2.7)
10
10
 
11
11
  </div>
12
12
 
@@ -46,6 +46,7 @@ Connect external data to LLMs, no matter the source.
46
46
  * [`carbon.integrations.create_aws_iam_user`](#carbonintegrationscreate_aws_iam_user)
47
47
  * [`carbon.integrations.get_oauth_url`](#carbonintegrationsget_oauth_url)
48
48
  * [`carbon.integrations.list_confluence_pages`](#carbonintegrationslist_confluence_pages)
49
+ * [`carbon.integrations.list_conversations`](#carbonintegrationslist_conversations)
49
50
  * [`carbon.integrations.list_data_source_items`](#carbonintegrationslist_data_source_items)
50
51
  * [`carbon.integrations.list_folders`](#carbonintegrationslist_folders)
51
52
  * [`carbon.integrations.list_gitbook_spaces`](#carbonintegrationslist_gitbook_spaces)
@@ -62,6 +63,7 @@ Connect external data to LLMs, no matter the source.
62
63
  * [`carbon.integrations.sync_repos`](#carbonintegrationssync_repos)
63
64
  * [`carbon.integrations.sync_rss_feed`](#carbonintegrationssync_rss_feed)
64
65
  * [`carbon.integrations.sync_s3_files`](#carbonintegrationssync_s3_files)
66
+ * [`carbon.integrations.sync_slack`](#carbonintegrationssync_slack)
65
67
  * [`carbon.organizations.get`](#carbonorganizationsget)
66
68
  * [`carbon.organizations.update`](#carbonorganizationsupdate)
67
69
  * [`carbon.organizations.update_stats`](#carbonorganizationsupdate_stats)
@@ -86,7 +88,7 @@ Connect external data to LLMs, no matter the source.
86
88
  Add to Gemfile:
87
89
 
88
90
  ```ruby
89
- gem 'carbon_ruby_sdk', '~> 0.2.5'
91
+ gem 'carbon_ruby_sdk', '~> 0.2.7'
90
92
  ```
91
93
 
92
94
  ## Getting Started<a id="getting-started"></a>
@@ -1247,7 +1249,7 @@ result = carbon.integrations.connect_data_source(
1247
1249
  "prepend_filename_to_chunks" => false,
1248
1250
  "sync_files_on_connection" => true,
1249
1251
  "set_page_as_boundary" => false,
1250
- "request_id" => "3faff6b4-cf31-42c5-b652-a4115dfbc64f",
1252
+ "request_id" => "2b33f04a-b2ca-473b-b6e2-c89df5e01f94",
1251
1253
  "enable_file_picker" => true,
1252
1254
  "sync_source_items" => true,
1253
1255
  "incremental_sync" => false,
@@ -1301,6 +1303,7 @@ result = carbon.integrations.connect_freshdesk(
1301
1303
  "auto_synced_source_types" => ["ARTICLE"],
1302
1304
  "sync_attachments" => false,
1303
1305
  "detect_audio_language" => false,
1306
+ "split_rows" => false,
1304
1307
  },
1305
1308
  )
1306
1309
  p result
@@ -1466,7 +1469,7 @@ result = carbon.integrations.get_oauth_url(
1466
1469
  set_page_as_boundary: false,
1467
1470
  data_source_id: 1,
1468
1471
  connecting_new_account: false,
1469
- request_id: "f3bc66ce-11ad-480a-97d3-8564f86ea2e4",
1472
+ request_id: "229bd6e7-4931-4900-8f58-0e4071e45b25",
1470
1473
  use_ocr: false,
1471
1474
  parse_pdf_tables_with_ocr: false,
1472
1475
  enable_file_picker: true,
@@ -1476,6 +1479,7 @@ result = carbon.integrations.get_oauth_url(
1476
1479
  "auto_synced_source_types" => ["ARTICLE"],
1477
1480
  "sync_attachments" => false,
1478
1481
  "detect_audio_language" => false,
1482
+ "split_rows" => false,
1479
1483
  },
1480
1484
  )
1481
1485
  p result
@@ -1526,7 +1530,7 @@ Enable OCR for files that support it. Supported formats: pdf
1526
1530
  ##### parse_pdf_tables_with_ocr: `Boolean`<a id="parse_pdf_tables_with_ocr-boolean"></a>
1527
1531
  ##### enable_file_picker: `Boolean`<a id="enable_file_picker-boolean"></a>
1528
1532
  Enable integration's file picker for sources that support it. Supported sources:
1529
- BOX, ONEDRIVE, DROPBOX, GOOGLE_DRIVE, SHAREPOINT
1533
+ DROPBOX, ONEDRIVE, SHAREPOINT, GOOGLE_DRIVE, BOX
1530
1534
 
1531
1535
  ##### sync_source_items: `Boolean`<a id="sync_source_items-boolean"></a>
1532
1536
  Enabling this flag will fetch all available content from the source to be listed
@@ -1588,6 +1592,43 @@ p result
1588
1592
  ---
1589
1593
 
1590
1594
 
1595
+ ### `carbon.integrations.list_conversations`<a id="carbonintegrationslist_conversations"></a>
1596
+
1597
+ List all of your public and private channels, DMs, and Group DMs. The ID from response
1598
+ can be used as a filter to sync messages to Carbon
1599
+ types: Comma separated list of types. Available types are im (DMs), mpim (group DMs), public_channel, and private_channel.
1600
+ Defaults to public_channel.
1601
+ cursor: Used for pagination. If next_cursor is returned in response, you need to pass it as the cursor in the next request
1602
+ data_source_id: Data source needs to be specified if you have linked multiple slack accounts
1603
+ exclude_archived: Should archived conversations be excluded, defaults to true
1604
+
1605
+ #### 🛠️ Usage<a id="🛠️-usage"></a>
1606
+
1607
+ ```ruby
1608
+ result = carbon.integrations.list_conversations(
1609
+ types: "public_channel",
1610
+ cursor: "string_example",
1611
+ data_source_id: 1,
1612
+ exclude_archived: true,
1613
+ )
1614
+ p result
1615
+ ```
1616
+
1617
+ #### ⚙️ Parameters<a id="⚙️-parameters"></a>
1618
+
1619
+ ##### types: `String`<a id="types-string"></a>
1620
+ ##### cursor: `String`<a id="cursor-string"></a>
1621
+ ##### data_source_id: `Integer`<a id="data_source_id-integer"></a>
1622
+ ##### exclude_archived: `Boolean`<a id="exclude_archived-boolean"></a>
1623
+ #### 🌐 Endpoint<a id="🌐-endpoint"></a>
1624
+
1625
+ `/integrations/slack/conversations` `GET`
1626
+
1627
+ [🔙 **Back to Table of Contents**](#table-of-contents)
1628
+
1629
+ ---
1630
+
1631
+
1591
1632
  ### `carbon.integrations.list_data_source_items`<a id="carbonintegrationslist_data_source_items"></a>
1592
1633
 
1593
1634
  List Data Source Items
@@ -1788,7 +1829,7 @@ result = carbon.integrations.sync_confluence(
1788
1829
  prepend_filename_to_chunks: false,
1789
1830
  max_items_per_chunk: 1,
1790
1831
  set_page_as_boundary: false,
1791
- request_id: "6ae9a1d5-64b6-4ec2-ab39-8869a383e3cf",
1832
+ request_id: "bb4d49b0-3837-444a-9b71-f529df5968cb",
1792
1833
  use_ocr: false,
1793
1834
  parse_pdf_tables_with_ocr: false,
1794
1835
  incremental_sync: false,
@@ -1796,6 +1837,7 @@ result = carbon.integrations.sync_confluence(
1796
1837
  "auto_synced_source_types" => ["ARTICLE"],
1797
1838
  "sync_attachments" => false,
1798
1839
  "detect_audio_language" => false,
1840
+ "split_rows" => false,
1799
1841
  },
1800
1842
  )
1801
1843
  p result
@@ -1891,7 +1933,7 @@ result = carbon.integrations.sync_files(
1891
1933
  prepend_filename_to_chunks: false,
1892
1934
  max_items_per_chunk: 1,
1893
1935
  set_page_as_boundary: false,
1894
- request_id: "6ae9a1d5-64b6-4ec2-ab39-8869a383e3cf",
1936
+ request_id: "bb4d49b0-3837-444a-9b71-f529df5968cb",
1895
1937
  use_ocr: false,
1896
1938
  parse_pdf_tables_with_ocr: false,
1897
1939
  incremental_sync: false,
@@ -1899,6 +1941,7 @@ result = carbon.integrations.sync_files(
1899
1941
  "auto_synced_source_types" => ["ARTICLE"],
1900
1942
  "sync_attachments" => false,
1901
1943
  "detect_audio_language" => false,
1944
+ "split_rows" => false,
1902
1945
  },
1903
1946
  )
1904
1947
  p result
@@ -2097,6 +2140,7 @@ result = carbon.integrations.sync_gmail(
2097
2140
  "auto_synced_source_types" => ["ARTICLE"],
2098
2141
  "sync_attachments" => false,
2099
2142
  "detect_audio_language" => false,
2143
+ "split_rows" => false,
2100
2144
  },
2101
2145
  incremental_sync: false,
2102
2146
  )
@@ -2214,6 +2258,7 @@ result = carbon.integrations.sync_outlook(
2214
2258
  "auto_synced_source_types" => ["ARTICLE"],
2215
2259
  "sync_attachments" => false,
2216
2260
  "detect_audio_language" => false,
2261
+ "split_rows" => false,
2217
2262
  },
2218
2263
  incremental_sync: false,
2219
2264
  )
@@ -2356,6 +2401,7 @@ result = carbon.integrations.sync_s3_files(
2356
2401
  "auto_synced_source_types" => ["ARTICLE"],
2357
2402
  "sync_attachments" => false,
2358
2403
  "detect_audio_language" => false,
2404
+ "split_rows" => false,
2359
2405
  },
2360
2406
  )
2361
2407
  p result
@@ -2393,6 +2439,52 @@ Number of objects per chunk. For csv, tsv, xlsx, and json files only.
2393
2439
  ---
2394
2440
 
2395
2441
 
2442
+ ### `carbon.integrations.sync_slack`<a id="carbonintegrationssync_slack"></a>
2443
+
2444
+ You can list all conversations using the endpoint /integrations/slack/conversations. The ID of
2445
+ conversation will be used as an input for this endpoint with timestamps as optional filters.
2446
+
2447
+ #### 🛠️ Usage<a id="🛠️-usage"></a>
2448
+
2449
+ ```ruby
2450
+ result = carbon.integrations.sync_slack(
2451
+ filters: {
2452
+ "conversation_id" => "conversation_id_example",
2453
+ },
2454
+ tags: {},
2455
+ chunk_size: 1500,
2456
+ chunk_overlap: 20,
2457
+ skip_embedding_generation: false,
2458
+ embedding_model: "OPENAI",
2459
+ generate_sparse_vectors: false,
2460
+ prepend_filename_to_chunks: false,
2461
+ data_source_id: 1,
2462
+ request_id: "string_example",
2463
+ )
2464
+ p result
2465
+ ```
2466
+
2467
+ #### ⚙️ Parameters<a id="⚙️-parameters"></a>
2468
+
2469
+ ##### filters: [`SlackFilters`](./lib/carbon_ruby_sdk/models/slack_filters.rb)<a id="filters-slackfilterslibcarbon_ruby_sdkmodelsslack_filtersrb"></a>
2470
+ ##### tags: `Object`<a id="tags-object"></a>
2471
+ ##### chunk_size: `Integer`<a id="chunk_size-integer"></a>
2472
+ ##### chunk_overlap: `Integer`<a id="chunk_overlap-integer"></a>
2473
+ ##### skip_embedding_generation: `Boolean`<a id="skip_embedding_generation-boolean"></a>
2474
+ ##### embedding_model: [`EmbeddingGenerators`](./lib/carbon_ruby_sdk/models/embedding_generators.rb)<a id="embedding_model-embeddinggeneratorslibcarbon_ruby_sdkmodelsembedding_generatorsrb"></a>
2475
+ ##### generate_sparse_vectors: `Boolean`<a id="generate_sparse_vectors-boolean"></a>
2476
+ ##### prepend_filename_to_chunks: `Boolean`<a id="prepend_filename_to_chunks-boolean"></a>
2477
+ ##### data_source_id: `Integer`<a id="data_source_id-integer"></a>
2478
+ ##### request_id: `String`<a id="request_id-string"></a>
2479
+ #### 🌐 Endpoint<a id="🌐-endpoint"></a>
2480
+
2481
+ `/integrations/slack/sync` `POST`
2482
+
2483
+ [🔙 **Back to Table of Contents**](#table-of-contents)
2484
+
2485
+ ---
2486
+
2487
+
2396
2488
  ### `carbon.organizations.get`<a id="carbonorganizationsget"></a>
2397
2489
 
2398
2490
  Get Organization
@@ -653,13 +653,13 @@ module Carbon
653
653
  # @param request_id [String] This request id will be added to all files that get synced using the generated OAuth URL
654
654
  # @param use_ocr [Boolean] Enable OCR for files that support it. Supported formats: pdf
655
655
  # @param parse_pdf_tables_with_ocr [Boolean]
656
- # @param enable_file_picker [Boolean] Enable integration's file picker for sources that support it. Supported sources: BOX, ONEDRIVE, DROPBOX, GOOGLE_DRIVE, SHAREPOINT
656
+ # @param enable_file_picker [Boolean] Enable integration's file picker for sources that support it. Supported sources: DROPBOX, ONEDRIVE, SHAREPOINT, GOOGLE_DRIVE, BOX
657
657
  # @param sync_source_items [Boolean] Enabling this flag will fetch all available content from the source to be listed via list items endpoint
658
658
  # @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. It will be ignored for other data sources.
659
659
  # @param file_sync_config [FileSyncConfigNullable]
660
660
  # @param body [OAuthURLRequest]
661
661
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
662
- 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: 'f3bc66ce-11ad-480a-97d3-8564f86ea2e4', use_ocr: false, parse_pdf_tables_with_ocr: false, enable_file_picker: true, sync_source_items: true, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
662
+ 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: '229bd6e7-4931-4900-8f58-0e4071e45b25', use_ocr: false, parse_pdf_tables_with_ocr: false, enable_file_picker: true, sync_source_items: true, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
663
663
  _body = {}
664
664
  _body[:tags] = tags if tags != SENTINEL
665
665
  _body[:scope] = scope if scope != SENTINEL
@@ -721,13 +721,13 @@ module Carbon
721
721
  # @param request_id [String] This request id will be added to all files that get synced using the generated OAuth URL
722
722
  # @param use_ocr [Boolean] Enable OCR for files that support it. Supported formats: pdf
723
723
  # @param parse_pdf_tables_with_ocr [Boolean]
724
- # @param enable_file_picker [Boolean] Enable integration's file picker for sources that support it. Supported sources: BOX, ONEDRIVE, DROPBOX, GOOGLE_DRIVE, SHAREPOINT
724
+ # @param enable_file_picker [Boolean] Enable integration's file picker for sources that support it. Supported sources: DROPBOX, ONEDRIVE, SHAREPOINT, GOOGLE_DRIVE, BOX
725
725
  # @param sync_source_items [Boolean] Enabling this flag will fetch all available content from the source to be listed via list items endpoint
726
726
  # @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. It will be ignored for other data sources.
727
727
  # @param file_sync_config [FileSyncConfigNullable]
728
728
  # @param body [OAuthURLRequest]
729
729
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
730
- 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: 'f3bc66ce-11ad-480a-97d3-8564f86ea2e4', use_ocr: false, parse_pdf_tables_with_ocr: false, enable_file_picker: true, sync_source_items: true, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
730
+ 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: '229bd6e7-4931-4900-8f58-0e4071e45b25', use_ocr: false, parse_pdf_tables_with_ocr: false, enable_file_picker: true, sync_source_items: true, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
731
731
  _body = {}
732
732
  _body[:tags] = tags if tags != SENTINEL
733
733
  _body[:scope] = scope if scope != SENTINEL
@@ -942,6 +942,123 @@ module Carbon
942
942
  end
943
943
 
944
944
 
945
+ # Slack List Conversations
946
+ #
947
+ # List all of your public and private channels, DMs, and Group DMs. The ID from response
948
+ # can be used as a filter to sync messages to Carbon
949
+ # types: Comma separated list of types. Available types are im (DMs), mpim (group DMs), public_channel, and private_channel.
950
+ # Defaults to public_channel.
951
+ # cursor: Used for pagination. If next_cursor is returned in response, you need to pass it as the cursor in the next request
952
+ # data_source_id: Data source needs to be specified if you have linked multiple slack accounts
953
+ # exclude_archived: Should archived conversations be excluded, defaults to true
954
+ #
955
+ # @param types [String]
956
+ # @param cursor [String]
957
+ # @param data_source_id [Integer]
958
+ # @param exclude_archived [Boolean]
959
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
960
+ def list_conversations(types: 'public_channel', cursor: SENTINEL, data_source_id: SENTINEL, exclude_archived: true, extra: {})
961
+ extra[:types] = types if types != SENTINEL
962
+ extra[:cursor] = cursor if cursor != SENTINEL
963
+ extra[:data_source_id] = data_source_id if data_source_id != SENTINEL
964
+ extra[:exclude_archived] = exclude_archived if exclude_archived != SENTINEL
965
+ api_response = list_conversations_with_http_info_impl(extra)
966
+ api_response.data
967
+ end
968
+
969
+ # Slack List Conversations
970
+ #
971
+ # List all of your public and private channels, DMs, and Group DMs. The ID from response
972
+ # can be used as a filter to sync messages to Carbon
973
+ # types: Comma separated list of types. Available types are im (DMs), mpim (group DMs), public_channel, and private_channel.
974
+ # Defaults to public_channel.
975
+ # cursor: Used for pagination. If next_cursor is returned in response, you need to pass it as the cursor in the next request
976
+ # data_source_id: Data source needs to be specified if you have linked multiple slack accounts
977
+ # exclude_archived: Should archived conversations be excluded, defaults to true
978
+ #
979
+ # @param types [String]
980
+ # @param cursor [String]
981
+ # @param data_source_id [Integer]
982
+ # @param exclude_archived [Boolean]
983
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
984
+ def list_conversations_with_http_info(types: 'public_channel', cursor: SENTINEL, data_source_id: SENTINEL, exclude_archived: true, extra: {})
985
+ extra[:types] = types if types != SENTINEL
986
+ extra[:cursor] = cursor if cursor != SENTINEL
987
+ extra[:data_source_id] = data_source_id if data_source_id != SENTINEL
988
+ extra[:exclude_archived] = exclude_archived if exclude_archived != SENTINEL
989
+ list_conversations_with_http_info_impl(extra)
990
+ end
991
+
992
+ # Slack List Conversations
993
+ # List all of your public and private channels, DMs, and Group DMs. The ID from response can be used as a filter to sync messages to Carbon types: Comma separated list of types. Available types are im (DMs), mpim (group DMs), public_channel, and private_channel. Defaults to public_channel. cursor: Used for pagination. If next_cursor is returned in response, you need to pass it as the cursor in the next request data_source_id: Data source needs to be specified if you have linked multiple slack accounts exclude_archived: Should archived conversations be excluded, defaults to true
994
+ # @param [Hash] opts the optional parameters
995
+ # @option opts [String] :types (default to 'public_channel')
996
+ # @option opts [String] :cursor
997
+ # @option opts [Integer] :data_source_id
998
+ # @option opts [Boolean] :exclude_archived (default to true)
999
+ # @return [Object]
1000
+ private def list_conversations_impl(opts = {})
1001
+ data, _status_code, _headers = list_conversations_with_http_info(opts)
1002
+ data
1003
+ end
1004
+
1005
+ # Slack List Conversations
1006
+ # List all of your public and private channels, DMs, and Group DMs. The ID from response can be used as a filter to sync messages to Carbon types: Comma separated list of types. Available types are im (DMs), mpim (group DMs), public_channel, and private_channel. Defaults to public_channel. cursor: Used for pagination. If next_cursor is returned in response, you need to pass it as the cursor in the next request data_source_id: Data source needs to be specified if you have linked multiple slack accounts exclude_archived: Should archived conversations be excluded, defaults to true
1007
+ # @param [Hash] opts the optional parameters
1008
+ # @option opts [String] :types (default to 'public_channel')
1009
+ # @option opts [String] :cursor
1010
+ # @option opts [Integer] :data_source_id
1011
+ # @option opts [Boolean] :exclude_archived (default to true)
1012
+ # @return [APIResponse] data is Object, status code, headers and response
1013
+ private def list_conversations_with_http_info_impl(opts = {})
1014
+ if @api_client.config.debugging
1015
+ @api_client.config.logger.debug 'Calling API: IntegrationsApi.list_conversations ...'
1016
+ end
1017
+ # resource path
1018
+ local_var_path = '/integrations/slack/conversations'
1019
+
1020
+ # query parameters
1021
+ query_params = opts[:query_params] || {}
1022
+ query_params[:'types'] = opts[:'types'] if !opts[:'types'].nil?
1023
+ query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
1024
+ query_params[:'data_source_id'] = opts[:'data_source_id'] if !opts[:'data_source_id'].nil?
1025
+ query_params[:'exclude_archived'] = opts[:'exclude_archived'] if !opts[:'exclude_archived'].nil?
1026
+
1027
+ # header parameters
1028
+ header_params = opts[:header_params] || {}
1029
+ # HTTP header 'Accept' (if needed)
1030
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
1031
+
1032
+ # form parameters
1033
+ form_params = opts[:form_params] || {}
1034
+
1035
+ # http body (model)
1036
+ post_body = opts[:debug_body]
1037
+
1038
+ # return_type
1039
+ return_type = opts[:debug_return_type] || 'Object'
1040
+
1041
+ # auth_names
1042
+ auth_names = opts[:debug_auth_names] || ['accessToken', 'apiKey', 'customerId']
1043
+
1044
+ new_options = opts.merge(
1045
+ :operation => :"IntegrationsApi.list_conversations",
1046
+ :header_params => header_params,
1047
+ :query_params => query_params,
1048
+ :form_params => form_params,
1049
+ :body => post_body,
1050
+ :auth_names => auth_names,
1051
+ :return_type => return_type
1052
+ )
1053
+
1054
+ data, status_code, headers, response = @api_client.call_api(:GET, local_var_path, new_options)
1055
+ if @api_client.config.debugging
1056
+ @api_client.config.logger.debug "API called: IntegrationsApi#list_conversations\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1057
+ end
1058
+ APIResponse::new(data, status_code, headers, response)
1059
+ end
1060
+
1061
+
945
1062
  # List Data Source Items
946
1063
  #
947
1064
  # @param data_source_id [Integer]
@@ -1523,7 +1640,7 @@ module Carbon
1523
1640
  # @param file_sync_config [FileSyncConfigNullable]
1524
1641
  # @param body [SyncFilesRequest]
1525
1642
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
1526
- def sync_confluence(data_source_id:, ids:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, set_page_as_boundary: false, request_id: '6ae9a1d5-64b6-4ec2-ab39-8869a383e3cf', use_ocr: false, parse_pdf_tables_with_ocr: false, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
1643
+ def sync_confluence(data_source_id:, ids:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, set_page_as_boundary: false, request_id: 'bb4d49b0-3837-444a-9b71-f529df5968cb', use_ocr: false, parse_pdf_tables_with_ocr: false, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
1527
1644
  _body = {}
1528
1645
  _body[:tags] = tags if tags != SENTINEL
1529
1646
  _body[:data_source_id] = data_source_id if data_source_id != SENTINEL
@@ -1571,7 +1688,7 @@ module Carbon
1571
1688
  # @param file_sync_config [FileSyncConfigNullable]
1572
1689
  # @param body [SyncFilesRequest]
1573
1690
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
1574
- def sync_confluence_with_http_info(data_source_id:, ids:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, set_page_as_boundary: false, request_id: '6ae9a1d5-64b6-4ec2-ab39-8869a383e3cf', use_ocr: false, parse_pdf_tables_with_ocr: false, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
1691
+ def sync_confluence_with_http_info(data_source_id:, ids:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, set_page_as_boundary: false, request_id: 'bb4d49b0-3837-444a-9b71-f529df5968cb', use_ocr: false, parse_pdf_tables_with_ocr: false, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
1575
1692
  _body = {}
1576
1693
  _body[:tags] = tags if tags != SENTINEL
1577
1694
  _body[:data_source_id] = data_source_id if data_source_id != SENTINEL
@@ -1779,7 +1896,7 @@ module Carbon
1779
1896
  # @param file_sync_config [FileSyncConfigNullable]
1780
1897
  # @param body [SyncFilesRequest]
1781
1898
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
1782
- def sync_files(data_source_id:, ids:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, set_page_as_boundary: false, request_id: '6ae9a1d5-64b6-4ec2-ab39-8869a383e3cf', use_ocr: false, parse_pdf_tables_with_ocr: false, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
1899
+ def sync_files(data_source_id:, ids:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, set_page_as_boundary: false, request_id: 'bb4d49b0-3837-444a-9b71-f529df5968cb', use_ocr: false, parse_pdf_tables_with_ocr: false, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
1783
1900
  _body = {}
1784
1901
  _body[:tags] = tags if tags != SENTINEL
1785
1902
  _body[:data_source_id] = data_source_id if data_source_id != SENTINEL
@@ -1827,7 +1944,7 @@ module Carbon
1827
1944
  # @param file_sync_config [FileSyncConfigNullable]
1828
1945
  # @param body [SyncFilesRequest]
1829
1946
  # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
1830
- def sync_files_with_http_info(data_source_id:, ids:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, set_page_as_boundary: false, request_id: '6ae9a1d5-64b6-4ec2-ab39-8869a383e3cf', use_ocr: false, parse_pdf_tables_with_ocr: false, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
1947
+ def sync_files_with_http_info(data_source_id:, ids:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, max_items_per_chunk: SENTINEL, set_page_as_boundary: false, request_id: 'bb4d49b0-3837-444a-9b71-f529df5968cb', use_ocr: false, parse_pdf_tables_with_ocr: false, incremental_sync: false, file_sync_config: SENTINEL, extra: {})
1831
1948
  _body = {}
1832
1949
  _body[:tags] = tags if tags != SENTINEL
1833
1950
  _body[:data_source_id] = data_source_id if data_source_id != SENTINEL
@@ -3062,6 +3179,142 @@ module Carbon
3062
3179
  end
3063
3180
  APIResponse::new(data, status_code, headers, response)
3064
3181
  end
3182
+
3183
+
3184
+ # Slack Sync
3185
+ #
3186
+ # You can list all conversations using the endpoint /integrations/slack/conversations. The ID of
3187
+ # conversation will be used as an input for this endpoint with timestamps as optional filters.
3188
+ #
3189
+ # @param filters [SlackFilters]
3190
+ # @param tags [Object]
3191
+ # @param chunk_size [Integer]
3192
+ # @param chunk_overlap [Integer]
3193
+ # @param skip_embedding_generation [Boolean]
3194
+ # @param embedding_model [EmbeddingGenerators]
3195
+ # @param generate_sparse_vectors [Boolean]
3196
+ # @param prepend_filename_to_chunks [Boolean]
3197
+ # @param data_source_id [Integer]
3198
+ # @param request_id [String]
3199
+ # @param body [SlackSyncRequest]
3200
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
3201
+ def sync_slack(filters:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, data_source_id: SENTINEL, request_id: SENTINEL, extra: {})
3202
+ _body = {}
3203
+ _body[:tags] = tags if tags != SENTINEL
3204
+ _body[:filters] = filters if filters != SENTINEL
3205
+ _body[:chunk_size] = chunk_size if chunk_size != SENTINEL
3206
+ _body[:chunk_overlap] = chunk_overlap if chunk_overlap != SENTINEL
3207
+ _body[:skip_embedding_generation] = skip_embedding_generation if skip_embedding_generation != SENTINEL
3208
+ _body[:embedding_model] = embedding_model if embedding_model != SENTINEL
3209
+ _body[:generate_sparse_vectors] = generate_sparse_vectors if generate_sparse_vectors != SENTINEL
3210
+ _body[:prepend_filename_to_chunks] = prepend_filename_to_chunks if prepend_filename_to_chunks != SENTINEL
3211
+ _body[:data_source_id] = data_source_id if data_source_id != SENTINEL
3212
+ _body[:request_id] = request_id if request_id != SENTINEL
3213
+ slack_sync_request = _body
3214
+ api_response = sync_slack_with_http_info_impl(slack_sync_request, extra)
3215
+ api_response.data
3216
+ end
3217
+
3218
+ # Slack Sync
3219
+ #
3220
+ # You can list all conversations using the endpoint /integrations/slack/conversations. The ID of
3221
+ # conversation will be used as an input for this endpoint with timestamps as optional filters.
3222
+ #
3223
+ # @param filters [SlackFilters]
3224
+ # @param tags [Object]
3225
+ # @param chunk_size [Integer]
3226
+ # @param chunk_overlap [Integer]
3227
+ # @param skip_embedding_generation [Boolean]
3228
+ # @param embedding_model [EmbeddingGenerators]
3229
+ # @param generate_sparse_vectors [Boolean]
3230
+ # @param prepend_filename_to_chunks [Boolean]
3231
+ # @param data_source_id [Integer]
3232
+ # @param request_id [String]
3233
+ # @param body [SlackSyncRequest]
3234
+ # @param [Hash] extra additional parameters to pass along through :header_params, :query_params, or parameter name
3235
+ def sync_slack_with_http_info(filters:, tags: SENTINEL, chunk_size: 1500, chunk_overlap: 20, skip_embedding_generation: false, embedding_model: 'OPENAI', generate_sparse_vectors: false, prepend_filename_to_chunks: false, data_source_id: SENTINEL, request_id: SENTINEL, extra: {})
3236
+ _body = {}
3237
+ _body[:tags] = tags if tags != SENTINEL
3238
+ _body[:filters] = filters if filters != SENTINEL
3239
+ _body[:chunk_size] = chunk_size if chunk_size != SENTINEL
3240
+ _body[:chunk_overlap] = chunk_overlap if chunk_overlap != SENTINEL
3241
+ _body[:skip_embedding_generation] = skip_embedding_generation if skip_embedding_generation != SENTINEL
3242
+ _body[:embedding_model] = embedding_model if embedding_model != SENTINEL
3243
+ _body[:generate_sparse_vectors] = generate_sparse_vectors if generate_sparse_vectors != SENTINEL
3244
+ _body[:prepend_filename_to_chunks] = prepend_filename_to_chunks if prepend_filename_to_chunks != SENTINEL
3245
+ _body[:data_source_id] = data_source_id if data_source_id != SENTINEL
3246
+ _body[:request_id] = request_id if request_id != SENTINEL
3247
+ slack_sync_request = _body
3248
+ sync_slack_with_http_info_impl(slack_sync_request, extra)
3249
+ end
3250
+
3251
+ # Slack Sync
3252
+ # You can list all conversations using the endpoint /integrations/slack/conversations. The ID of conversation will be used as an input for this endpoint with timestamps as optional filters.
3253
+ # @param slack_sync_request [SlackSyncRequest]
3254
+ # @param [Hash] opts the optional parameters
3255
+ # @return [Object]
3256
+ private def sync_slack_impl(slack_sync_request, opts = {})
3257
+ data, _status_code, _headers = sync_slack_with_http_info(slack_sync_request, opts)
3258
+ data
3259
+ end
3260
+
3261
+ # Slack Sync
3262
+ # You can list all conversations using the endpoint /integrations/slack/conversations. The ID of conversation will be used as an input for this endpoint with timestamps as optional filters.
3263
+ # @param slack_sync_request [SlackSyncRequest]
3264
+ # @param [Hash] opts the optional parameters
3265
+ # @return [APIResponse] data is Object, status code, headers and response
3266
+ private def sync_slack_with_http_info_impl(slack_sync_request, opts = {})
3267
+ if @api_client.config.debugging
3268
+ @api_client.config.logger.debug 'Calling API: IntegrationsApi.sync_slack ...'
3269
+ end
3270
+ # verify the required parameter 'slack_sync_request' is set
3271
+ if @api_client.config.client_side_validation && slack_sync_request.nil?
3272
+ fail ArgumentError, "Missing the required parameter 'slack_sync_request' when calling IntegrationsApi.sync_slack"
3273
+ end
3274
+ # resource path
3275
+ local_var_path = '/integrations/slack/sync'
3276
+
3277
+ # query parameters
3278
+ query_params = opts[:query_params] || {}
3279
+
3280
+ # header parameters
3281
+ header_params = opts[:header_params] || {}
3282
+ # HTTP header 'Accept' (if needed)
3283
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
3284
+ # HTTP header 'Content-Type'
3285
+ content_type = @api_client.select_header_content_type(['application/json'])
3286
+ if !content_type.nil?
3287
+ header_params['Content-Type'] = content_type
3288
+ end
3289
+
3290
+ # form parameters
3291
+ form_params = opts[:form_params] || {}
3292
+
3293
+ # http body (model)
3294
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(slack_sync_request)
3295
+
3296
+ # return_type
3297
+ return_type = opts[:debug_return_type] || 'Object'
3298
+
3299
+ # auth_names
3300
+ auth_names = opts[:debug_auth_names] || ['accessToken', 'apiKey', 'customerId']
3301
+
3302
+ new_options = opts.merge(
3303
+ :operation => :"IntegrationsApi.sync_slack",
3304
+ :header_params => header_params,
3305
+ :query_params => query_params,
3306
+ :form_params => form_params,
3307
+ :body => post_body,
3308
+ :auth_names => auth_names,
3309
+ :return_type => return_type
3310
+ )
3311
+
3312
+ data, status_code, headers, response = @api_client.call_api(:POST, local_var_path, new_options)
3313
+ if @api_client.config.debugging
3314
+ @api_client.config.logger.debug "API called: IntegrationsApi#sync_slack\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
3315
+ end
3316
+ APIResponse::new(data, status_code, headers, response)
3317
+ end
3065
3318
  end
3066
3319
 
3067
3320
  # top-level client access to avoid having the user to insantiate their own API instances
@@ -43,6 +43,7 @@ module Carbon
43
43
  GITBOOK = "GITBOOK".freeze
44
44
  SALESFORCE = "SALESFORCE".freeze
45
45
  GITHUB = "GITHUB".freeze
46
+ SLACK = "SLACK".freeze
46
47
  JPG = "JPG".freeze
47
48
  PNG = "PNG".freeze
48
49
  JPEG = "JPEG".freeze
@@ -66,7 +67,7 @@ module Carbon
66
67
  WEBM = "WEBM".freeze
67
68
 
68
69
  def self.all_vars
69
- @all_vars ||= [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, JPG, PNG, JPEG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM].freeze
70
+ @all_vars ||= [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].freeze
70
71
  end
71
72
 
72
73
  # Builds the enum from string
@@ -43,6 +43,7 @@ module Carbon
43
43
  GITBOOK = "GITBOOK".freeze
44
44
  SALESFORCE = "SALESFORCE".freeze
45
45
  GITHUB = "GITHUB".freeze
46
+ SLACK = "SLACK".freeze
46
47
  JPG = "JPG".freeze
47
48
  PNG = "PNG".freeze
48
49
  JPEG = "JPEG".freeze
@@ -66,7 +67,7 @@ module Carbon
66
67
  WEBM = "WEBM".freeze
67
68
 
68
69
  def self.all_vars
69
- @all_vars ||= [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, JPG, PNG, JPEG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM].freeze
70
+ @all_vars ||= [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].freeze
70
71
  end
71
72
 
72
73
  # Builds the enum from string
@@ -37,6 +37,7 @@ module Carbon
37
37
  GITBOOK = "GITBOOK".freeze
38
38
  SALESFORCE = "SALESFORCE".freeze
39
39
  GITHUB = "GITHUB".freeze
40
+ SLACK = "SLACK".freeze
40
41
  JPG = "JPG".freeze
41
42
  PNG = "PNG".freeze
42
43
  MP3 = "MP3".freeze
@@ -59,7 +60,7 @@ module Carbon
59
60
  WEBM = "WEBM".freeze
60
61
 
61
62
  def self.all_vars
62
- @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, JPG, PNG, MP3, MP2, AAC, WAV, FLAC, PCM, M4_A, OGG, OPUS, MPEG, MPG, MP4, WMV, AVI, MOV, MKV, FLV, WEBM].freeze
63
+ @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].freeze
63
64
  end
64
65
 
65
66
  # Builds the enum from string