airbyte-agent-slack 0.1.6__py3-none-any.whl → 0.1.9__py3-none-any.whl
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.
- airbyte_agent_slack/__init__.py +47 -3
- airbyte_agent_slack/_vendored/connector_sdk/executor/local_executor.py +3 -1
- airbyte_agent_slack/_vendored/connector_sdk/http_client.py +2 -0
- airbyte_agent_slack/_vendored/connector_sdk/logging/logger.py +10 -1
- airbyte_agent_slack/_vendored/connector_sdk/logging/types.py +1 -0
- airbyte_agent_slack/_vendored/connector_sdk/validation.py +12 -6
- airbyte_agent_slack/connector.py +334 -1
- airbyte_agent_slack/connector_model.py +1769 -704
- airbyte_agent_slack/models.py +143 -21
- airbyte_agent_slack/types.py +41 -0
- {airbyte_agent_slack-0.1.6.dist-info → airbyte_agent_slack-0.1.9.dist-info}/METADATA +32 -13
- {airbyte_agent_slack-0.1.6.dist-info → airbyte_agent_slack-0.1.9.dist-info}/RECORD +13 -13
- {airbyte_agent_slack-0.1.6.dist-info → airbyte_agent_slack-0.1.9.dist-info}/WHEEL +0 -0
|
@@ -27,7 +27,7 @@ from uuid import (
|
|
|
27
27
|
SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
28
28
|
id=UUID('c2281cee-86f9-4a86-bb48-d23286b4c7bd'),
|
|
29
29
|
name='slack',
|
|
30
|
-
version='0.1.
|
|
30
|
+
version='0.1.3',
|
|
31
31
|
base_url='https://slack.com/api',
|
|
32
32
|
auth=AuthConfig(
|
|
33
33
|
options=[
|
|
@@ -47,6 +47,7 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
47
47
|
),
|
|
48
48
|
},
|
|
49
49
|
auth_mapping={'token': '${access_token}'},
|
|
50
|
+
replication_auth_key_mapping={'credentials.api_token': 'access_token'},
|
|
50
51
|
),
|
|
51
52
|
),
|
|
52
53
|
AuthOption(
|
|
@@ -82,7 +83,7 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
82
83
|
'client_secret': '${client_secret}',
|
|
83
84
|
'access_token': '${access_token}',
|
|
84
85
|
},
|
|
85
|
-
replication_auth_key_mapping={'client_id': 'client_id', 'client_secret': 'client_secret'},
|
|
86
|
+
replication_auth_key_mapping={'credentials.client_id': 'client_id', 'credentials.client_secret': 'client_secret'},
|
|
86
87
|
),
|
|
87
88
|
),
|
|
88
89
|
],
|
|
@@ -599,7 +600,12 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
599
600
|
EntityDefinition(
|
|
600
601
|
name='channels',
|
|
601
602
|
stream_name='channels',
|
|
602
|
-
actions=[
|
|
603
|
+
actions=[
|
|
604
|
+
Action.LIST,
|
|
605
|
+
Action.GET,
|
|
606
|
+
Action.CREATE,
|
|
607
|
+
Action.UPDATE,
|
|
608
|
+
],
|
|
603
609
|
endpoints={
|
|
604
610
|
Action.LIST: EndpointDefinition(
|
|
605
611
|
method='GET',
|
|
@@ -1017,265 +1023,1143 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
1017
1023
|
},
|
|
1018
1024
|
record_extractor='$.channel',
|
|
1019
1025
|
),
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
'
|
|
1026
|
-
|
|
1027
|
-
'type':
|
|
1028
|
-
'description': '
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
'description': 'Whether this is a channel',
|
|
1033
|
-
},
|
|
1034
|
-
'is_group': {
|
|
1035
|
-
'type': ['boolean', 'null'],
|
|
1036
|
-
'description': 'Whether this is a group',
|
|
1037
|
-
},
|
|
1038
|
-
'is_im': {
|
|
1039
|
-
'type': ['boolean', 'null'],
|
|
1040
|
-
'description': 'Whether this is a direct message',
|
|
1041
|
-
},
|
|
1042
|
-
'is_mpim': {
|
|
1043
|
-
'type': ['boolean', 'null'],
|
|
1044
|
-
'description': 'Whether this is a multi-party direct message',
|
|
1045
|
-
},
|
|
1046
|
-
'is_private': {
|
|
1047
|
-
'type': ['boolean', 'null'],
|
|
1048
|
-
'description': 'Whether the channel is private',
|
|
1049
|
-
},
|
|
1050
|
-
'created': {
|
|
1051
|
-
'type': ['integer', 'null'],
|
|
1052
|
-
'description': 'Unix timestamp of channel creation',
|
|
1053
|
-
},
|
|
1054
|
-
'is_archived': {
|
|
1055
|
-
'type': ['boolean', 'null'],
|
|
1056
|
-
'description': 'Whether the channel is archived',
|
|
1057
|
-
},
|
|
1058
|
-
'is_general': {
|
|
1059
|
-
'type': ['boolean', 'null'],
|
|
1060
|
-
'description': 'Whether this is the general channel',
|
|
1061
|
-
},
|
|
1062
|
-
'unlinked': {
|
|
1063
|
-
'type': ['integer', 'null'],
|
|
1064
|
-
'description': 'Unlinked timestamp',
|
|
1065
|
-
},
|
|
1066
|
-
'name_normalized': {
|
|
1067
|
-
'type': ['string', 'null'],
|
|
1068
|
-
'description': 'Normalized channel name',
|
|
1069
|
-
},
|
|
1070
|
-
'is_shared': {
|
|
1071
|
-
'type': ['boolean', 'null'],
|
|
1072
|
-
'description': 'Whether the channel is shared',
|
|
1073
|
-
},
|
|
1074
|
-
'is_org_shared': {
|
|
1075
|
-
'type': ['boolean', 'null'],
|
|
1076
|
-
'description': 'Whether the channel is shared across the organization',
|
|
1077
|
-
},
|
|
1078
|
-
'is_pending_ext_shared': {
|
|
1079
|
-
'type': ['boolean', 'null'],
|
|
1080
|
-
'description': 'Whether external sharing is pending',
|
|
1081
|
-
},
|
|
1082
|
-
'pending_shared': {
|
|
1083
|
-
'type': ['array', 'null'],
|
|
1084
|
-
'items': {'type': 'string'},
|
|
1085
|
-
'description': 'Pending shared teams',
|
|
1086
|
-
},
|
|
1087
|
-
'context_team_id': {
|
|
1088
|
-
'type': ['string', 'null'],
|
|
1089
|
-
'description': 'Context team ID',
|
|
1090
|
-
},
|
|
1091
|
-
'updated': {
|
|
1092
|
-
'type': ['integer', 'null'],
|
|
1093
|
-
'description': 'Unix timestamp of last update',
|
|
1094
|
-
},
|
|
1095
|
-
'creator': {
|
|
1096
|
-
'type': ['string', 'null'],
|
|
1097
|
-
'description': 'User ID of the channel creator',
|
|
1098
|
-
},
|
|
1099
|
-
'is_ext_shared': {
|
|
1100
|
-
'type': ['boolean', 'null'],
|
|
1101
|
-
'description': 'Whether the channel is externally shared',
|
|
1102
|
-
},
|
|
1103
|
-
'shared_team_ids': {
|
|
1104
|
-
'type': ['array', 'null'],
|
|
1105
|
-
'items': {'type': 'string'},
|
|
1106
|
-
'description': 'IDs of teams the channel is shared with',
|
|
1107
|
-
},
|
|
1108
|
-
'pending_connected_team_ids': {
|
|
1109
|
-
'type': ['array', 'null'],
|
|
1110
|
-
'items': {'type': 'string'},
|
|
1111
|
-
'description': 'IDs of teams with pending connection',
|
|
1112
|
-
},
|
|
1113
|
-
'is_member': {
|
|
1114
|
-
'type': ['boolean', 'null'],
|
|
1115
|
-
'description': 'Whether the authenticated user is a member',
|
|
1116
|
-
},
|
|
1117
|
-
'topic': {
|
|
1118
|
-
'oneOf': [
|
|
1119
|
-
{'$ref': '#/components/schemas/ChannelTopic'},
|
|
1120
|
-
{'type': 'null'},
|
|
1121
|
-
],
|
|
1122
|
-
'description': 'Channel topic',
|
|
1123
|
-
},
|
|
1124
|
-
'purpose': {
|
|
1125
|
-
'oneOf': [
|
|
1126
|
-
{'$ref': '#/components/schemas/ChannelPurpose'},
|
|
1127
|
-
{'type': 'null'},
|
|
1128
|
-
],
|
|
1129
|
-
'description': 'Channel purpose',
|
|
1130
|
-
},
|
|
1131
|
-
'previous_names': {
|
|
1132
|
-
'type': ['array', 'null'],
|
|
1133
|
-
'items': {'type': 'string'},
|
|
1134
|
-
'description': 'Previous channel names',
|
|
1135
|
-
},
|
|
1136
|
-
'num_members': {
|
|
1137
|
-
'type': ['integer', 'null'],
|
|
1138
|
-
'description': 'Number of members in the channel',
|
|
1139
|
-
},
|
|
1140
|
-
'parent_conversation': {
|
|
1141
|
-
'type': ['string', 'null'],
|
|
1142
|
-
'description': 'Parent conversation ID if this is a thread',
|
|
1143
|
-
},
|
|
1144
|
-
'properties': {
|
|
1145
|
-
'type': ['object', 'null'],
|
|
1146
|
-
'description': 'Additional channel properties',
|
|
1147
|
-
},
|
|
1148
|
-
'is_thread_only': {
|
|
1149
|
-
'type': ['boolean', 'null'],
|
|
1150
|
-
'description': 'Whether the channel is thread-only',
|
|
1151
|
-
},
|
|
1152
|
-
'is_read_only': {
|
|
1153
|
-
'type': ['boolean', 'null'],
|
|
1154
|
-
'description': 'Whether the channel is read-only',
|
|
1155
|
-
},
|
|
1156
|
-
},
|
|
1157
|
-
'x-airbyte-entity-name': 'channels',
|
|
1158
|
-
'x-airbyte-stream-name': 'channels',
|
|
1159
|
-
},
|
|
1160
|
-
),
|
|
1161
|
-
EntityDefinition(
|
|
1162
|
-
name='channel_messages',
|
|
1163
|
-
stream_name='channel_messages',
|
|
1164
|
-
actions=[Action.LIST],
|
|
1165
|
-
endpoints={
|
|
1166
|
-
Action.LIST: EndpointDefinition(
|
|
1167
|
-
method='GET',
|
|
1168
|
-
path='/conversations.history',
|
|
1169
|
-
action=Action.LIST,
|
|
1170
|
-
description='Returns messages from a channel',
|
|
1171
|
-
query_params=[
|
|
1172
|
-
'channel',
|
|
1173
|
-
'cursor',
|
|
1174
|
-
'limit',
|
|
1175
|
-
'oldest',
|
|
1176
|
-
'latest',
|
|
1177
|
-
'inclusive',
|
|
1178
|
-
],
|
|
1179
|
-
query_params_schema={
|
|
1180
|
-
'channel': {'type': 'string', 'required': True},
|
|
1181
|
-
'cursor': {'type': 'string', 'required': False},
|
|
1182
|
-
'limit': {
|
|
1183
|
-
'type': 'integer',
|
|
1184
|
-
'required': False,
|
|
1185
|
-
'default': 100,
|
|
1186
|
-
},
|
|
1187
|
-
'oldest': {'type': 'string', 'required': False},
|
|
1188
|
-
'latest': {'type': 'string', 'required': False},
|
|
1189
|
-
'inclusive': {
|
|
1190
|
-
'type': 'boolean',
|
|
1191
|
-
'required': False,
|
|
1192
|
-
'default': False,
|
|
1026
|
+
Action.CREATE: EndpointDefinition(
|
|
1027
|
+
method='POST',
|
|
1028
|
+
path='/conversations.create',
|
|
1029
|
+
action=Action.CREATE,
|
|
1030
|
+
description='Creates a new public or private channel',
|
|
1031
|
+
body_fields=['name', 'is_private'],
|
|
1032
|
+
request_schema={
|
|
1033
|
+
'type': 'object',
|
|
1034
|
+
'description': 'Parameters for creating a channel',
|
|
1035
|
+
'properties': {
|
|
1036
|
+
'name': {'type': 'string', 'description': 'Channel name (lowercase, no spaces, max 80 chars)'},
|
|
1037
|
+
'is_private': {'type': 'boolean', 'description': 'Create a private channel instead of public'},
|
|
1193
1038
|
},
|
|
1039
|
+
'required': ['name'],
|
|
1194
1040
|
},
|
|
1195
1041
|
response_schema={
|
|
1196
1042
|
'type': 'object',
|
|
1197
|
-
'description': 'Response
|
|
1043
|
+
'description': 'Response from creating a channel',
|
|
1198
1044
|
'properties': {
|
|
1199
1045
|
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
1200
|
-
'
|
|
1201
|
-
'type': '
|
|
1202
|
-
'
|
|
1203
|
-
|
|
1204
|
-
'description': '
|
|
1205
|
-
'
|
|
1206
|
-
'type':
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
'
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
'
|
|
1215
|
-
'
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
'
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
'
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
'
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
'
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
'
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
'
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
'
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1046
|
+
'channel': {
|
|
1047
|
+
'type': 'object',
|
|
1048
|
+
'description': 'Slack channel object',
|
|
1049
|
+
'properties': {
|
|
1050
|
+
'id': {'type': 'string', 'description': 'Unique channel identifier'},
|
|
1051
|
+
'name': {
|
|
1052
|
+
'type': ['string', 'null'],
|
|
1053
|
+
'description': 'Channel name',
|
|
1054
|
+
},
|
|
1055
|
+
'is_channel': {
|
|
1056
|
+
'type': ['boolean', 'null'],
|
|
1057
|
+
'description': 'Whether this is a channel',
|
|
1058
|
+
},
|
|
1059
|
+
'is_group': {
|
|
1060
|
+
'type': ['boolean', 'null'],
|
|
1061
|
+
'description': 'Whether this is a group',
|
|
1062
|
+
},
|
|
1063
|
+
'is_im': {
|
|
1064
|
+
'type': ['boolean', 'null'],
|
|
1065
|
+
'description': 'Whether this is a direct message',
|
|
1066
|
+
},
|
|
1067
|
+
'is_mpim': {
|
|
1068
|
+
'type': ['boolean', 'null'],
|
|
1069
|
+
'description': 'Whether this is a multi-party direct message',
|
|
1070
|
+
},
|
|
1071
|
+
'is_private': {
|
|
1072
|
+
'type': ['boolean', 'null'],
|
|
1073
|
+
'description': 'Whether the channel is private',
|
|
1074
|
+
},
|
|
1075
|
+
'created': {
|
|
1076
|
+
'type': ['integer', 'null'],
|
|
1077
|
+
'description': 'Unix timestamp of channel creation',
|
|
1078
|
+
},
|
|
1079
|
+
'is_archived': {
|
|
1080
|
+
'type': ['boolean', 'null'],
|
|
1081
|
+
'description': 'Whether the channel is archived',
|
|
1082
|
+
},
|
|
1083
|
+
'is_general': {
|
|
1084
|
+
'type': ['boolean', 'null'],
|
|
1085
|
+
'description': 'Whether this is the general channel',
|
|
1086
|
+
},
|
|
1087
|
+
'unlinked': {
|
|
1088
|
+
'type': ['integer', 'null'],
|
|
1089
|
+
'description': 'Unlinked timestamp',
|
|
1090
|
+
},
|
|
1091
|
+
'name_normalized': {
|
|
1092
|
+
'type': ['string', 'null'],
|
|
1093
|
+
'description': 'Normalized channel name',
|
|
1094
|
+
},
|
|
1095
|
+
'is_shared': {
|
|
1096
|
+
'type': ['boolean', 'null'],
|
|
1097
|
+
'description': 'Whether the channel is shared',
|
|
1098
|
+
},
|
|
1099
|
+
'is_org_shared': {
|
|
1100
|
+
'type': ['boolean', 'null'],
|
|
1101
|
+
'description': 'Whether the channel is shared across the organization',
|
|
1102
|
+
},
|
|
1103
|
+
'is_pending_ext_shared': {
|
|
1104
|
+
'type': ['boolean', 'null'],
|
|
1105
|
+
'description': 'Whether external sharing is pending',
|
|
1106
|
+
},
|
|
1107
|
+
'pending_shared': {
|
|
1108
|
+
'type': ['array', 'null'],
|
|
1109
|
+
'items': {'type': 'string'},
|
|
1110
|
+
'description': 'Pending shared teams',
|
|
1111
|
+
},
|
|
1112
|
+
'context_team_id': {
|
|
1113
|
+
'type': ['string', 'null'],
|
|
1114
|
+
'description': 'Context team ID',
|
|
1115
|
+
},
|
|
1116
|
+
'updated': {
|
|
1117
|
+
'type': ['integer', 'null'],
|
|
1118
|
+
'description': 'Unix timestamp of last update',
|
|
1119
|
+
},
|
|
1120
|
+
'creator': {
|
|
1121
|
+
'type': ['string', 'null'],
|
|
1122
|
+
'description': 'User ID of the channel creator',
|
|
1123
|
+
},
|
|
1124
|
+
'is_ext_shared': {
|
|
1125
|
+
'type': ['boolean', 'null'],
|
|
1126
|
+
'description': 'Whether the channel is externally shared',
|
|
1127
|
+
},
|
|
1128
|
+
'shared_team_ids': {
|
|
1129
|
+
'type': ['array', 'null'],
|
|
1130
|
+
'items': {'type': 'string'},
|
|
1131
|
+
'description': 'IDs of teams the channel is shared with',
|
|
1132
|
+
},
|
|
1133
|
+
'pending_connected_team_ids': {
|
|
1134
|
+
'type': ['array', 'null'],
|
|
1135
|
+
'items': {'type': 'string'},
|
|
1136
|
+
'description': 'IDs of teams with pending connection',
|
|
1137
|
+
},
|
|
1138
|
+
'is_member': {
|
|
1139
|
+
'type': ['boolean', 'null'],
|
|
1140
|
+
'description': 'Whether the authenticated user is a member',
|
|
1141
|
+
},
|
|
1142
|
+
'topic': {
|
|
1143
|
+
'oneOf': [
|
|
1144
|
+
{
|
|
1145
|
+
'type': 'object',
|
|
1146
|
+
'description': 'Channel topic information',
|
|
1147
|
+
'properties': {
|
|
1148
|
+
'value': {
|
|
1149
|
+
'type': ['string', 'null'],
|
|
1150
|
+
'description': 'Topic text',
|
|
1151
|
+
},
|
|
1152
|
+
'creator': {
|
|
1153
|
+
'type': ['string', 'null'],
|
|
1154
|
+
'description': 'User ID who set the topic',
|
|
1155
|
+
},
|
|
1156
|
+
'last_set': {
|
|
1157
|
+
'type': ['integer', 'null'],
|
|
1158
|
+
'description': 'Unix timestamp when topic was last set',
|
|
1159
|
+
},
|
|
1160
|
+
},
|
|
1161
|
+
},
|
|
1162
|
+
{'type': 'null'},
|
|
1163
|
+
],
|
|
1164
|
+
'description': 'Channel topic',
|
|
1165
|
+
},
|
|
1166
|
+
'purpose': {
|
|
1167
|
+
'oneOf': [
|
|
1168
|
+
{
|
|
1169
|
+
'type': 'object',
|
|
1170
|
+
'description': 'Channel purpose information',
|
|
1171
|
+
'properties': {
|
|
1172
|
+
'value': {
|
|
1173
|
+
'type': ['string', 'null'],
|
|
1174
|
+
'description': 'Purpose text',
|
|
1175
|
+
},
|
|
1176
|
+
'creator': {
|
|
1177
|
+
'type': ['string', 'null'],
|
|
1178
|
+
'description': 'User ID who set the purpose',
|
|
1179
|
+
},
|
|
1180
|
+
'last_set': {
|
|
1181
|
+
'type': ['integer', 'null'],
|
|
1182
|
+
'description': 'Unix timestamp when purpose was last set',
|
|
1183
|
+
},
|
|
1184
|
+
},
|
|
1185
|
+
},
|
|
1186
|
+
{'type': 'null'},
|
|
1187
|
+
],
|
|
1188
|
+
'description': 'Channel purpose',
|
|
1189
|
+
},
|
|
1190
|
+
'previous_names': {
|
|
1191
|
+
'type': ['array', 'null'],
|
|
1192
|
+
'items': {'type': 'string'},
|
|
1193
|
+
'description': 'Previous channel names',
|
|
1194
|
+
},
|
|
1195
|
+
'num_members': {
|
|
1196
|
+
'type': ['integer', 'null'],
|
|
1197
|
+
'description': 'Number of members in the channel',
|
|
1198
|
+
},
|
|
1199
|
+
'parent_conversation': {
|
|
1200
|
+
'type': ['string', 'null'],
|
|
1201
|
+
'description': 'Parent conversation ID if this is a thread',
|
|
1202
|
+
},
|
|
1203
|
+
'properties': {
|
|
1204
|
+
'type': ['object', 'null'],
|
|
1205
|
+
'description': 'Additional channel properties',
|
|
1206
|
+
},
|
|
1207
|
+
'is_thread_only': {
|
|
1208
|
+
'type': ['boolean', 'null'],
|
|
1209
|
+
'description': 'Whether the channel is thread-only',
|
|
1210
|
+
},
|
|
1211
|
+
'is_read_only': {
|
|
1212
|
+
'type': ['boolean', 'null'],
|
|
1213
|
+
'description': 'Whether the channel is read-only',
|
|
1214
|
+
},
|
|
1215
|
+
},
|
|
1216
|
+
'x-airbyte-entity-name': 'channels',
|
|
1217
|
+
'x-airbyte-stream-name': 'channels',
|
|
1218
|
+
},
|
|
1219
|
+
},
|
|
1220
|
+
},
|
|
1221
|
+
record_extractor='$.channel',
|
|
1222
|
+
),
|
|
1223
|
+
Action.UPDATE: EndpointDefinition(
|
|
1224
|
+
method='POST',
|
|
1225
|
+
path='/conversations.rename',
|
|
1226
|
+
action=Action.UPDATE,
|
|
1227
|
+
description='Renames an existing channel',
|
|
1228
|
+
body_fields=['channel', 'name'],
|
|
1229
|
+
request_schema={
|
|
1230
|
+
'type': 'object',
|
|
1231
|
+
'description': 'Parameters for renaming a channel',
|
|
1232
|
+
'properties': {
|
|
1233
|
+
'channel': {'type': 'string', 'description': 'Channel ID to rename'},
|
|
1234
|
+
'name': {'type': 'string', 'description': 'New channel name (lowercase, no spaces, max 80 chars)'},
|
|
1235
|
+
},
|
|
1236
|
+
'required': ['channel', 'name'],
|
|
1237
|
+
},
|
|
1238
|
+
response_schema={
|
|
1239
|
+
'type': 'object',
|
|
1240
|
+
'description': 'Response from renaming a channel',
|
|
1241
|
+
'properties': {
|
|
1242
|
+
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
1243
|
+
'channel': {
|
|
1244
|
+
'type': 'object',
|
|
1245
|
+
'description': 'Slack channel object',
|
|
1246
|
+
'properties': {
|
|
1247
|
+
'id': {'type': 'string', 'description': 'Unique channel identifier'},
|
|
1248
|
+
'name': {
|
|
1249
|
+
'type': ['string', 'null'],
|
|
1250
|
+
'description': 'Channel name',
|
|
1251
|
+
},
|
|
1252
|
+
'is_channel': {
|
|
1253
|
+
'type': ['boolean', 'null'],
|
|
1254
|
+
'description': 'Whether this is a channel',
|
|
1255
|
+
},
|
|
1256
|
+
'is_group': {
|
|
1257
|
+
'type': ['boolean', 'null'],
|
|
1258
|
+
'description': 'Whether this is a group',
|
|
1259
|
+
},
|
|
1260
|
+
'is_im': {
|
|
1261
|
+
'type': ['boolean', 'null'],
|
|
1262
|
+
'description': 'Whether this is a direct message',
|
|
1263
|
+
},
|
|
1264
|
+
'is_mpim': {
|
|
1265
|
+
'type': ['boolean', 'null'],
|
|
1266
|
+
'description': 'Whether this is a multi-party direct message',
|
|
1267
|
+
},
|
|
1268
|
+
'is_private': {
|
|
1269
|
+
'type': ['boolean', 'null'],
|
|
1270
|
+
'description': 'Whether the channel is private',
|
|
1271
|
+
},
|
|
1272
|
+
'created': {
|
|
1273
|
+
'type': ['integer', 'null'],
|
|
1274
|
+
'description': 'Unix timestamp of channel creation',
|
|
1275
|
+
},
|
|
1276
|
+
'is_archived': {
|
|
1277
|
+
'type': ['boolean', 'null'],
|
|
1278
|
+
'description': 'Whether the channel is archived',
|
|
1279
|
+
},
|
|
1280
|
+
'is_general': {
|
|
1281
|
+
'type': ['boolean', 'null'],
|
|
1282
|
+
'description': 'Whether this is the general channel',
|
|
1283
|
+
},
|
|
1284
|
+
'unlinked': {
|
|
1285
|
+
'type': ['integer', 'null'],
|
|
1286
|
+
'description': 'Unlinked timestamp',
|
|
1287
|
+
},
|
|
1288
|
+
'name_normalized': {
|
|
1289
|
+
'type': ['string', 'null'],
|
|
1290
|
+
'description': 'Normalized channel name',
|
|
1291
|
+
},
|
|
1292
|
+
'is_shared': {
|
|
1293
|
+
'type': ['boolean', 'null'],
|
|
1294
|
+
'description': 'Whether the channel is shared',
|
|
1295
|
+
},
|
|
1296
|
+
'is_org_shared': {
|
|
1297
|
+
'type': ['boolean', 'null'],
|
|
1298
|
+
'description': 'Whether the channel is shared across the organization',
|
|
1299
|
+
},
|
|
1300
|
+
'is_pending_ext_shared': {
|
|
1301
|
+
'type': ['boolean', 'null'],
|
|
1302
|
+
'description': 'Whether external sharing is pending',
|
|
1303
|
+
},
|
|
1304
|
+
'pending_shared': {
|
|
1305
|
+
'type': ['array', 'null'],
|
|
1306
|
+
'items': {'type': 'string'},
|
|
1307
|
+
'description': 'Pending shared teams',
|
|
1308
|
+
},
|
|
1309
|
+
'context_team_id': {
|
|
1310
|
+
'type': ['string', 'null'],
|
|
1311
|
+
'description': 'Context team ID',
|
|
1312
|
+
},
|
|
1313
|
+
'updated': {
|
|
1314
|
+
'type': ['integer', 'null'],
|
|
1315
|
+
'description': 'Unix timestamp of last update',
|
|
1316
|
+
},
|
|
1317
|
+
'creator': {
|
|
1318
|
+
'type': ['string', 'null'],
|
|
1319
|
+
'description': 'User ID of the channel creator',
|
|
1320
|
+
},
|
|
1321
|
+
'is_ext_shared': {
|
|
1322
|
+
'type': ['boolean', 'null'],
|
|
1323
|
+
'description': 'Whether the channel is externally shared',
|
|
1324
|
+
},
|
|
1325
|
+
'shared_team_ids': {
|
|
1326
|
+
'type': ['array', 'null'],
|
|
1327
|
+
'items': {'type': 'string'},
|
|
1328
|
+
'description': 'IDs of teams the channel is shared with',
|
|
1329
|
+
},
|
|
1330
|
+
'pending_connected_team_ids': {
|
|
1331
|
+
'type': ['array', 'null'],
|
|
1332
|
+
'items': {'type': 'string'},
|
|
1333
|
+
'description': 'IDs of teams with pending connection',
|
|
1334
|
+
},
|
|
1335
|
+
'is_member': {
|
|
1336
|
+
'type': ['boolean', 'null'],
|
|
1337
|
+
'description': 'Whether the authenticated user is a member',
|
|
1338
|
+
},
|
|
1339
|
+
'topic': {
|
|
1340
|
+
'oneOf': [
|
|
1341
|
+
{
|
|
1342
|
+
'type': 'object',
|
|
1343
|
+
'description': 'Channel topic information',
|
|
1344
|
+
'properties': {
|
|
1345
|
+
'value': {
|
|
1346
|
+
'type': ['string', 'null'],
|
|
1347
|
+
'description': 'Topic text',
|
|
1348
|
+
},
|
|
1349
|
+
'creator': {
|
|
1350
|
+
'type': ['string', 'null'],
|
|
1351
|
+
'description': 'User ID who set the topic',
|
|
1352
|
+
},
|
|
1353
|
+
'last_set': {
|
|
1354
|
+
'type': ['integer', 'null'],
|
|
1355
|
+
'description': 'Unix timestamp when topic was last set',
|
|
1356
|
+
},
|
|
1357
|
+
},
|
|
1358
|
+
},
|
|
1359
|
+
{'type': 'null'},
|
|
1360
|
+
],
|
|
1361
|
+
'description': 'Channel topic',
|
|
1362
|
+
},
|
|
1363
|
+
'purpose': {
|
|
1364
|
+
'oneOf': [
|
|
1365
|
+
{
|
|
1366
|
+
'type': 'object',
|
|
1367
|
+
'description': 'Channel purpose information',
|
|
1368
|
+
'properties': {
|
|
1369
|
+
'value': {
|
|
1370
|
+
'type': ['string', 'null'],
|
|
1371
|
+
'description': 'Purpose text',
|
|
1372
|
+
},
|
|
1373
|
+
'creator': {
|
|
1374
|
+
'type': ['string', 'null'],
|
|
1375
|
+
'description': 'User ID who set the purpose',
|
|
1376
|
+
},
|
|
1377
|
+
'last_set': {
|
|
1378
|
+
'type': ['integer', 'null'],
|
|
1379
|
+
'description': 'Unix timestamp when purpose was last set',
|
|
1380
|
+
},
|
|
1381
|
+
},
|
|
1382
|
+
},
|
|
1383
|
+
{'type': 'null'},
|
|
1384
|
+
],
|
|
1385
|
+
'description': 'Channel purpose',
|
|
1386
|
+
},
|
|
1387
|
+
'previous_names': {
|
|
1388
|
+
'type': ['array', 'null'],
|
|
1389
|
+
'items': {'type': 'string'},
|
|
1390
|
+
'description': 'Previous channel names',
|
|
1391
|
+
},
|
|
1392
|
+
'num_members': {
|
|
1393
|
+
'type': ['integer', 'null'],
|
|
1394
|
+
'description': 'Number of members in the channel',
|
|
1395
|
+
},
|
|
1396
|
+
'parent_conversation': {
|
|
1397
|
+
'type': ['string', 'null'],
|
|
1398
|
+
'description': 'Parent conversation ID if this is a thread',
|
|
1399
|
+
},
|
|
1400
|
+
'properties': {
|
|
1401
|
+
'type': ['object', 'null'],
|
|
1402
|
+
'description': 'Additional channel properties',
|
|
1403
|
+
},
|
|
1404
|
+
'is_thread_only': {
|
|
1405
|
+
'type': ['boolean', 'null'],
|
|
1406
|
+
'description': 'Whether the channel is thread-only',
|
|
1407
|
+
},
|
|
1408
|
+
'is_read_only': {
|
|
1409
|
+
'type': ['boolean', 'null'],
|
|
1410
|
+
'description': 'Whether the channel is read-only',
|
|
1411
|
+
},
|
|
1412
|
+
},
|
|
1413
|
+
'x-airbyte-entity-name': 'channels',
|
|
1414
|
+
'x-airbyte-stream-name': 'channels',
|
|
1415
|
+
},
|
|
1416
|
+
},
|
|
1417
|
+
},
|
|
1418
|
+
record_extractor='$.channel',
|
|
1419
|
+
),
|
|
1420
|
+
},
|
|
1421
|
+
entity_schema={
|
|
1422
|
+
'type': 'object',
|
|
1423
|
+
'description': 'Slack channel object',
|
|
1424
|
+
'properties': {
|
|
1425
|
+
'id': {'type': 'string', 'description': 'Unique channel identifier'},
|
|
1426
|
+
'name': {
|
|
1427
|
+
'type': ['string', 'null'],
|
|
1428
|
+
'description': 'Channel name',
|
|
1429
|
+
},
|
|
1430
|
+
'is_channel': {
|
|
1431
|
+
'type': ['boolean', 'null'],
|
|
1432
|
+
'description': 'Whether this is a channel',
|
|
1433
|
+
},
|
|
1434
|
+
'is_group': {
|
|
1435
|
+
'type': ['boolean', 'null'],
|
|
1436
|
+
'description': 'Whether this is a group',
|
|
1437
|
+
},
|
|
1438
|
+
'is_im': {
|
|
1439
|
+
'type': ['boolean', 'null'],
|
|
1440
|
+
'description': 'Whether this is a direct message',
|
|
1441
|
+
},
|
|
1442
|
+
'is_mpim': {
|
|
1443
|
+
'type': ['boolean', 'null'],
|
|
1444
|
+
'description': 'Whether this is a multi-party direct message',
|
|
1445
|
+
},
|
|
1446
|
+
'is_private': {
|
|
1447
|
+
'type': ['boolean', 'null'],
|
|
1448
|
+
'description': 'Whether the channel is private',
|
|
1449
|
+
},
|
|
1450
|
+
'created': {
|
|
1451
|
+
'type': ['integer', 'null'],
|
|
1452
|
+
'description': 'Unix timestamp of channel creation',
|
|
1453
|
+
},
|
|
1454
|
+
'is_archived': {
|
|
1455
|
+
'type': ['boolean', 'null'],
|
|
1456
|
+
'description': 'Whether the channel is archived',
|
|
1457
|
+
},
|
|
1458
|
+
'is_general': {
|
|
1459
|
+
'type': ['boolean', 'null'],
|
|
1460
|
+
'description': 'Whether this is the general channel',
|
|
1461
|
+
},
|
|
1462
|
+
'unlinked': {
|
|
1463
|
+
'type': ['integer', 'null'],
|
|
1464
|
+
'description': 'Unlinked timestamp',
|
|
1465
|
+
},
|
|
1466
|
+
'name_normalized': {
|
|
1467
|
+
'type': ['string', 'null'],
|
|
1468
|
+
'description': 'Normalized channel name',
|
|
1469
|
+
},
|
|
1470
|
+
'is_shared': {
|
|
1471
|
+
'type': ['boolean', 'null'],
|
|
1472
|
+
'description': 'Whether the channel is shared',
|
|
1473
|
+
},
|
|
1474
|
+
'is_org_shared': {
|
|
1475
|
+
'type': ['boolean', 'null'],
|
|
1476
|
+
'description': 'Whether the channel is shared across the organization',
|
|
1477
|
+
},
|
|
1478
|
+
'is_pending_ext_shared': {
|
|
1479
|
+
'type': ['boolean', 'null'],
|
|
1480
|
+
'description': 'Whether external sharing is pending',
|
|
1481
|
+
},
|
|
1482
|
+
'pending_shared': {
|
|
1483
|
+
'type': ['array', 'null'],
|
|
1484
|
+
'items': {'type': 'string'},
|
|
1485
|
+
'description': 'Pending shared teams',
|
|
1486
|
+
},
|
|
1487
|
+
'context_team_id': {
|
|
1488
|
+
'type': ['string', 'null'],
|
|
1489
|
+
'description': 'Context team ID',
|
|
1490
|
+
},
|
|
1491
|
+
'updated': {
|
|
1492
|
+
'type': ['integer', 'null'],
|
|
1493
|
+
'description': 'Unix timestamp of last update',
|
|
1494
|
+
},
|
|
1495
|
+
'creator': {
|
|
1496
|
+
'type': ['string', 'null'],
|
|
1497
|
+
'description': 'User ID of the channel creator',
|
|
1498
|
+
},
|
|
1499
|
+
'is_ext_shared': {
|
|
1500
|
+
'type': ['boolean', 'null'],
|
|
1501
|
+
'description': 'Whether the channel is externally shared',
|
|
1502
|
+
},
|
|
1503
|
+
'shared_team_ids': {
|
|
1504
|
+
'type': ['array', 'null'],
|
|
1505
|
+
'items': {'type': 'string'},
|
|
1506
|
+
'description': 'IDs of teams the channel is shared with',
|
|
1507
|
+
},
|
|
1508
|
+
'pending_connected_team_ids': {
|
|
1509
|
+
'type': ['array', 'null'],
|
|
1510
|
+
'items': {'type': 'string'},
|
|
1511
|
+
'description': 'IDs of teams with pending connection',
|
|
1512
|
+
},
|
|
1513
|
+
'is_member': {
|
|
1514
|
+
'type': ['boolean', 'null'],
|
|
1515
|
+
'description': 'Whether the authenticated user is a member',
|
|
1516
|
+
},
|
|
1517
|
+
'topic': {
|
|
1518
|
+
'oneOf': [
|
|
1519
|
+
{'$ref': '#/components/schemas/ChannelTopic'},
|
|
1520
|
+
{'type': 'null'},
|
|
1521
|
+
],
|
|
1522
|
+
'description': 'Channel topic',
|
|
1523
|
+
},
|
|
1524
|
+
'purpose': {
|
|
1525
|
+
'oneOf': [
|
|
1526
|
+
{'$ref': '#/components/schemas/ChannelPurpose'},
|
|
1527
|
+
{'type': 'null'},
|
|
1528
|
+
],
|
|
1529
|
+
'description': 'Channel purpose',
|
|
1530
|
+
},
|
|
1531
|
+
'previous_names': {
|
|
1532
|
+
'type': ['array', 'null'],
|
|
1533
|
+
'items': {'type': 'string'},
|
|
1534
|
+
'description': 'Previous channel names',
|
|
1535
|
+
},
|
|
1536
|
+
'num_members': {
|
|
1537
|
+
'type': ['integer', 'null'],
|
|
1538
|
+
'description': 'Number of members in the channel',
|
|
1539
|
+
},
|
|
1540
|
+
'parent_conversation': {
|
|
1541
|
+
'type': ['string', 'null'],
|
|
1542
|
+
'description': 'Parent conversation ID if this is a thread',
|
|
1543
|
+
},
|
|
1544
|
+
'properties': {
|
|
1545
|
+
'type': ['object', 'null'],
|
|
1546
|
+
'description': 'Additional channel properties',
|
|
1547
|
+
},
|
|
1548
|
+
'is_thread_only': {
|
|
1549
|
+
'type': ['boolean', 'null'],
|
|
1550
|
+
'description': 'Whether the channel is thread-only',
|
|
1551
|
+
},
|
|
1552
|
+
'is_read_only': {
|
|
1553
|
+
'type': ['boolean', 'null'],
|
|
1554
|
+
'description': 'Whether the channel is read-only',
|
|
1555
|
+
},
|
|
1556
|
+
},
|
|
1557
|
+
'x-airbyte-entity-name': 'channels',
|
|
1558
|
+
'x-airbyte-stream-name': 'channels',
|
|
1559
|
+
},
|
|
1560
|
+
),
|
|
1561
|
+
EntityDefinition(
|
|
1562
|
+
name='channel_messages',
|
|
1563
|
+
stream_name='channel_messages',
|
|
1564
|
+
actions=[Action.LIST],
|
|
1565
|
+
endpoints={
|
|
1566
|
+
Action.LIST: EndpointDefinition(
|
|
1567
|
+
method='GET',
|
|
1568
|
+
path='/conversations.history',
|
|
1569
|
+
action=Action.LIST,
|
|
1570
|
+
description='Returns messages from a channel',
|
|
1571
|
+
query_params=[
|
|
1572
|
+
'channel',
|
|
1573
|
+
'cursor',
|
|
1574
|
+
'limit',
|
|
1575
|
+
'oldest',
|
|
1576
|
+
'latest',
|
|
1577
|
+
'inclusive',
|
|
1578
|
+
],
|
|
1579
|
+
query_params_schema={
|
|
1580
|
+
'channel': {'type': 'string', 'required': True},
|
|
1581
|
+
'cursor': {'type': 'string', 'required': False},
|
|
1582
|
+
'limit': {
|
|
1583
|
+
'type': 'integer',
|
|
1584
|
+
'required': False,
|
|
1585
|
+
'default': 100,
|
|
1586
|
+
},
|
|
1587
|
+
'oldest': {'type': 'string', 'required': False},
|
|
1588
|
+
'latest': {'type': 'string', 'required': False},
|
|
1589
|
+
'inclusive': {
|
|
1590
|
+
'type': 'boolean',
|
|
1591
|
+
'required': False,
|
|
1592
|
+
'default': False,
|
|
1593
|
+
},
|
|
1594
|
+
},
|
|
1595
|
+
response_schema={
|
|
1596
|
+
'type': 'object',
|
|
1597
|
+
'description': 'Response containing list of messages',
|
|
1598
|
+
'properties': {
|
|
1599
|
+
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
1600
|
+
'messages': {
|
|
1601
|
+
'type': 'array',
|
|
1602
|
+
'items': {
|
|
1603
|
+
'type': 'object',
|
|
1604
|
+
'description': 'Slack message object',
|
|
1605
|
+
'properties': {
|
|
1606
|
+
'type': {
|
|
1607
|
+
'type': ['string', 'null'],
|
|
1608
|
+
'description': 'Message type',
|
|
1609
|
+
},
|
|
1610
|
+
'subtype': {
|
|
1611
|
+
'type': ['string', 'null'],
|
|
1612
|
+
'description': 'Message subtype',
|
|
1613
|
+
},
|
|
1614
|
+
'ts': {'type': 'string', 'description': 'Message timestamp (unique identifier)'},
|
|
1615
|
+
'user': {
|
|
1616
|
+
'type': ['string', 'null'],
|
|
1617
|
+
'description': 'User ID who sent the message',
|
|
1618
|
+
},
|
|
1619
|
+
'text': {
|
|
1620
|
+
'type': ['string', 'null'],
|
|
1621
|
+
'description': 'Message text content',
|
|
1622
|
+
},
|
|
1623
|
+
'thread_ts': {
|
|
1624
|
+
'type': ['string', 'null'],
|
|
1625
|
+
'description': 'Thread parent timestamp',
|
|
1626
|
+
},
|
|
1627
|
+
'reply_count': {
|
|
1628
|
+
'type': ['integer', 'null'],
|
|
1629
|
+
'description': 'Number of replies in thread',
|
|
1630
|
+
},
|
|
1631
|
+
'reply_users_count': {
|
|
1632
|
+
'type': ['integer', 'null'],
|
|
1633
|
+
'description': 'Number of unique users who replied',
|
|
1634
|
+
},
|
|
1635
|
+
'latest_reply': {
|
|
1636
|
+
'type': ['string', 'null'],
|
|
1637
|
+
'description': 'Timestamp of latest reply',
|
|
1638
|
+
},
|
|
1639
|
+
'reply_users': {
|
|
1640
|
+
'type': ['array', 'null'],
|
|
1641
|
+
'items': {'type': 'string'},
|
|
1642
|
+
'description': 'User IDs who replied to the thread',
|
|
1643
|
+
},
|
|
1644
|
+
'is_locked': {
|
|
1645
|
+
'type': ['boolean', 'null'],
|
|
1646
|
+
'description': 'Whether the thread is locked',
|
|
1647
|
+
},
|
|
1648
|
+
'subscribed': {
|
|
1649
|
+
'type': ['boolean', 'null'],
|
|
1650
|
+
'description': 'Whether the user is subscribed to the thread',
|
|
1651
|
+
},
|
|
1652
|
+
'reactions': {
|
|
1653
|
+
'type': ['array', 'null'],
|
|
1654
|
+
'items': {
|
|
1655
|
+
'type': 'object',
|
|
1656
|
+
'description': 'Message reaction',
|
|
1657
|
+
'properties': {
|
|
1658
|
+
'name': {
|
|
1659
|
+
'type': ['string', 'null'],
|
|
1660
|
+
'description': 'Reaction emoji name',
|
|
1661
|
+
},
|
|
1662
|
+
'users': {
|
|
1663
|
+
'type': ['array', 'null'],
|
|
1664
|
+
'items': {'type': 'string'},
|
|
1665
|
+
'description': 'User IDs who reacted',
|
|
1666
|
+
},
|
|
1667
|
+
'count': {
|
|
1668
|
+
'type': ['integer', 'null'],
|
|
1669
|
+
'description': 'Number of reactions',
|
|
1670
|
+
},
|
|
1671
|
+
},
|
|
1672
|
+
},
|
|
1673
|
+
'description': 'Reactions to the message',
|
|
1674
|
+
},
|
|
1675
|
+
'attachments': {
|
|
1676
|
+
'type': ['array', 'null'],
|
|
1677
|
+
'items': {
|
|
1678
|
+
'type': 'object',
|
|
1679
|
+
'description': 'Message attachment',
|
|
1680
|
+
'properties': {
|
|
1681
|
+
'id': {
|
|
1682
|
+
'type': ['integer', 'null'],
|
|
1683
|
+
'description': 'Attachment ID',
|
|
1684
|
+
},
|
|
1685
|
+
'fallback': {
|
|
1686
|
+
'type': ['string', 'null'],
|
|
1687
|
+
'description': 'Fallback text',
|
|
1688
|
+
},
|
|
1689
|
+
'color': {
|
|
1690
|
+
'type': ['string', 'null'],
|
|
1691
|
+
'description': 'Attachment color',
|
|
1692
|
+
},
|
|
1693
|
+
'pretext': {
|
|
1694
|
+
'type': ['string', 'null'],
|
|
1695
|
+
'description': 'Pretext',
|
|
1696
|
+
},
|
|
1697
|
+
'author_name': {
|
|
1698
|
+
'type': ['string', 'null'],
|
|
1699
|
+
'description': 'Author name',
|
|
1700
|
+
},
|
|
1701
|
+
'author_link': {
|
|
1702
|
+
'type': ['string', 'null'],
|
|
1703
|
+
'description': 'Author link',
|
|
1704
|
+
},
|
|
1705
|
+
'author_icon': {
|
|
1706
|
+
'type': ['string', 'null'],
|
|
1707
|
+
'description': 'Author icon URL',
|
|
1708
|
+
},
|
|
1709
|
+
'title': {
|
|
1710
|
+
'type': ['string', 'null'],
|
|
1711
|
+
'description': 'Attachment title',
|
|
1712
|
+
},
|
|
1713
|
+
'title_link': {
|
|
1714
|
+
'type': ['string', 'null'],
|
|
1715
|
+
'description': 'Title link',
|
|
1716
|
+
},
|
|
1717
|
+
'text': {
|
|
1718
|
+
'type': ['string', 'null'],
|
|
1719
|
+
'description': 'Attachment text',
|
|
1720
|
+
},
|
|
1721
|
+
'fields': {
|
|
1722
|
+
'type': ['array', 'null'],
|
|
1723
|
+
'items': {'type': 'object'},
|
|
1724
|
+
'description': 'Attachment fields',
|
|
1725
|
+
},
|
|
1726
|
+
'image_url': {
|
|
1727
|
+
'type': ['string', 'null'],
|
|
1728
|
+
'description': 'Image URL',
|
|
1729
|
+
},
|
|
1730
|
+
'thumb_url': {
|
|
1731
|
+
'type': ['string', 'null'],
|
|
1732
|
+
'description': 'Thumbnail URL',
|
|
1733
|
+
},
|
|
1734
|
+
'footer': {
|
|
1735
|
+
'type': ['string', 'null'],
|
|
1736
|
+
'description': 'Footer text',
|
|
1737
|
+
},
|
|
1738
|
+
'footer_icon': {
|
|
1739
|
+
'type': ['string', 'null'],
|
|
1740
|
+
'description': 'Footer icon URL',
|
|
1741
|
+
},
|
|
1742
|
+
'ts': {
|
|
1743
|
+
'type': ['string', 'integer', 'null'],
|
|
1744
|
+
'description': 'Timestamp',
|
|
1745
|
+
},
|
|
1746
|
+
},
|
|
1747
|
+
},
|
|
1748
|
+
'description': 'Message attachments',
|
|
1749
|
+
},
|
|
1750
|
+
'blocks': {
|
|
1751
|
+
'type': ['array', 'null'],
|
|
1752
|
+
'items': {'type': 'object'},
|
|
1753
|
+
'description': 'Block kit blocks',
|
|
1754
|
+
},
|
|
1755
|
+
'files': {
|
|
1756
|
+
'type': ['array', 'null'],
|
|
1757
|
+
'items': {
|
|
1758
|
+
'type': 'object',
|
|
1759
|
+
'description': 'File object',
|
|
1760
|
+
'properties': {
|
|
1761
|
+
'id': {
|
|
1762
|
+
'type': ['string', 'null'],
|
|
1763
|
+
'description': 'File ID',
|
|
1764
|
+
},
|
|
1765
|
+
'name': {
|
|
1766
|
+
'type': ['string', 'null'],
|
|
1767
|
+
'description': 'File name',
|
|
1768
|
+
},
|
|
1769
|
+
'title': {
|
|
1770
|
+
'type': ['string', 'null'],
|
|
1771
|
+
'description': 'File title',
|
|
1772
|
+
},
|
|
1773
|
+
'mimetype': {
|
|
1774
|
+
'type': ['string', 'null'],
|
|
1775
|
+
'description': 'MIME type',
|
|
1776
|
+
},
|
|
1777
|
+
'filetype': {
|
|
1778
|
+
'type': ['string', 'null'],
|
|
1779
|
+
'description': 'File type',
|
|
1780
|
+
},
|
|
1781
|
+
'pretty_type': {
|
|
1782
|
+
'type': ['string', 'null'],
|
|
1783
|
+
'description': 'Human-readable file type',
|
|
1784
|
+
},
|
|
1785
|
+
'user': {
|
|
1786
|
+
'type': ['string', 'null'],
|
|
1787
|
+
'description': 'User ID who uploaded the file',
|
|
1788
|
+
},
|
|
1789
|
+
'size': {
|
|
1790
|
+
'type': ['integer', 'null'],
|
|
1791
|
+
'description': 'File size in bytes',
|
|
1792
|
+
},
|
|
1793
|
+
'mode': {
|
|
1794
|
+
'type': ['string', 'null'],
|
|
1795
|
+
'description': 'File mode',
|
|
1796
|
+
},
|
|
1797
|
+
'is_external': {
|
|
1798
|
+
'type': ['boolean', 'null'],
|
|
1799
|
+
'description': 'Whether the file is external',
|
|
1800
|
+
},
|
|
1801
|
+
'external_type': {
|
|
1802
|
+
'type': ['string', 'null'],
|
|
1803
|
+
'description': 'External file type',
|
|
1804
|
+
},
|
|
1805
|
+
'is_public': {
|
|
1806
|
+
'type': ['boolean', 'null'],
|
|
1807
|
+
'description': 'Whether the file is public',
|
|
1808
|
+
},
|
|
1809
|
+
'public_url_shared': {
|
|
1810
|
+
'type': ['boolean', 'null'],
|
|
1811
|
+
'description': 'Whether the public URL is shared',
|
|
1812
|
+
},
|
|
1813
|
+
'url_private': {
|
|
1814
|
+
'type': ['string', 'null'],
|
|
1815
|
+
'description': 'Private URL',
|
|
1816
|
+
},
|
|
1817
|
+
'url_private_download': {
|
|
1818
|
+
'type': ['string', 'null'],
|
|
1819
|
+
'description': 'Private download URL',
|
|
1820
|
+
},
|
|
1821
|
+
'permalink': {
|
|
1822
|
+
'type': ['string', 'null'],
|
|
1823
|
+
'description': 'Permalink',
|
|
1824
|
+
},
|
|
1825
|
+
'permalink_public': {
|
|
1826
|
+
'type': ['string', 'null'],
|
|
1827
|
+
'description': 'Public permalink',
|
|
1828
|
+
},
|
|
1829
|
+
'created': {
|
|
1830
|
+
'type': ['integer', 'null'],
|
|
1831
|
+
'description': 'Unix timestamp of creation',
|
|
1832
|
+
},
|
|
1833
|
+
'timestamp': {
|
|
1834
|
+
'type': ['integer', 'null'],
|
|
1835
|
+
'description': 'Unix timestamp',
|
|
1836
|
+
},
|
|
1837
|
+
},
|
|
1838
|
+
},
|
|
1839
|
+
'description': 'Files attached to the message',
|
|
1840
|
+
},
|
|
1841
|
+
'edited': {
|
|
1842
|
+
'oneOf': [
|
|
1843
|
+
{
|
|
1844
|
+
'type': 'object',
|
|
1845
|
+
'description': 'Message edit information',
|
|
1846
|
+
'properties': {
|
|
1847
|
+
'user': {
|
|
1848
|
+
'type': ['string', 'null'],
|
|
1849
|
+
'description': 'User ID who edited the message',
|
|
1850
|
+
},
|
|
1851
|
+
'ts': {
|
|
1852
|
+
'type': ['string', 'null'],
|
|
1853
|
+
'description': 'Edit timestamp',
|
|
1854
|
+
},
|
|
1855
|
+
},
|
|
1856
|
+
},
|
|
1857
|
+
{'type': 'null'},
|
|
1858
|
+
],
|
|
1859
|
+
'description': 'Edit information',
|
|
1860
|
+
},
|
|
1861
|
+
'bot_id': {
|
|
1862
|
+
'type': ['string', 'null'],
|
|
1863
|
+
'description': 'Bot ID if message was sent by a bot',
|
|
1864
|
+
},
|
|
1865
|
+
'bot_profile': {
|
|
1866
|
+
'oneOf': [
|
|
1867
|
+
{
|
|
1868
|
+
'type': 'object',
|
|
1869
|
+
'description': 'Bot profile information',
|
|
1870
|
+
'properties': {
|
|
1871
|
+
'id': {
|
|
1872
|
+
'type': ['string', 'null'],
|
|
1873
|
+
'description': 'Bot ID',
|
|
1874
|
+
},
|
|
1875
|
+
'deleted': {
|
|
1876
|
+
'type': ['boolean', 'null'],
|
|
1877
|
+
'description': 'Whether the bot is deleted',
|
|
1878
|
+
},
|
|
1879
|
+
'name': {
|
|
1880
|
+
'type': ['string', 'null'],
|
|
1881
|
+
'description': 'Bot name',
|
|
1882
|
+
},
|
|
1883
|
+
'updated': {
|
|
1884
|
+
'type': ['integer', 'null'],
|
|
1885
|
+
'description': 'Unix timestamp of last update',
|
|
1886
|
+
},
|
|
1887
|
+
'app_id': {
|
|
1888
|
+
'type': ['string', 'null'],
|
|
1889
|
+
'description': 'App ID',
|
|
1890
|
+
},
|
|
1891
|
+
'team_id': {
|
|
1892
|
+
'type': ['string', 'null'],
|
|
1893
|
+
'description': 'Team ID',
|
|
1894
|
+
},
|
|
1895
|
+
},
|
|
1896
|
+
},
|
|
1897
|
+
{'type': 'null'},
|
|
1898
|
+
],
|
|
1899
|
+
'description': 'Bot profile information',
|
|
1900
|
+
},
|
|
1901
|
+
'app_id': {
|
|
1902
|
+
'type': ['string', 'null'],
|
|
1903
|
+
'description': 'App ID if message was sent by an app',
|
|
1904
|
+
},
|
|
1905
|
+
'team': {
|
|
1906
|
+
'type': ['string', 'null'],
|
|
1907
|
+
'description': 'Team ID',
|
|
1908
|
+
},
|
|
1909
|
+
},
|
|
1910
|
+
'x-airbyte-entity-name': 'channel_messages',
|
|
1911
|
+
'x-airbyte-stream-name': 'channel_messages',
|
|
1912
|
+
},
|
|
1913
|
+
},
|
|
1914
|
+
'has_more': {
|
|
1915
|
+
'type': ['boolean', 'null'],
|
|
1916
|
+
'description': 'Whether there are more messages',
|
|
1917
|
+
},
|
|
1918
|
+
'pin_count': {
|
|
1919
|
+
'type': ['integer', 'null'],
|
|
1920
|
+
'description': 'Number of pinned messages',
|
|
1921
|
+
},
|
|
1922
|
+
'response_metadata': {
|
|
1923
|
+
'type': 'object',
|
|
1924
|
+
'description': 'Response metadata including pagination',
|
|
1925
|
+
'properties': {
|
|
1926
|
+
'next_cursor': {
|
|
1927
|
+
'type': ['string', 'null'],
|
|
1928
|
+
'description': 'Cursor for next page of results',
|
|
1929
|
+
},
|
|
1930
|
+
},
|
|
1931
|
+
},
|
|
1932
|
+
},
|
|
1933
|
+
},
|
|
1934
|
+
record_extractor='$.messages',
|
|
1935
|
+
meta_extractor={'next_cursor': '$.response_metadata.next_cursor', 'has_more': '$.has_more'},
|
|
1936
|
+
),
|
|
1937
|
+
},
|
|
1938
|
+
entity_schema={
|
|
1939
|
+
'type': 'object',
|
|
1940
|
+
'description': 'Slack message object',
|
|
1941
|
+
'properties': {
|
|
1942
|
+
'type': {
|
|
1943
|
+
'type': ['string', 'null'],
|
|
1944
|
+
'description': 'Message type',
|
|
1945
|
+
},
|
|
1946
|
+
'subtype': {
|
|
1947
|
+
'type': ['string', 'null'],
|
|
1948
|
+
'description': 'Message subtype',
|
|
1949
|
+
},
|
|
1950
|
+
'ts': {'type': 'string', 'description': 'Message timestamp (unique identifier)'},
|
|
1951
|
+
'user': {
|
|
1952
|
+
'type': ['string', 'null'],
|
|
1953
|
+
'description': 'User ID who sent the message',
|
|
1954
|
+
},
|
|
1955
|
+
'text': {
|
|
1956
|
+
'type': ['string', 'null'],
|
|
1957
|
+
'description': 'Message text content',
|
|
1958
|
+
},
|
|
1959
|
+
'thread_ts': {
|
|
1960
|
+
'type': ['string', 'null'],
|
|
1961
|
+
'description': 'Thread parent timestamp',
|
|
1962
|
+
},
|
|
1963
|
+
'reply_count': {
|
|
1964
|
+
'type': ['integer', 'null'],
|
|
1965
|
+
'description': 'Number of replies in thread',
|
|
1966
|
+
},
|
|
1967
|
+
'reply_users_count': {
|
|
1968
|
+
'type': ['integer', 'null'],
|
|
1969
|
+
'description': 'Number of unique users who replied',
|
|
1970
|
+
},
|
|
1971
|
+
'latest_reply': {
|
|
1972
|
+
'type': ['string', 'null'],
|
|
1973
|
+
'description': 'Timestamp of latest reply',
|
|
1974
|
+
},
|
|
1975
|
+
'reply_users': {
|
|
1976
|
+
'type': ['array', 'null'],
|
|
1977
|
+
'items': {'type': 'string'},
|
|
1978
|
+
'description': 'User IDs who replied to the thread',
|
|
1979
|
+
},
|
|
1980
|
+
'is_locked': {
|
|
1981
|
+
'type': ['boolean', 'null'],
|
|
1982
|
+
'description': 'Whether the thread is locked',
|
|
1983
|
+
},
|
|
1984
|
+
'subscribed': {
|
|
1985
|
+
'type': ['boolean', 'null'],
|
|
1986
|
+
'description': 'Whether the user is subscribed to the thread',
|
|
1987
|
+
},
|
|
1988
|
+
'reactions': {
|
|
1989
|
+
'type': ['array', 'null'],
|
|
1990
|
+
'items': {'$ref': '#/components/schemas/Reaction'},
|
|
1991
|
+
'description': 'Reactions to the message',
|
|
1992
|
+
},
|
|
1993
|
+
'attachments': {
|
|
1994
|
+
'type': ['array', 'null'],
|
|
1995
|
+
'items': {'$ref': '#/components/schemas/Attachment'},
|
|
1996
|
+
'description': 'Message attachments',
|
|
1997
|
+
},
|
|
1998
|
+
'blocks': {
|
|
1999
|
+
'type': ['array', 'null'],
|
|
2000
|
+
'items': {'type': 'object'},
|
|
2001
|
+
'description': 'Block kit blocks',
|
|
2002
|
+
},
|
|
2003
|
+
'files': {
|
|
2004
|
+
'type': ['array', 'null'],
|
|
2005
|
+
'items': {'$ref': '#/components/schemas/File'},
|
|
2006
|
+
'description': 'Files attached to the message',
|
|
2007
|
+
},
|
|
2008
|
+
'edited': {
|
|
2009
|
+
'oneOf': [
|
|
2010
|
+
{'$ref': '#/components/schemas/EditedInfo'},
|
|
2011
|
+
{'type': 'null'},
|
|
2012
|
+
],
|
|
2013
|
+
'description': 'Edit information',
|
|
2014
|
+
},
|
|
2015
|
+
'bot_id': {
|
|
2016
|
+
'type': ['string', 'null'],
|
|
2017
|
+
'description': 'Bot ID if message was sent by a bot',
|
|
2018
|
+
},
|
|
2019
|
+
'bot_profile': {
|
|
2020
|
+
'oneOf': [
|
|
2021
|
+
{'$ref': '#/components/schemas/BotProfile'},
|
|
2022
|
+
{'type': 'null'},
|
|
2023
|
+
],
|
|
2024
|
+
'description': 'Bot profile information',
|
|
2025
|
+
},
|
|
2026
|
+
'app_id': {
|
|
2027
|
+
'type': ['string', 'null'],
|
|
2028
|
+
'description': 'App ID if message was sent by an app',
|
|
2029
|
+
},
|
|
2030
|
+
'team': {
|
|
2031
|
+
'type': ['string', 'null'],
|
|
2032
|
+
'description': 'Team ID',
|
|
2033
|
+
},
|
|
2034
|
+
},
|
|
2035
|
+
'x-airbyte-entity-name': 'channel_messages',
|
|
2036
|
+
'x-airbyte-stream-name': 'channel_messages',
|
|
2037
|
+
},
|
|
2038
|
+
),
|
|
2039
|
+
EntityDefinition(
|
|
2040
|
+
name='threads',
|
|
2041
|
+
stream_name='threads',
|
|
2042
|
+
actions=[Action.LIST],
|
|
2043
|
+
endpoints={
|
|
2044
|
+
Action.LIST: EndpointDefinition(
|
|
2045
|
+
method='GET',
|
|
2046
|
+
path='/conversations.replies',
|
|
2047
|
+
action=Action.LIST,
|
|
2048
|
+
description='Returns messages in a thread (thread replies from conversations.replies endpoint)',
|
|
2049
|
+
query_params=[
|
|
2050
|
+
'channel',
|
|
2051
|
+
'ts',
|
|
2052
|
+
'cursor',
|
|
2053
|
+
'limit',
|
|
2054
|
+
'oldest',
|
|
2055
|
+
'latest',
|
|
2056
|
+
'inclusive',
|
|
2057
|
+
],
|
|
2058
|
+
query_params_schema={
|
|
2059
|
+
'channel': {'type': 'string', 'required': True},
|
|
2060
|
+
'ts': {'type': 'string', 'required': False},
|
|
2061
|
+
'cursor': {'type': 'string', 'required': False},
|
|
2062
|
+
'limit': {
|
|
2063
|
+
'type': 'integer',
|
|
2064
|
+
'required': False,
|
|
2065
|
+
'default': 100,
|
|
2066
|
+
},
|
|
2067
|
+
'oldest': {'type': 'string', 'required': False},
|
|
2068
|
+
'latest': {'type': 'string', 'required': False},
|
|
2069
|
+
'inclusive': {
|
|
2070
|
+
'type': 'boolean',
|
|
2071
|
+
'required': False,
|
|
2072
|
+
'default': False,
|
|
2073
|
+
},
|
|
2074
|
+
},
|
|
2075
|
+
response_schema={
|
|
2076
|
+
'type': 'object',
|
|
2077
|
+
'description': 'Response containing thread replies',
|
|
2078
|
+
'properties': {
|
|
2079
|
+
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
2080
|
+
'messages': {
|
|
2081
|
+
'type': 'array',
|
|
2082
|
+
'items': {
|
|
2083
|
+
'type': 'object',
|
|
2084
|
+
'description': 'Slack thread reply message object',
|
|
2085
|
+
'properties': {
|
|
2086
|
+
'type': {
|
|
2087
|
+
'type': ['string', 'null'],
|
|
2088
|
+
'description': 'Message type',
|
|
2089
|
+
},
|
|
2090
|
+
'subtype': {
|
|
2091
|
+
'type': ['string', 'null'],
|
|
2092
|
+
'description': 'Message subtype',
|
|
2093
|
+
},
|
|
2094
|
+
'ts': {'type': 'string', 'description': 'Message timestamp (unique identifier)'},
|
|
2095
|
+
'user': {
|
|
2096
|
+
'type': ['string', 'null'],
|
|
2097
|
+
'description': 'User ID who sent the message',
|
|
2098
|
+
},
|
|
2099
|
+
'text': {
|
|
2100
|
+
'type': ['string', 'null'],
|
|
2101
|
+
'description': 'Message text content',
|
|
2102
|
+
},
|
|
2103
|
+
'thread_ts': {
|
|
2104
|
+
'type': ['string', 'null'],
|
|
2105
|
+
'description': 'Thread parent timestamp',
|
|
2106
|
+
},
|
|
2107
|
+
'parent_user_id': {
|
|
2108
|
+
'type': ['string', 'null'],
|
|
2109
|
+
'description': 'User ID of the parent message author (present in thread replies)',
|
|
2110
|
+
},
|
|
2111
|
+
'reply_count': {
|
|
2112
|
+
'type': ['integer', 'null'],
|
|
2113
|
+
'description': 'Number of replies in thread',
|
|
2114
|
+
},
|
|
2115
|
+
'reply_users_count': {
|
|
2116
|
+
'type': ['integer', 'null'],
|
|
2117
|
+
'description': 'Number of unique users who replied',
|
|
2118
|
+
},
|
|
2119
|
+
'latest_reply': {
|
|
2120
|
+
'type': ['string', 'null'],
|
|
2121
|
+
'description': 'Timestamp of latest reply',
|
|
2122
|
+
},
|
|
2123
|
+
'reply_users': {
|
|
2124
|
+
'type': ['array', 'null'],
|
|
2125
|
+
'items': {'type': 'string'},
|
|
2126
|
+
'description': 'User IDs who replied to the thread',
|
|
2127
|
+
},
|
|
2128
|
+
'is_locked': {
|
|
2129
|
+
'type': ['boolean', 'null'],
|
|
2130
|
+
'description': 'Whether the thread is locked',
|
|
2131
|
+
},
|
|
2132
|
+
'subscribed': {
|
|
2133
|
+
'type': ['boolean', 'null'],
|
|
2134
|
+
'description': 'Whether the user is subscribed to the thread',
|
|
2135
|
+
},
|
|
2136
|
+
'reactions': {
|
|
2137
|
+
'type': ['array', 'null'],
|
|
2138
|
+
'items': {
|
|
2139
|
+
'type': 'object',
|
|
2140
|
+
'description': 'Message reaction',
|
|
2141
|
+
'properties': {
|
|
2142
|
+
'name': {
|
|
2143
|
+
'type': ['string', 'null'],
|
|
2144
|
+
'description': 'Reaction emoji name',
|
|
2145
|
+
},
|
|
2146
|
+
'users': {
|
|
2147
|
+
'type': ['array', 'null'],
|
|
2148
|
+
'items': {'type': 'string'},
|
|
2149
|
+
'description': 'User IDs who reacted',
|
|
2150
|
+
},
|
|
2151
|
+
'count': {
|
|
2152
|
+
'type': ['integer', 'null'],
|
|
2153
|
+
'description': 'Number of reactions',
|
|
2154
|
+
},
|
|
2155
|
+
},
|
|
2156
|
+
},
|
|
2157
|
+
'description': 'Reactions to the message',
|
|
2158
|
+
},
|
|
2159
|
+
'attachments': {
|
|
2160
|
+
'type': ['array', 'null'],
|
|
2161
|
+
'items': {
|
|
2162
|
+
'type': 'object',
|
|
1279
2163
|
'description': 'Message attachment',
|
|
1280
2164
|
'properties': {
|
|
1281
2165
|
'id': {
|
|
@@ -1507,17 +2391,13 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
1507
2391
|
'description': 'Team ID',
|
|
1508
2392
|
},
|
|
1509
2393
|
},
|
|
1510
|
-
'x-airbyte-entity-name': '
|
|
1511
|
-
'x-airbyte-stream-name': '
|
|
2394
|
+
'x-airbyte-entity-name': 'threads',
|
|
2395
|
+
'x-airbyte-stream-name': 'threads',
|
|
1512
2396
|
},
|
|
1513
2397
|
},
|
|
1514
2398
|
'has_more': {
|
|
1515
2399
|
'type': ['boolean', 'null'],
|
|
1516
|
-
'description': 'Whether there are more
|
|
1517
|
-
},
|
|
1518
|
-
'pin_count': {
|
|
1519
|
-
'type': ['integer', 'null'],
|
|
1520
|
-
'description': 'Number of pinned messages',
|
|
2400
|
+
'description': 'Whether there are more replies',
|
|
1521
2401
|
},
|
|
1522
2402
|
'response_metadata': {
|
|
1523
2403
|
'type': 'object',
|
|
@@ -1537,7 +2417,7 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
1537
2417
|
},
|
|
1538
2418
|
entity_schema={
|
|
1539
2419
|
'type': 'object',
|
|
1540
|
-
'description': 'Slack message object',
|
|
2420
|
+
'description': 'Slack thread reply message object',
|
|
1541
2421
|
'properties': {
|
|
1542
2422
|
'type': {
|
|
1543
2423
|
'type': ['string', 'null'],
|
|
@@ -1560,6 +2440,10 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
1560
2440
|
'type': ['string', 'null'],
|
|
1561
2441
|
'description': 'Thread parent timestamp',
|
|
1562
2442
|
},
|
|
2443
|
+
'parent_user_id': {
|
|
2444
|
+
'type': ['string', 'null'],
|
|
2445
|
+
'description': 'User ID of the parent message author (present in thread replies)',
|
|
2446
|
+
},
|
|
1563
2447
|
'reply_count': {
|
|
1564
2448
|
'type': ['integer', 'null'],
|
|
1565
2449
|
'description': 'Number of replies in thread',
|
|
@@ -1619,505 +2503,686 @@ SlackConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
1619
2503
|
'bot_profile': {
|
|
1620
2504
|
'oneOf': [
|
|
1621
2505
|
{'$ref': '#/components/schemas/BotProfile'},
|
|
1622
|
-
{'type': 'null'},
|
|
1623
|
-
],
|
|
1624
|
-
'description': 'Bot profile information',
|
|
1625
|
-
},
|
|
1626
|
-
'app_id': {
|
|
1627
|
-
'type': ['string', 'null'],
|
|
1628
|
-
'description': 'App ID if message was sent by an app',
|
|
1629
|
-
},
|
|
1630
|
-
'team': {
|
|
1631
|
-
'type': ['string', 'null'],
|
|
1632
|
-
'description': 'Team ID',
|
|
1633
|
-
},
|
|
1634
|
-
},
|
|
1635
|
-
'x-airbyte-entity-name': '
|
|
1636
|
-
'x-airbyte-stream-name': '
|
|
1637
|
-
},
|
|
1638
|
-
),
|
|
1639
|
-
EntityDefinition(
|
|
1640
|
-
name='
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
'
|
|
1651
|
-
'
|
|
1652
|
-
'
|
|
1653
|
-
'
|
|
1654
|
-
'
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
'
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
'type': '
|
|
1664
|
-
'
|
|
1665
|
-
'
|
|
1666
|
-
},
|
|
1667
|
-
'
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
'
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
},
|
|
1719
|
-
'latest_reply': {
|
|
1720
|
-
'type': ['string', 'null'],
|
|
1721
|
-
'description': 'Timestamp of latest reply',
|
|
1722
|
-
},
|
|
1723
|
-
'reply_users': {
|
|
1724
|
-
'type': ['array', 'null'],
|
|
1725
|
-
'items': {'type': 'string'},
|
|
1726
|
-
'description': 'User IDs who replied to the thread',
|
|
1727
|
-
},
|
|
1728
|
-
'is_locked': {
|
|
1729
|
-
'type': ['boolean', 'null'],
|
|
1730
|
-
'description': 'Whether the thread is locked',
|
|
1731
|
-
},
|
|
1732
|
-
'subscribed': {
|
|
1733
|
-
'type': ['boolean', 'null'],
|
|
1734
|
-
'description': 'Whether the user is subscribed to the thread',
|
|
1735
|
-
},
|
|
1736
|
-
'reactions': {
|
|
1737
|
-
'type': ['array', 'null'],
|
|
1738
|
-
'items': {
|
|
1739
|
-
'type': 'object',
|
|
1740
|
-
'description': 'Message reaction',
|
|
1741
|
-
'properties': {
|
|
1742
|
-
'name': {
|
|
1743
|
-
'type': ['string', 'null'],
|
|
1744
|
-
'description': 'Reaction emoji name',
|
|
1745
|
-
},
|
|
1746
|
-
'users': {
|
|
1747
|
-
'type': ['array', 'null'],
|
|
1748
|
-
'items': {'type': 'string'},
|
|
1749
|
-
'description': 'User IDs who reacted',
|
|
1750
|
-
},
|
|
1751
|
-
'count': {
|
|
1752
|
-
'type': ['integer', 'null'],
|
|
1753
|
-
'description': 'Number of reactions',
|
|
1754
|
-
},
|
|
1755
|
-
},
|
|
1756
|
-
},
|
|
1757
|
-
'description': 'Reactions to the message',
|
|
1758
|
-
},
|
|
1759
|
-
'attachments': {
|
|
1760
|
-
'type': ['array', 'null'],
|
|
1761
|
-
'items': {
|
|
2506
|
+
{'type': 'null'},
|
|
2507
|
+
],
|
|
2508
|
+
'description': 'Bot profile information',
|
|
2509
|
+
},
|
|
2510
|
+
'app_id': {
|
|
2511
|
+
'type': ['string', 'null'],
|
|
2512
|
+
'description': 'App ID if message was sent by an app',
|
|
2513
|
+
},
|
|
2514
|
+
'team': {
|
|
2515
|
+
'type': ['string', 'null'],
|
|
2516
|
+
'description': 'Team ID',
|
|
2517
|
+
},
|
|
2518
|
+
},
|
|
2519
|
+
'x-airbyte-entity-name': 'threads',
|
|
2520
|
+
'x-airbyte-stream-name': 'threads',
|
|
2521
|
+
},
|
|
2522
|
+
),
|
|
2523
|
+
EntityDefinition(
|
|
2524
|
+
name='messages',
|
|
2525
|
+
actions=[Action.CREATE, Action.UPDATE],
|
|
2526
|
+
endpoints={
|
|
2527
|
+
Action.CREATE: EndpointDefinition(
|
|
2528
|
+
method='POST',
|
|
2529
|
+
path='/chat.postMessage',
|
|
2530
|
+
action=Action.CREATE,
|
|
2531
|
+
description='Posts a message to a public channel, private channel, or direct message conversation',
|
|
2532
|
+
body_fields=[
|
|
2533
|
+
'channel',
|
|
2534
|
+
'text',
|
|
2535
|
+
'thread_ts',
|
|
2536
|
+
'reply_broadcast',
|
|
2537
|
+
'unfurl_links',
|
|
2538
|
+
'unfurl_media',
|
|
2539
|
+
],
|
|
2540
|
+
request_schema={
|
|
2541
|
+
'type': 'object',
|
|
2542
|
+
'description': 'Parameters for creating a message',
|
|
2543
|
+
'properties': {
|
|
2544
|
+
'channel': {'type': 'string', 'description': 'Channel ID, private group ID, or user ID to send message to'},
|
|
2545
|
+
'text': {'type': 'string', 'description': 'Message text content (supports mrkdwn formatting)'},
|
|
2546
|
+
'thread_ts': {'type': 'string', 'description': 'Thread timestamp to reply to (for threaded messages)'},
|
|
2547
|
+
'reply_broadcast': {'type': 'boolean', 'description': 'Also post reply to channel when replying to a thread'},
|
|
2548
|
+
'unfurl_links': {'type': 'boolean', 'description': 'Enable unfurling of primarily text-based content'},
|
|
2549
|
+
'unfurl_media': {'type': 'boolean', 'description': 'Enable unfurling of media content'},
|
|
2550
|
+
},
|
|
2551
|
+
'required': ['channel', 'text'],
|
|
2552
|
+
},
|
|
2553
|
+
response_schema={
|
|
2554
|
+
'type': 'object',
|
|
2555
|
+
'description': 'Response from creating a message',
|
|
2556
|
+
'properties': {
|
|
2557
|
+
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
2558
|
+
'channel': {
|
|
2559
|
+
'type': ['string', 'null'],
|
|
2560
|
+
'description': 'Channel ID where message was posted',
|
|
2561
|
+
},
|
|
2562
|
+
'ts': {
|
|
2563
|
+
'type': ['string', 'null'],
|
|
2564
|
+
'description': 'Message timestamp (unique identifier)',
|
|
2565
|
+
},
|
|
2566
|
+
'message': {
|
|
2567
|
+
'type': 'object',
|
|
2568
|
+
'description': 'A message object returned from create/update operations',
|
|
2569
|
+
'properties': {
|
|
2570
|
+
'type': {
|
|
2571
|
+
'type': ['string', 'null'],
|
|
2572
|
+
'description': 'Message type',
|
|
2573
|
+
},
|
|
2574
|
+
'subtype': {
|
|
2575
|
+
'type': ['string', 'null'],
|
|
2576
|
+
'description': 'Message subtype',
|
|
2577
|
+
},
|
|
2578
|
+
'text': {
|
|
2579
|
+
'type': ['string', 'null'],
|
|
2580
|
+
'description': 'Message text content',
|
|
2581
|
+
},
|
|
2582
|
+
'ts': {'type': 'string', 'description': 'Message timestamp (unique identifier)'},
|
|
2583
|
+
'user': {
|
|
2584
|
+
'type': ['string', 'null'],
|
|
2585
|
+
'description': 'User ID who sent the message',
|
|
2586
|
+
},
|
|
2587
|
+
'bot_id': {
|
|
2588
|
+
'type': ['string', 'null'],
|
|
2589
|
+
'description': 'Bot ID if message was sent by a bot',
|
|
2590
|
+
},
|
|
2591
|
+
'app_id': {
|
|
2592
|
+
'type': ['string', 'null'],
|
|
2593
|
+
'description': 'App ID if message was sent by an app',
|
|
2594
|
+
},
|
|
2595
|
+
'team': {
|
|
2596
|
+
'type': ['string', 'null'],
|
|
2597
|
+
'description': 'Team ID',
|
|
2598
|
+
},
|
|
2599
|
+
'bot_profile': {
|
|
2600
|
+
'oneOf': [
|
|
2601
|
+
{
|
|
1762
2602
|
'type': 'object',
|
|
1763
|
-
'description': '
|
|
2603
|
+
'description': 'Bot profile information',
|
|
1764
2604
|
'properties': {
|
|
1765
2605
|
'id': {
|
|
1766
|
-
'type': ['integer', 'null'],
|
|
1767
|
-
'description': 'Attachment ID',
|
|
1768
|
-
},
|
|
1769
|
-
'fallback': {
|
|
1770
2606
|
'type': ['string', 'null'],
|
|
1771
|
-
'description': '
|
|
2607
|
+
'description': 'Bot ID',
|
|
1772
2608
|
},
|
|
1773
|
-
'
|
|
1774
|
-
'type': ['
|
|
1775
|
-
'description': '
|
|
2609
|
+
'deleted': {
|
|
2610
|
+
'type': ['boolean', 'null'],
|
|
2611
|
+
'description': 'Whether the bot is deleted',
|
|
1776
2612
|
},
|
|
1777
|
-
'
|
|
2613
|
+
'name': {
|
|
1778
2614
|
'type': ['string', 'null'],
|
|
1779
|
-
'description': '
|
|
2615
|
+
'description': 'Bot name',
|
|
1780
2616
|
},
|
|
1781
|
-
'
|
|
1782
|
-
'type': ['
|
|
1783
|
-
'description': '
|
|
2617
|
+
'updated': {
|
|
2618
|
+
'type': ['integer', 'null'],
|
|
2619
|
+
'description': 'Unix timestamp of last update',
|
|
1784
2620
|
},
|
|
1785
|
-
'
|
|
2621
|
+
'app_id': {
|
|
1786
2622
|
'type': ['string', 'null'],
|
|
1787
|
-
'description': '
|
|
2623
|
+
'description': 'App ID',
|
|
1788
2624
|
},
|
|
1789
|
-
'
|
|
2625
|
+
'team_id': {
|
|
1790
2626
|
'type': ['string', 'null'],
|
|
1791
|
-
'description': '
|
|
2627
|
+
'description': 'Team ID',
|
|
1792
2628
|
},
|
|
1793
|
-
|
|
2629
|
+
},
|
|
2630
|
+
},
|
|
2631
|
+
{'type': 'null'},
|
|
2632
|
+
],
|
|
2633
|
+
'description': 'Bot profile information',
|
|
2634
|
+
},
|
|
2635
|
+
},
|
|
2636
|
+
},
|
|
2637
|
+
},
|
|
2638
|
+
},
|
|
2639
|
+
record_extractor='$.message',
|
|
2640
|
+
),
|
|
2641
|
+
Action.UPDATE: EndpointDefinition(
|
|
2642
|
+
method='POST',
|
|
2643
|
+
path='/chat.update',
|
|
2644
|
+
action=Action.UPDATE,
|
|
2645
|
+
description='Updates an existing message in a channel',
|
|
2646
|
+
body_fields=['channel', 'ts', 'text'],
|
|
2647
|
+
request_schema={
|
|
2648
|
+
'type': 'object',
|
|
2649
|
+
'description': 'Parameters for updating a message',
|
|
2650
|
+
'properties': {
|
|
2651
|
+
'channel': {'type': 'string', 'description': 'Channel ID containing the message'},
|
|
2652
|
+
'ts': {'type': 'string', 'description': 'Timestamp of the message to update'},
|
|
2653
|
+
'text': {'type': 'string', 'description': 'New message text content'},
|
|
2654
|
+
},
|
|
2655
|
+
'required': ['channel', 'ts', 'text'],
|
|
2656
|
+
},
|
|
2657
|
+
response_schema={
|
|
2658
|
+
'type': 'object',
|
|
2659
|
+
'description': 'Response from updating a message',
|
|
2660
|
+
'properties': {
|
|
2661
|
+
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
2662
|
+
'channel': {
|
|
2663
|
+
'type': ['string', 'null'],
|
|
2664
|
+
'description': 'Channel ID where message was updated',
|
|
2665
|
+
},
|
|
2666
|
+
'ts': {
|
|
2667
|
+
'type': ['string', 'null'],
|
|
2668
|
+
'description': 'Message timestamp',
|
|
2669
|
+
},
|
|
2670
|
+
'text': {
|
|
2671
|
+
'type': ['string', 'null'],
|
|
2672
|
+
'description': 'Updated message text',
|
|
2673
|
+
},
|
|
2674
|
+
'message': {
|
|
2675
|
+
'type': 'object',
|
|
2676
|
+
'description': 'A message object returned from create/update operations',
|
|
2677
|
+
'properties': {
|
|
2678
|
+
'type': {
|
|
2679
|
+
'type': ['string', 'null'],
|
|
2680
|
+
'description': 'Message type',
|
|
2681
|
+
},
|
|
2682
|
+
'subtype': {
|
|
2683
|
+
'type': ['string', 'null'],
|
|
2684
|
+
'description': 'Message subtype',
|
|
2685
|
+
},
|
|
2686
|
+
'text': {
|
|
2687
|
+
'type': ['string', 'null'],
|
|
2688
|
+
'description': 'Message text content',
|
|
2689
|
+
},
|
|
2690
|
+
'ts': {'type': 'string', 'description': 'Message timestamp (unique identifier)'},
|
|
2691
|
+
'user': {
|
|
2692
|
+
'type': ['string', 'null'],
|
|
2693
|
+
'description': 'User ID who sent the message',
|
|
2694
|
+
},
|
|
2695
|
+
'bot_id': {
|
|
2696
|
+
'type': ['string', 'null'],
|
|
2697
|
+
'description': 'Bot ID if message was sent by a bot',
|
|
2698
|
+
},
|
|
2699
|
+
'app_id': {
|
|
2700
|
+
'type': ['string', 'null'],
|
|
2701
|
+
'description': 'App ID if message was sent by an app',
|
|
2702
|
+
},
|
|
2703
|
+
'team': {
|
|
2704
|
+
'type': ['string', 'null'],
|
|
2705
|
+
'description': 'Team ID',
|
|
2706
|
+
},
|
|
2707
|
+
'bot_profile': {
|
|
2708
|
+
'oneOf': [
|
|
2709
|
+
{
|
|
2710
|
+
'type': 'object',
|
|
2711
|
+
'description': 'Bot profile information',
|
|
2712
|
+
'properties': {
|
|
2713
|
+
'id': {
|
|
1794
2714
|
'type': ['string', 'null'],
|
|
1795
|
-
'description': '
|
|
2715
|
+
'description': 'Bot ID',
|
|
1796
2716
|
},
|
|
1797
|
-
'
|
|
1798
|
-
'type': ['
|
|
1799
|
-
'description': '
|
|
2717
|
+
'deleted': {
|
|
2718
|
+
'type': ['boolean', 'null'],
|
|
2719
|
+
'description': 'Whether the bot is deleted',
|
|
1800
2720
|
},
|
|
1801
|
-
'
|
|
2721
|
+
'name': {
|
|
1802
2722
|
'type': ['string', 'null'],
|
|
1803
|
-
'description': '
|
|
2723
|
+
'description': 'Bot name',
|
|
1804
2724
|
},
|
|
1805
|
-
'
|
|
1806
|
-
'type': ['
|
|
1807
|
-
'
|
|
1808
|
-
'description': 'Attachment fields',
|
|
2725
|
+
'updated': {
|
|
2726
|
+
'type': ['integer', 'null'],
|
|
2727
|
+
'description': 'Unix timestamp of last update',
|
|
1809
2728
|
},
|
|
1810
|
-
'
|
|
2729
|
+
'app_id': {
|
|
1811
2730
|
'type': ['string', 'null'],
|
|
1812
|
-
'description': '
|
|
2731
|
+
'description': 'App ID',
|
|
1813
2732
|
},
|
|
1814
|
-
'
|
|
2733
|
+
'team_id': {
|
|
1815
2734
|
'type': ['string', 'null'],
|
|
1816
|
-
'description': '
|
|
2735
|
+
'description': 'Team ID',
|
|
1817
2736
|
},
|
|
1818
|
-
|
|
2737
|
+
},
|
|
2738
|
+
},
|
|
2739
|
+
{'type': 'null'},
|
|
2740
|
+
],
|
|
2741
|
+
'description': 'Bot profile information',
|
|
2742
|
+
},
|
|
2743
|
+
},
|
|
2744
|
+
},
|
|
2745
|
+
},
|
|
2746
|
+
},
|
|
2747
|
+
record_extractor='$.message',
|
|
2748
|
+
),
|
|
2749
|
+
},
|
|
2750
|
+
),
|
|
2751
|
+
EntityDefinition(
|
|
2752
|
+
name='channel_topics',
|
|
2753
|
+
actions=[Action.CREATE],
|
|
2754
|
+
endpoints={
|
|
2755
|
+
Action.CREATE: EndpointDefinition(
|
|
2756
|
+
method='POST',
|
|
2757
|
+
path='/conversations.setTopic',
|
|
2758
|
+
action=Action.CREATE,
|
|
2759
|
+
description='Sets the topic for a channel',
|
|
2760
|
+
body_fields=['channel', 'topic'],
|
|
2761
|
+
request_schema={
|
|
2762
|
+
'type': 'object',
|
|
2763
|
+
'description': 'Parameters for setting channel topic',
|
|
2764
|
+
'properties': {
|
|
2765
|
+
'channel': {'type': 'string', 'description': 'Channel ID to set topic for'},
|
|
2766
|
+
'topic': {'type': 'string', 'description': 'New topic text (max 250 characters)'},
|
|
2767
|
+
},
|
|
2768
|
+
'required': ['channel', 'topic'],
|
|
2769
|
+
},
|
|
2770
|
+
response_schema={
|
|
2771
|
+
'type': 'object',
|
|
2772
|
+
'description': 'Response from setting channel topic',
|
|
2773
|
+
'properties': {
|
|
2774
|
+
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
2775
|
+
'channel': {
|
|
2776
|
+
'type': 'object',
|
|
2777
|
+
'description': 'Slack channel object',
|
|
2778
|
+
'properties': {
|
|
2779
|
+
'id': {'type': 'string', 'description': 'Unique channel identifier'},
|
|
2780
|
+
'name': {
|
|
2781
|
+
'type': ['string', 'null'],
|
|
2782
|
+
'description': 'Channel name',
|
|
2783
|
+
},
|
|
2784
|
+
'is_channel': {
|
|
2785
|
+
'type': ['boolean', 'null'],
|
|
2786
|
+
'description': 'Whether this is a channel',
|
|
2787
|
+
},
|
|
2788
|
+
'is_group': {
|
|
2789
|
+
'type': ['boolean', 'null'],
|
|
2790
|
+
'description': 'Whether this is a group',
|
|
2791
|
+
},
|
|
2792
|
+
'is_im': {
|
|
2793
|
+
'type': ['boolean', 'null'],
|
|
2794
|
+
'description': 'Whether this is a direct message',
|
|
2795
|
+
},
|
|
2796
|
+
'is_mpim': {
|
|
2797
|
+
'type': ['boolean', 'null'],
|
|
2798
|
+
'description': 'Whether this is a multi-party direct message',
|
|
2799
|
+
},
|
|
2800
|
+
'is_private': {
|
|
2801
|
+
'type': ['boolean', 'null'],
|
|
2802
|
+
'description': 'Whether the channel is private',
|
|
2803
|
+
},
|
|
2804
|
+
'created': {
|
|
2805
|
+
'type': ['integer', 'null'],
|
|
2806
|
+
'description': 'Unix timestamp of channel creation',
|
|
2807
|
+
},
|
|
2808
|
+
'is_archived': {
|
|
2809
|
+
'type': ['boolean', 'null'],
|
|
2810
|
+
'description': 'Whether the channel is archived',
|
|
2811
|
+
},
|
|
2812
|
+
'is_general': {
|
|
2813
|
+
'type': ['boolean', 'null'],
|
|
2814
|
+
'description': 'Whether this is the general channel',
|
|
2815
|
+
},
|
|
2816
|
+
'unlinked': {
|
|
2817
|
+
'type': ['integer', 'null'],
|
|
2818
|
+
'description': 'Unlinked timestamp',
|
|
2819
|
+
},
|
|
2820
|
+
'name_normalized': {
|
|
2821
|
+
'type': ['string', 'null'],
|
|
2822
|
+
'description': 'Normalized channel name',
|
|
2823
|
+
},
|
|
2824
|
+
'is_shared': {
|
|
2825
|
+
'type': ['boolean', 'null'],
|
|
2826
|
+
'description': 'Whether the channel is shared',
|
|
2827
|
+
},
|
|
2828
|
+
'is_org_shared': {
|
|
2829
|
+
'type': ['boolean', 'null'],
|
|
2830
|
+
'description': 'Whether the channel is shared across the organization',
|
|
2831
|
+
},
|
|
2832
|
+
'is_pending_ext_shared': {
|
|
2833
|
+
'type': ['boolean', 'null'],
|
|
2834
|
+
'description': 'Whether external sharing is pending',
|
|
2835
|
+
},
|
|
2836
|
+
'pending_shared': {
|
|
2837
|
+
'type': ['array', 'null'],
|
|
2838
|
+
'items': {'type': 'string'},
|
|
2839
|
+
'description': 'Pending shared teams',
|
|
2840
|
+
},
|
|
2841
|
+
'context_team_id': {
|
|
2842
|
+
'type': ['string', 'null'],
|
|
2843
|
+
'description': 'Context team ID',
|
|
2844
|
+
},
|
|
2845
|
+
'updated': {
|
|
2846
|
+
'type': ['integer', 'null'],
|
|
2847
|
+
'description': 'Unix timestamp of last update',
|
|
2848
|
+
},
|
|
2849
|
+
'creator': {
|
|
2850
|
+
'type': ['string', 'null'],
|
|
2851
|
+
'description': 'User ID of the channel creator',
|
|
2852
|
+
},
|
|
2853
|
+
'is_ext_shared': {
|
|
2854
|
+
'type': ['boolean', 'null'],
|
|
2855
|
+
'description': 'Whether the channel is externally shared',
|
|
2856
|
+
},
|
|
2857
|
+
'shared_team_ids': {
|
|
2858
|
+
'type': ['array', 'null'],
|
|
2859
|
+
'items': {'type': 'string'},
|
|
2860
|
+
'description': 'IDs of teams the channel is shared with',
|
|
2861
|
+
},
|
|
2862
|
+
'pending_connected_team_ids': {
|
|
2863
|
+
'type': ['array', 'null'],
|
|
2864
|
+
'items': {'type': 'string'},
|
|
2865
|
+
'description': 'IDs of teams with pending connection',
|
|
2866
|
+
},
|
|
2867
|
+
'is_member': {
|
|
2868
|
+
'type': ['boolean', 'null'],
|
|
2869
|
+
'description': 'Whether the authenticated user is a member',
|
|
2870
|
+
},
|
|
2871
|
+
'topic': {
|
|
2872
|
+
'oneOf': [
|
|
2873
|
+
{
|
|
2874
|
+
'type': 'object',
|
|
2875
|
+
'description': 'Channel topic information',
|
|
2876
|
+
'properties': {
|
|
2877
|
+
'value': {
|
|
1819
2878
|
'type': ['string', 'null'],
|
|
1820
|
-
'description': '
|
|
2879
|
+
'description': 'Topic text',
|
|
1821
2880
|
},
|
|
1822
|
-
'
|
|
2881
|
+
'creator': {
|
|
1823
2882
|
'type': ['string', 'null'],
|
|
1824
|
-
'description': '
|
|
2883
|
+
'description': 'User ID who set the topic',
|
|
1825
2884
|
},
|
|
1826
|
-
'
|
|
1827
|
-
'type': ['
|
|
1828
|
-
'description': '
|
|
2885
|
+
'last_set': {
|
|
2886
|
+
'type': ['integer', 'null'],
|
|
2887
|
+
'description': 'Unix timestamp when topic was last set',
|
|
1829
2888
|
},
|
|
1830
2889
|
},
|
|
1831
2890
|
},
|
|
1832
|
-
'
|
|
1833
|
-
|
|
1834
|
-
'
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
'files': {
|
|
1840
|
-
'type': ['array', 'null'],
|
|
1841
|
-
'items': {
|
|
2891
|
+
{'type': 'null'},
|
|
2892
|
+
],
|
|
2893
|
+
'description': 'Channel topic',
|
|
2894
|
+
},
|
|
2895
|
+
'purpose': {
|
|
2896
|
+
'oneOf': [
|
|
2897
|
+
{
|
|
1842
2898
|
'type': 'object',
|
|
1843
|
-
'description': '
|
|
2899
|
+
'description': 'Channel purpose information',
|
|
1844
2900
|
'properties': {
|
|
1845
|
-
'
|
|
1846
|
-
'type': ['string', 'null'],
|
|
1847
|
-
'description': 'File ID',
|
|
1848
|
-
},
|
|
1849
|
-
'name': {
|
|
1850
|
-
'type': ['string', 'null'],
|
|
1851
|
-
'description': 'File name',
|
|
1852
|
-
},
|
|
1853
|
-
'title': {
|
|
1854
|
-
'type': ['string', 'null'],
|
|
1855
|
-
'description': 'File title',
|
|
1856
|
-
},
|
|
1857
|
-
'mimetype': {
|
|
1858
|
-
'type': ['string', 'null'],
|
|
1859
|
-
'description': 'MIME type',
|
|
1860
|
-
},
|
|
1861
|
-
'filetype': {
|
|
1862
|
-
'type': ['string', 'null'],
|
|
1863
|
-
'description': 'File type',
|
|
1864
|
-
},
|
|
1865
|
-
'pretty_type': {
|
|
2901
|
+
'value': {
|
|
1866
2902
|
'type': ['string', 'null'],
|
|
1867
|
-
'description': '
|
|
2903
|
+
'description': 'Purpose text',
|
|
1868
2904
|
},
|
|
1869
|
-
'
|
|
2905
|
+
'creator': {
|
|
1870
2906
|
'type': ['string', 'null'],
|
|
1871
|
-
'description': 'User ID who
|
|
2907
|
+
'description': 'User ID who set the purpose',
|
|
1872
2908
|
},
|
|
1873
|
-
'
|
|
2909
|
+
'last_set': {
|
|
1874
2910
|
'type': ['integer', 'null'],
|
|
1875
|
-
'description': '
|
|
1876
|
-
},
|
|
1877
|
-
'mode': {
|
|
1878
|
-
'type': ['string', 'null'],
|
|
1879
|
-
'description': 'File mode',
|
|
1880
|
-
},
|
|
1881
|
-
'is_external': {
|
|
1882
|
-
'type': ['boolean', 'null'],
|
|
1883
|
-
'description': 'Whether the file is external',
|
|
1884
|
-
},
|
|
1885
|
-
'external_type': {
|
|
1886
|
-
'type': ['string', 'null'],
|
|
1887
|
-
'description': 'External file type',
|
|
1888
|
-
},
|
|
1889
|
-
'is_public': {
|
|
1890
|
-
'type': ['boolean', 'null'],
|
|
1891
|
-
'description': 'Whether the file is public',
|
|
1892
|
-
},
|
|
1893
|
-
'public_url_shared': {
|
|
1894
|
-
'type': ['boolean', 'null'],
|
|
1895
|
-
'description': 'Whether the public URL is shared',
|
|
1896
|
-
},
|
|
1897
|
-
'url_private': {
|
|
1898
|
-
'type': ['string', 'null'],
|
|
1899
|
-
'description': 'Private URL',
|
|
1900
|
-
},
|
|
1901
|
-
'url_private_download': {
|
|
1902
|
-
'type': ['string', 'null'],
|
|
1903
|
-
'description': 'Private download URL',
|
|
1904
|
-
},
|
|
1905
|
-
'permalink': {
|
|
1906
|
-
'type': ['string', 'null'],
|
|
1907
|
-
'description': 'Permalink',
|
|
2911
|
+
'description': 'Unix timestamp when purpose was last set',
|
|
1908
2912
|
},
|
|
1909
|
-
|
|
2913
|
+
},
|
|
2914
|
+
},
|
|
2915
|
+
{'type': 'null'},
|
|
2916
|
+
],
|
|
2917
|
+
'description': 'Channel purpose',
|
|
2918
|
+
},
|
|
2919
|
+
'previous_names': {
|
|
2920
|
+
'type': ['array', 'null'],
|
|
2921
|
+
'items': {'type': 'string'},
|
|
2922
|
+
'description': 'Previous channel names',
|
|
2923
|
+
},
|
|
2924
|
+
'num_members': {
|
|
2925
|
+
'type': ['integer', 'null'],
|
|
2926
|
+
'description': 'Number of members in the channel',
|
|
2927
|
+
},
|
|
2928
|
+
'parent_conversation': {
|
|
2929
|
+
'type': ['string', 'null'],
|
|
2930
|
+
'description': 'Parent conversation ID if this is a thread',
|
|
2931
|
+
},
|
|
2932
|
+
'properties': {
|
|
2933
|
+
'type': ['object', 'null'],
|
|
2934
|
+
'description': 'Additional channel properties',
|
|
2935
|
+
},
|
|
2936
|
+
'is_thread_only': {
|
|
2937
|
+
'type': ['boolean', 'null'],
|
|
2938
|
+
'description': 'Whether the channel is thread-only',
|
|
2939
|
+
},
|
|
2940
|
+
'is_read_only': {
|
|
2941
|
+
'type': ['boolean', 'null'],
|
|
2942
|
+
'description': 'Whether the channel is read-only',
|
|
2943
|
+
},
|
|
2944
|
+
},
|
|
2945
|
+
'x-airbyte-entity-name': 'channels',
|
|
2946
|
+
'x-airbyte-stream-name': 'channels',
|
|
2947
|
+
},
|
|
2948
|
+
},
|
|
2949
|
+
},
|
|
2950
|
+
record_extractor='$.channel',
|
|
2951
|
+
),
|
|
2952
|
+
},
|
|
2953
|
+
),
|
|
2954
|
+
EntityDefinition(
|
|
2955
|
+
name='channel_purposes',
|
|
2956
|
+
actions=[Action.CREATE],
|
|
2957
|
+
endpoints={
|
|
2958
|
+
Action.CREATE: EndpointDefinition(
|
|
2959
|
+
method='POST',
|
|
2960
|
+
path='/conversations.setPurpose',
|
|
2961
|
+
action=Action.CREATE,
|
|
2962
|
+
description='Sets the purpose for a channel',
|
|
2963
|
+
body_fields=['channel', 'purpose'],
|
|
2964
|
+
request_schema={
|
|
2965
|
+
'type': 'object',
|
|
2966
|
+
'description': 'Parameters for setting channel purpose',
|
|
2967
|
+
'properties': {
|
|
2968
|
+
'channel': {'type': 'string', 'description': 'Channel ID to set purpose for'},
|
|
2969
|
+
'purpose': {'type': 'string', 'description': 'New purpose text (max 250 characters)'},
|
|
2970
|
+
},
|
|
2971
|
+
'required': ['channel', 'purpose'],
|
|
2972
|
+
},
|
|
2973
|
+
response_schema={
|
|
2974
|
+
'type': 'object',
|
|
2975
|
+
'description': 'Response from setting channel purpose',
|
|
2976
|
+
'properties': {
|
|
2977
|
+
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
2978
|
+
'channel': {
|
|
2979
|
+
'type': 'object',
|
|
2980
|
+
'description': 'Slack channel object',
|
|
2981
|
+
'properties': {
|
|
2982
|
+
'id': {'type': 'string', 'description': 'Unique channel identifier'},
|
|
2983
|
+
'name': {
|
|
2984
|
+
'type': ['string', 'null'],
|
|
2985
|
+
'description': 'Channel name',
|
|
2986
|
+
},
|
|
2987
|
+
'is_channel': {
|
|
2988
|
+
'type': ['boolean', 'null'],
|
|
2989
|
+
'description': 'Whether this is a channel',
|
|
2990
|
+
},
|
|
2991
|
+
'is_group': {
|
|
2992
|
+
'type': ['boolean', 'null'],
|
|
2993
|
+
'description': 'Whether this is a group',
|
|
2994
|
+
},
|
|
2995
|
+
'is_im': {
|
|
2996
|
+
'type': ['boolean', 'null'],
|
|
2997
|
+
'description': 'Whether this is a direct message',
|
|
2998
|
+
},
|
|
2999
|
+
'is_mpim': {
|
|
3000
|
+
'type': ['boolean', 'null'],
|
|
3001
|
+
'description': 'Whether this is a multi-party direct message',
|
|
3002
|
+
},
|
|
3003
|
+
'is_private': {
|
|
3004
|
+
'type': ['boolean', 'null'],
|
|
3005
|
+
'description': 'Whether the channel is private',
|
|
3006
|
+
},
|
|
3007
|
+
'created': {
|
|
3008
|
+
'type': ['integer', 'null'],
|
|
3009
|
+
'description': 'Unix timestamp of channel creation',
|
|
3010
|
+
},
|
|
3011
|
+
'is_archived': {
|
|
3012
|
+
'type': ['boolean', 'null'],
|
|
3013
|
+
'description': 'Whether the channel is archived',
|
|
3014
|
+
},
|
|
3015
|
+
'is_general': {
|
|
3016
|
+
'type': ['boolean', 'null'],
|
|
3017
|
+
'description': 'Whether this is the general channel',
|
|
3018
|
+
},
|
|
3019
|
+
'unlinked': {
|
|
3020
|
+
'type': ['integer', 'null'],
|
|
3021
|
+
'description': 'Unlinked timestamp',
|
|
3022
|
+
},
|
|
3023
|
+
'name_normalized': {
|
|
3024
|
+
'type': ['string', 'null'],
|
|
3025
|
+
'description': 'Normalized channel name',
|
|
3026
|
+
},
|
|
3027
|
+
'is_shared': {
|
|
3028
|
+
'type': ['boolean', 'null'],
|
|
3029
|
+
'description': 'Whether the channel is shared',
|
|
3030
|
+
},
|
|
3031
|
+
'is_org_shared': {
|
|
3032
|
+
'type': ['boolean', 'null'],
|
|
3033
|
+
'description': 'Whether the channel is shared across the organization',
|
|
3034
|
+
},
|
|
3035
|
+
'is_pending_ext_shared': {
|
|
3036
|
+
'type': ['boolean', 'null'],
|
|
3037
|
+
'description': 'Whether external sharing is pending',
|
|
3038
|
+
},
|
|
3039
|
+
'pending_shared': {
|
|
3040
|
+
'type': ['array', 'null'],
|
|
3041
|
+
'items': {'type': 'string'},
|
|
3042
|
+
'description': 'Pending shared teams',
|
|
3043
|
+
},
|
|
3044
|
+
'context_team_id': {
|
|
3045
|
+
'type': ['string', 'null'],
|
|
3046
|
+
'description': 'Context team ID',
|
|
3047
|
+
},
|
|
3048
|
+
'updated': {
|
|
3049
|
+
'type': ['integer', 'null'],
|
|
3050
|
+
'description': 'Unix timestamp of last update',
|
|
3051
|
+
},
|
|
3052
|
+
'creator': {
|
|
3053
|
+
'type': ['string', 'null'],
|
|
3054
|
+
'description': 'User ID of the channel creator',
|
|
3055
|
+
},
|
|
3056
|
+
'is_ext_shared': {
|
|
3057
|
+
'type': ['boolean', 'null'],
|
|
3058
|
+
'description': 'Whether the channel is externally shared',
|
|
3059
|
+
},
|
|
3060
|
+
'shared_team_ids': {
|
|
3061
|
+
'type': ['array', 'null'],
|
|
3062
|
+
'items': {'type': 'string'},
|
|
3063
|
+
'description': 'IDs of teams the channel is shared with',
|
|
3064
|
+
},
|
|
3065
|
+
'pending_connected_team_ids': {
|
|
3066
|
+
'type': ['array', 'null'],
|
|
3067
|
+
'items': {'type': 'string'},
|
|
3068
|
+
'description': 'IDs of teams with pending connection',
|
|
3069
|
+
},
|
|
3070
|
+
'is_member': {
|
|
3071
|
+
'type': ['boolean', 'null'],
|
|
3072
|
+
'description': 'Whether the authenticated user is a member',
|
|
3073
|
+
},
|
|
3074
|
+
'topic': {
|
|
3075
|
+
'oneOf': [
|
|
3076
|
+
{
|
|
3077
|
+
'type': 'object',
|
|
3078
|
+
'description': 'Channel topic information',
|
|
3079
|
+
'properties': {
|
|
3080
|
+
'value': {
|
|
1910
3081
|
'type': ['string', 'null'],
|
|
1911
|
-
'description': '
|
|
3082
|
+
'description': 'Topic text',
|
|
1912
3083
|
},
|
|
1913
|
-
'
|
|
1914
|
-
'type': ['
|
|
1915
|
-
'description': '
|
|
3084
|
+
'creator': {
|
|
3085
|
+
'type': ['string', 'null'],
|
|
3086
|
+
'description': 'User ID who set the topic',
|
|
1916
3087
|
},
|
|
1917
|
-
'
|
|
3088
|
+
'last_set': {
|
|
1918
3089
|
'type': ['integer', 'null'],
|
|
1919
|
-
'description': 'Unix timestamp',
|
|
3090
|
+
'description': 'Unix timestamp when topic was last set',
|
|
1920
3091
|
},
|
|
1921
3092
|
},
|
|
1922
3093
|
},
|
|
1923
|
-
'
|
|
1924
|
-
|
|
1925
|
-
'
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
'
|
|
1936
|
-
'type': ['string', 'null'],
|
|
1937
|
-
'description': 'Edit timestamp',
|
|
1938
|
-
},
|
|
3094
|
+
{'type': 'null'},
|
|
3095
|
+
],
|
|
3096
|
+
'description': 'Channel topic',
|
|
3097
|
+
},
|
|
3098
|
+
'purpose': {
|
|
3099
|
+
'oneOf': [
|
|
3100
|
+
{
|
|
3101
|
+
'type': 'object',
|
|
3102
|
+
'description': 'Channel purpose information',
|
|
3103
|
+
'properties': {
|
|
3104
|
+
'value': {
|
|
3105
|
+
'type': ['string', 'null'],
|
|
3106
|
+
'description': 'Purpose text',
|
|
1939
3107
|
},
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
'description': 'Bot ID if message was sent by a bot',
|
|
1948
|
-
},
|
|
1949
|
-
'bot_profile': {
|
|
1950
|
-
'oneOf': [
|
|
1951
|
-
{
|
|
1952
|
-
'type': 'object',
|
|
1953
|
-
'description': 'Bot profile information',
|
|
1954
|
-
'properties': {
|
|
1955
|
-
'id': {
|
|
1956
|
-
'type': ['string', 'null'],
|
|
1957
|
-
'description': 'Bot ID',
|
|
1958
|
-
},
|
|
1959
|
-
'deleted': {
|
|
1960
|
-
'type': ['boolean', 'null'],
|
|
1961
|
-
'description': 'Whether the bot is deleted',
|
|
1962
|
-
},
|
|
1963
|
-
'name': {
|
|
1964
|
-
'type': ['string', 'null'],
|
|
1965
|
-
'description': 'Bot name',
|
|
1966
|
-
},
|
|
1967
|
-
'updated': {
|
|
1968
|
-
'type': ['integer', 'null'],
|
|
1969
|
-
'description': 'Unix timestamp of last update',
|
|
1970
|
-
},
|
|
1971
|
-
'app_id': {
|
|
1972
|
-
'type': ['string', 'null'],
|
|
1973
|
-
'description': 'App ID',
|
|
1974
|
-
},
|
|
1975
|
-
'team_id': {
|
|
1976
|
-
'type': ['string', 'null'],
|
|
1977
|
-
'description': 'Team ID',
|
|
1978
|
-
},
|
|
3108
|
+
'creator': {
|
|
3109
|
+
'type': ['string', 'null'],
|
|
3110
|
+
'description': 'User ID who set the purpose',
|
|
3111
|
+
},
|
|
3112
|
+
'last_set': {
|
|
3113
|
+
'type': ['integer', 'null'],
|
|
3114
|
+
'description': 'Unix timestamp when purpose was last set',
|
|
1979
3115
|
},
|
|
1980
3116
|
},
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
'app_id': {
|
|
1986
|
-
'type': ['string', 'null'],
|
|
1987
|
-
'description': 'App ID if message was sent by an app',
|
|
1988
|
-
},
|
|
1989
|
-
'team': {
|
|
1990
|
-
'type': ['string', 'null'],
|
|
1991
|
-
'description': 'Team ID',
|
|
1992
|
-
},
|
|
3117
|
+
},
|
|
3118
|
+
{'type': 'null'},
|
|
3119
|
+
],
|
|
3120
|
+
'description': 'Channel purpose',
|
|
1993
3121
|
},
|
|
1994
|
-
'
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
'description': 'Response metadata including pagination',
|
|
2005
|
-
'properties': {
|
|
2006
|
-
'next_cursor': {
|
|
3122
|
+
'previous_names': {
|
|
3123
|
+
'type': ['array', 'null'],
|
|
3124
|
+
'items': {'type': 'string'},
|
|
3125
|
+
'description': 'Previous channel names',
|
|
3126
|
+
},
|
|
3127
|
+
'num_members': {
|
|
3128
|
+
'type': ['integer', 'null'],
|
|
3129
|
+
'description': 'Number of members in the channel',
|
|
3130
|
+
},
|
|
3131
|
+
'parent_conversation': {
|
|
2007
3132
|
'type': ['string', 'null'],
|
|
2008
|
-
'description': '
|
|
3133
|
+
'description': 'Parent conversation ID if this is a thread',
|
|
3134
|
+
},
|
|
3135
|
+
'properties': {
|
|
3136
|
+
'type': ['object', 'null'],
|
|
3137
|
+
'description': 'Additional channel properties',
|
|
3138
|
+
},
|
|
3139
|
+
'is_thread_only': {
|
|
3140
|
+
'type': ['boolean', 'null'],
|
|
3141
|
+
'description': 'Whether the channel is thread-only',
|
|
3142
|
+
},
|
|
3143
|
+
'is_read_only': {
|
|
3144
|
+
'type': ['boolean', 'null'],
|
|
3145
|
+
'description': 'Whether the channel is read-only',
|
|
2009
3146
|
},
|
|
2010
3147
|
},
|
|
3148
|
+
'x-airbyte-entity-name': 'channels',
|
|
3149
|
+
'x-airbyte-stream-name': 'channels',
|
|
2011
3150
|
},
|
|
2012
3151
|
},
|
|
2013
3152
|
},
|
|
2014
|
-
record_extractor='$.
|
|
2015
|
-
meta_extractor={'next_cursor': '$.response_metadata.next_cursor', 'has_more': '$.has_more'},
|
|
3153
|
+
record_extractor='$.channel',
|
|
2016
3154
|
),
|
|
2017
3155
|
},
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
'
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
'
|
|
2038
|
-
},
|
|
2039
|
-
'thread_ts': {
|
|
2040
|
-
'type': ['string', 'null'],
|
|
2041
|
-
'description': 'Thread parent timestamp',
|
|
2042
|
-
},
|
|
2043
|
-
'parent_user_id': {
|
|
2044
|
-
'type': ['string', 'null'],
|
|
2045
|
-
'description': 'User ID of the parent message author (present in thread replies)',
|
|
2046
|
-
},
|
|
2047
|
-
'reply_count': {
|
|
2048
|
-
'type': ['integer', 'null'],
|
|
2049
|
-
'description': 'Number of replies in thread',
|
|
2050
|
-
},
|
|
2051
|
-
'reply_users_count': {
|
|
2052
|
-
'type': ['integer', 'null'],
|
|
2053
|
-
'description': 'Number of unique users who replied',
|
|
2054
|
-
},
|
|
2055
|
-
'latest_reply': {
|
|
2056
|
-
'type': ['string', 'null'],
|
|
2057
|
-
'description': 'Timestamp of latest reply',
|
|
2058
|
-
},
|
|
2059
|
-
'reply_users': {
|
|
2060
|
-
'type': ['array', 'null'],
|
|
2061
|
-
'items': {'type': 'string'},
|
|
2062
|
-
'description': 'User IDs who replied to the thread',
|
|
2063
|
-
},
|
|
2064
|
-
'is_locked': {
|
|
2065
|
-
'type': ['boolean', 'null'],
|
|
2066
|
-
'description': 'Whether the thread is locked',
|
|
2067
|
-
},
|
|
2068
|
-
'subscribed': {
|
|
2069
|
-
'type': ['boolean', 'null'],
|
|
2070
|
-
'description': 'Whether the user is subscribed to the thread',
|
|
2071
|
-
},
|
|
2072
|
-
'reactions': {
|
|
2073
|
-
'type': ['array', 'null'],
|
|
2074
|
-
'items': {'$ref': '#/components/schemas/Reaction'},
|
|
2075
|
-
'description': 'Reactions to the message',
|
|
2076
|
-
},
|
|
2077
|
-
'attachments': {
|
|
2078
|
-
'type': ['array', 'null'],
|
|
2079
|
-
'items': {'$ref': '#/components/schemas/Attachment'},
|
|
2080
|
-
'description': 'Message attachments',
|
|
2081
|
-
},
|
|
2082
|
-
'blocks': {
|
|
2083
|
-
'type': ['array', 'null'],
|
|
2084
|
-
'items': {'type': 'object'},
|
|
2085
|
-
'description': 'Block kit blocks',
|
|
2086
|
-
},
|
|
2087
|
-
'files': {
|
|
2088
|
-
'type': ['array', 'null'],
|
|
2089
|
-
'items': {'$ref': '#/components/schemas/File'},
|
|
2090
|
-
'description': 'Files attached to the message',
|
|
2091
|
-
},
|
|
2092
|
-
'edited': {
|
|
2093
|
-
'oneOf': [
|
|
2094
|
-
{'$ref': '#/components/schemas/EditedInfo'},
|
|
2095
|
-
{'type': 'null'},
|
|
2096
|
-
],
|
|
2097
|
-
'description': 'Edit information',
|
|
2098
|
-
},
|
|
2099
|
-
'bot_id': {
|
|
2100
|
-
'type': ['string', 'null'],
|
|
2101
|
-
'description': 'Bot ID if message was sent by a bot',
|
|
2102
|
-
},
|
|
2103
|
-
'bot_profile': {
|
|
2104
|
-
'oneOf': [
|
|
2105
|
-
{'$ref': '#/components/schemas/BotProfile'},
|
|
2106
|
-
{'type': 'null'},
|
|
2107
|
-
],
|
|
2108
|
-
'description': 'Bot profile information',
|
|
2109
|
-
},
|
|
2110
|
-
'app_id': {
|
|
2111
|
-
'type': ['string', 'null'],
|
|
2112
|
-
'description': 'App ID if message was sent by an app',
|
|
3156
|
+
),
|
|
3157
|
+
EntityDefinition(
|
|
3158
|
+
name='reactions',
|
|
3159
|
+
actions=[Action.CREATE],
|
|
3160
|
+
endpoints={
|
|
3161
|
+
Action.CREATE: EndpointDefinition(
|
|
3162
|
+
method='POST',
|
|
3163
|
+
path='/reactions.add',
|
|
3164
|
+
action=Action.CREATE,
|
|
3165
|
+
description='Adds a reaction (emoji) to a message',
|
|
3166
|
+
body_fields=['channel', 'timestamp', 'name'],
|
|
3167
|
+
request_schema={
|
|
3168
|
+
'type': 'object',
|
|
3169
|
+
'description': 'Parameters for adding a reaction',
|
|
3170
|
+
'properties': {
|
|
3171
|
+
'channel': {'type': 'string', 'description': 'Channel ID containing the message'},
|
|
3172
|
+
'timestamp': {'type': 'string', 'description': 'Timestamp of the message to react to'},
|
|
3173
|
+
'name': {'type': 'string', 'description': 'Reaction emoji name (without colons, e.g., "thumbsup")'},
|
|
3174
|
+
},
|
|
3175
|
+
'required': ['channel', 'timestamp', 'name'],
|
|
2113
3176
|
},
|
|
2114
|
-
|
|
2115
|
-
'type':
|
|
2116
|
-
'description': '
|
|
3177
|
+
response_schema={
|
|
3178
|
+
'type': 'object',
|
|
3179
|
+
'description': 'Response from adding a reaction',
|
|
3180
|
+
'properties': {
|
|
3181
|
+
'ok': {'type': 'boolean', 'description': 'Whether the request was successful'},
|
|
3182
|
+
},
|
|
2117
3183
|
},
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
'x-airbyte-stream-name': 'threads',
|
|
3184
|
+
record_extractor='$',
|
|
3185
|
+
),
|
|
2121
3186
|
},
|
|
2122
3187
|
),
|
|
2123
3188
|
],
|