Delta Chat Core C Interface
Loading...
Searching...
No Matches
deltachat.h
1#ifndef __DELTACHAT_H__
2#define __DELTACHAT_H__
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7
8#ifndef PY_CFFI
9#include <stdint.h>
10#include <time.h>
11#endif
12
13
14typedef struct _dc_context dc_context_t;
15typedef struct _dc_accounts dc_accounts_t;
16typedef struct _dc_array dc_array_t;
17typedef struct _dc_chatlist dc_chatlist_t;
18typedef struct _dc_chat dc_chat_t;
19typedef struct _dc_msg dc_msg_t;
20typedef struct _dc_reactions dc_reactions_t;
21typedef struct _dc_contact dc_contact_t;
22typedef struct _dc_lot dc_lot_t;
23typedef struct _dc_provider dc_provider_t;
24typedef struct _dc_event dc_event_t;
25typedef struct _dc_event_emitter dc_event_emitter_t;
26typedef struct _dc_jsonrpc_instance dc_jsonrpc_instance_t;
27
28// Alias for backwards compatibility, use dc_event_emitter_t instead.
29typedef struct _dc_event_emitter dc_accounts_event_emitter_t;
30
182// create/open/config/information
183
199dc_context_t* dc_context_new (const char* os_name, const char* dbfile, const char* blobdir);
200
201
218
219
234int dc_context_open (dc_context_t *context, const char* passphrase);
235
236
245
246
259
260
272uint32_t dc_get_id (dc_context_t* context);
273
274
291
292
301char* dc_get_blobdir (const dc_context_t* context);
302
303
424int dc_set_config (dc_context_t* context, const char* key, const char* value);
425
426
452char* dc_get_config (dc_context_t* context, const char* key);
453
454
466int dc_set_stock_translation(dc_context_t* context, uint32_t stock_id, const char* stock_msg);
467
468
483int dc_set_config_from_qr (dc_context_t* context, const char* qr);
484
485
500char* dc_get_info (const dc_context_t* context);
501
502
532char* dc_get_oauth2_url (dc_context_t* context, const char* addr, const char* redirect_uri);
533
534
535#define DC_CONNECTIVITY_NOT_CONNECTED 1000
536#define DC_CONNECTIVITY_CONNECTING 2000
537#define DC_CONNECTIVITY_WORKING 3000
538#define DC_CONNECTIVITY_CONNECTED 4000
539
540
562
563
580
581
586int dc_all_work_done (dc_context_t* context);
587
588
589// connect
590
642
643
663int dc_is_configured (const dc_context_t* context);
664
665
676void dc_start_io (dc_context_t* context);
677
693
717
718
719
738int dc_preconfigure_keypair (dc_context_t* context, const char *addr, const char *public_data, const char *secret_data);
739
740
741// handle chatlists
742
743#define DC_GCL_ARCHIVED_ONLY 0x01
744#define DC_GCL_NO_SPECIALS 0x02
745#define DC_GCL_ADD_ALLDONE_HINT 0x04
746#define DC_GCL_FOR_FORWARDING 0x08
747
748
797dc_chatlist_t* dc_get_chatlist (dc_context_t* context, int flags, const char* query_str, uint32_t query_id);
798
799
800// handle chats
801
815uint32_t dc_create_chat_by_contact_id (dc_context_t* context, uint32_t contact_id);
816
817
829uint32_t dc_get_chat_id_by_contact_id (dc_context_t* context, uint32_t contact_id);
830
831
877uint32_t dc_prepare_msg (dc_context_t* context, uint32_t chat_id, dc_msg_t* msg);
878
879
917uint32_t dc_send_msg (dc_context_t* context, uint32_t chat_id, dc_msg_t* msg);
918
934uint32_t dc_send_msg_sync (dc_context_t* context, uint32_t chat_id, dc_msg_t* msg);
935
936
956uint32_t dc_send_text_msg (dc_context_t* context, uint32_t chat_id, const char* text_to_send);
957
958
992uint32_t dc_send_videochat_invitation (dc_context_t* context, uint32_t chat_id);
993
994
1009uint32_t dc_send_reaction (dc_context_t* context, uint32_t msg_id, char *reaction);
1010
1011
1021
1022
1050int dc_send_webxdc_status_update (dc_context_t* context, uint32_t msg_id, const char* json, const char* descr);
1051
1052
1083char* dc_get_webxdc_status_updates (dc_context_t* context, uint32_t msg_id, uint32_t serial);
1084
1108void dc_set_draft (dc_context_t* context, uint32_t chat_id, dc_msg_t* msg);
1109
1110
1158uint32_t dc_add_device_msg (dc_context_t* context, const char* label, dc_msg_t* msg);
1159
1170int dc_was_device_msg_ever_added (dc_context_t* context, const char* label);
1171
1172
1185dc_msg_t* dc_get_draft (dc_context_t* context, uint32_t chat_id);
1186
1187
1188#define DC_GCM_ADDDAYMARKER 0x01
1189#define DC_GCM_INFO_ONLY 0x02
1190
1191
1212dc_array_t* dc_get_chat_msgs (dc_context_t* context, uint32_t chat_id, uint32_t flags, uint32_t marker1before);
1213
1214
1223int dc_get_msg_cnt (dc_context_t* context, uint32_t chat_id);
1224
1225
1243int dc_get_fresh_msg_cnt (dc_context_t* context, uint32_t chat_id);
1244
1245
1246
1261int dc_estimate_deletion_cnt (dc_context_t* context, int from_server, int64_t seconds);
1262
1263
1283
1284
1298void dc_marknoticed_chat (dc_context_t* context, uint32_t chat_id);
1299
1300
1319dc_array_t* dc_get_chat_media (dc_context_t* context, uint32_t chat_id, int msg_type, int msg_type2, int msg_type3);
1320
1321
1342uint32_t dc_get_next_media (dc_context_t* context, uint32_t msg_id, int dir, int msg_type, int msg_type2, int msg_type3);
1343
1344
1360int dc_set_chat_protection (dc_context_t* context, uint32_t chat_id, int protect);
1361
1362
1374void dc_set_chat_visibility (dc_context_t* context, uint32_t chat_id, int visibility);
1375
1376
1402void dc_delete_chat (dc_context_t* context, uint32_t chat_id);
1403
1417void dc_block_chat (dc_context_t* context, uint32_t chat_id);
1418
1431void dc_accept_chat (dc_context_t* context, uint32_t chat_id);
1432
1455dc_array_t* dc_get_chat_contacts (dc_context_t* context, uint32_t chat_id);
1456
1467char* dc_get_chat_encrinfo (dc_context_t* context, uint32_t chat_id);
1468
1480uint32_t dc_get_chat_ephemeral_timer (dc_context_t* context, uint32_t chat_id);
1481
1504dc_array_t* dc_search_msgs (dc_context_t* context, uint32_t chat_id, const char* query);
1505
1506
1517dc_chat_t* dc_get_chat (dc_context_t* context, uint32_t chat_id);
1518
1519
1520// handle group chats
1521
1549uint32_t dc_create_group_chat (dc_context_t* context, int protect, const char* name);
1550
1551
1580
1581
1592int dc_is_contact_in_chat (dc_context_t* context, uint32_t chat_id, uint32_t contact_id);
1593
1594
1611int dc_add_contact_to_chat (dc_context_t* context, uint32_t chat_id, uint32_t contact_id);
1612
1613
1628int dc_remove_contact_from_chat (dc_context_t* context, uint32_t chat_id, uint32_t contact_id);
1629
1630
1645int dc_set_chat_name (dc_context_t* context, uint32_t chat_id, const char* name);
1646
1664int dc_set_chat_ephemeral_timer (dc_context_t* context, uint32_t chat_id, uint32_t timer);
1665
1685int dc_set_chat_profile_image (dc_context_t* context, uint32_t chat_id, const char* image);
1686
1687
1688
1710int dc_set_chat_mute_duration (dc_context_t* context, uint32_t chat_id, int64_t duration);
1711
1712// handle messages
1713
1726char* dc_get_msg_info (dc_context_t* context, uint32_t msg_id);
1727
1728
1776char* dc_get_msg_html (dc_context_t* context, uint32_t msg_id);
1777
1778
1798void dc_download_full_msg (dc_context_t* context, int msg_id);
1799
1800
1815char* dc_get_mime_headers (dc_context_t* context, uint32_t msg_id);
1816
1817
1827void dc_delete_msgs (dc_context_t* context, const uint32_t* msg_ids, int msg_cnt);
1828
1829
1844void dc_forward_msgs (dc_context_t* context, const uint32_t* msg_ids, int msg_cnt, uint32_t chat_id);
1845
1846
1863int dc_resend_msgs (dc_context_t* context, const uint32_t* msg_ids, int msg_cnt);
1864
1865
1891void dc_markseen_msgs (dc_context_t* context, const uint32_t* msg_ids, int msg_cnt);
1892
1893
1906dc_msg_t* dc_get_msg (dc_context_t* context, uint32_t msg_id);
1907
1908
1909// handle contacts
1910
1924int dc_may_be_valid_addr (const char* addr);
1925
1926
1940uint32_t dc_lookup_contact_id_by_addr (dc_context_t* context, const char* addr);
1941
1942
1963uint32_t dc_create_contact (dc_context_t* context, const char* name, const char* addr);
1964
1965
1966#define DC_GCL_VERIFIED_ONLY 0x01
1967#define DC_GCL_ADD_SELF 0x02
1968
1969
1993int dc_add_address_book (dc_context_t* context, const char* addr_book);
1994
1995
2012dc_array_t* dc_get_contacts (dc_context_t* context, uint32_t flags, const char* query);
2013
2014
2024
2025
2035
2036
2046void dc_block_contact (dc_context_t* context, uint32_t contact_id, int block);
2047
2048
2059char* dc_get_contact_encrinfo (dc_context_t* context, uint32_t contact_id);
2060
2061
2074int dc_delete_contact (dc_context_t* context, uint32_t contact_id);
2075
2076
2090dc_contact_t* dc_get_contact (dc_context_t* context, uint32_t contact_id);
2091
2092
2093// import/export and tools
2094
2095#define DC_IMEX_EXPORT_SELF_KEYS 1 // param1 is a directory where the keys are written to
2096#define DC_IMEX_IMPORT_SELF_KEYS 2 // param1 is a directory where the keys are searched in and read from
2097#define DC_IMEX_EXPORT_BACKUP 11 // param1 is a directory where the backup is written to, param2 is a passphrase to encrypt the backup
2098#define DC_IMEX_IMPORT_BACKUP 12 // param1 is the file with the backup to import, param2 is the backup's passphrase
2099
2100
2146void dc_imex (dc_context_t* context, int what, const char* param1, const char* param2);
2147
2148
2198char* dc_imex_has_backup (dc_context_t* context, const char* dir);
2199
2200
2246
2247
2268int dc_continue_key_transfer (dc_context_t* context, uint32_t msg_id, const char* setup_code);
2269
2270
2288
2289
2290// out-of-band verification
2291
2292#define DC_QR_ASK_VERIFYCONTACT 200 // id=contact
2293#define DC_QR_ASK_VERIFYGROUP 202 // text1=groupname
2294#define DC_QR_FPR_OK 210 // id=contact
2295#define DC_QR_FPR_MISMATCH 220 // id=contact
2296#define DC_QR_FPR_WITHOUT_ADDR 230 // test1=formatted fingerprint
2297#define DC_QR_ACCOUNT 250 // text1=domain
2298#define DC_QR_WEBRTC_INSTANCE 260 // text1=domain, text2=instance pattern
2299#define DC_QR_ADDR 320 // id=contact
2300#define DC_QR_TEXT 330 // text1=text
2301#define DC_QR_URL 332 // text1=URL
2302#define DC_QR_ERROR 400 // text1=error string
2303#define DC_QR_WITHDRAW_VERIFYCONTACT 500
2304#define DC_QR_WITHDRAW_VERIFYGROUP 502 // text1=groupname
2305#define DC_QR_REVIVE_VERIFYCONTACT 510
2306#define DC_QR_REVIVE_VERIFYGROUP 512 // text1=groupname
2307#define DC_QR_LOGIN 520 // text1=email_address
2308
2390dc_lot_t* dc_check_qr (dc_context_t* context, const char* qr);
2391
2392
2414char* dc_get_securejoin_qr (dc_context_t* context, uint32_t chat_id);
2415
2416
2429char* dc_get_securejoin_qr_svg (dc_context_t* context, uint32_t chat_id);
2430
2455uint32_t dc_join_securejoin (dc_context_t* context, const char* qr);
2456
2457
2458// location streaming
2459
2460
2477void dc_send_locations_to_chat (dc_context_t* context, uint32_t chat_id, int seconds);
2478
2479
2493int dc_is_sending_locations_to_chat (dc_context_t* context, uint32_t chat_id);
2494
2495
2523int dc_set_location (dc_context_t* context, double latitude, double longitude, double accuracy);
2524
2525
2586dc_array_t* dc_get_locations (dc_context_t* context, uint32_t chat_id, uint32_t contact_id, int64_t timestamp_begin, int64_t timestamp_end);
2587
2588
2600
2601
2616
2617
2630void dc_str_unref (char* str);
2631
2632
2680dc_accounts_t* dc_accounts_new (const char* os_name, const char* dir);
2681
2682
2690
2691
2708
2725
2740uint32_t dc_accounts_migrate_account (dc_accounts_t* accounts, const char* dbfile);
2741
2742
2754int dc_accounts_remove_account (dc_accounts_t* accounts, uint32_t account_id);
2755
2756
2766
2767
2779dc_context_t* dc_accounts_get_account (dc_accounts_t* accounts, uint32_t account_id);
2780
2781
2798
2799
2808int dc_accounts_select_account (dc_accounts_t* accounts, uint32_t account_id);
2809
2810
2826
2827
2838
2839
2849
2850
2861
2862
2876
2877
2898
2899
2919
2920
2928size_t dc_array_get_cnt (const dc_array_t* array);
2929
2930
2939uint32_t dc_array_get_id (const dc_array_t* array, size_t index);
2940
2941
2951double dc_array_get_latitude (const dc_array_t* array, size_t index);
2952
2953
2963double dc_array_get_longitude (const dc_array_t* array, size_t index);
2964
2965
2976double dc_array_get_accuracy (const dc_array_t* array, size_t index);
2977
2978
2988int64_t dc_array_get_timestamp (const dc_array_t* array, size_t index);
2989
2990
3000uint32_t dc_array_get_chat_id (const dc_array_t* array, size_t index);
3001
3002
3012uint32_t dc_array_get_contact_id (const dc_array_t* array, size_t index);
3013
3014
3024uint32_t dc_array_get_msg_id (const dc_array_t* array, size_t index);
3025
3026
3041char* dc_array_get_marker (const dc_array_t* array, size_t index);
3042
3043
3054int dc_array_is_independent (const dc_array_t* array, size_t index);
3055
3056
3066int dc_array_search_id (const dc_array_t* array, uint32_t needle, size_t* ret_index);
3067
3068
3111
3112
3120size_t dc_chatlist_get_cnt (const dc_chatlist_t* chatlist);
3121
3122
3134uint32_t dc_chatlist_get_chat_id (const dc_chatlist_t* chatlist, size_t index);
3135
3136
3148uint32_t dc_chatlist_get_msg_id (const dc_chatlist_t* chatlist, size_t index);
3149
3150
3177dc_lot_t* dc_chatlist_get_summary (const dc_chatlist_t* chatlist, size_t index, dc_chat_t* chat);
3178
3179
3199dc_lot_t* dc_chatlist_get_summary2 (dc_context_t* context, uint32_t chat_id, uint32_t msg_id);
3200
3201
3210
3211
3228char* dc_chat_get_info_json (dc_context_t* context, size_t chat_id);
3229
3240#define DC_CHAT_ID_TRASH 3 // messages that should be deleted get this chat ID; the messages are deleted from the working thread later then. This is also needed as rfc724_mid should be preset as long as the message is not deleted on the server (otherwise it is downloaded again)
3241#define DC_CHAT_ID_ARCHIVED_LINK 6 // only an indicator in a chatlist
3242#define DC_CHAT_ID_ALLDONE_HINT 7 // only an indicator in a chatlist
3243#define DC_CHAT_ID_LAST_SPECIAL 9 // larger chat IDs are "real" chats, their messages are "real" messages
3244
3245
3254
3255
3268uint32_t dc_chat_get_id (const dc_chat_t* chat);
3269
3270
3301int dc_chat_get_type (const dc_chat_t* chat);
3302
3303
3315
3316
3328char* dc_chat_get_name (const dc_chat_t* chat);
3329
3330
3345
3346
3359uint32_t dc_chat_get_color (const dc_chat_t* chat);
3360
3361
3371
3372
3390
3391
3413
3414
3424
3425
3441
3442
3454int dc_chat_can_send (const dc_chat_t* chat);
3455
3456
3468
3469
3481
3482
3490int dc_chat_is_muted (const dc_chat_t* chat);
3491
3492
3501
3502
3512#define DC_MSG_ID_MARKER1 1 // this is used by iOS to mark things in the message list
3513#define DC_MSG_ID_DAYMARKER 9
3514#define DC_MSG_ID_LAST_SPECIAL 9
3515
3516
3529dc_msg_t* dc_msg_new (dc_context_t* context, int viewtype);
3530
3531
3540
3541
3550uint32_t dc_msg_get_id (const dc_msg_t* msg);
3551
3552
3567uint32_t dc_msg_get_from_id (const dc_msg_t* msg);
3568
3569
3578uint32_t dc_msg_get_chat_id (const dc_msg_t* msg);
3579
3580
3590
3591
3635
3636
3653int64_t dc_msg_get_timestamp (const dc_msg_t* msg);
3654
3655
3668
3669
3684
3685
3705char* dc_msg_get_text (const dc_msg_t* msg);
3706
3707
3725char* dc_msg_get_subject (const dc_msg_t* msg);
3726
3740char* dc_msg_get_file (const dc_msg_t* msg);
3741
3742
3754
3755
3767
3768
3781char* dc_msg_get_webxdc_blob (const dc_msg_t* msg, const char* filename, size_t* ret_bytes);
3782
3783
3817
3818
3829uint64_t dc_msg_get_filebytes (const dc_msg_t* msg);
3830
3831
3847
3848
3864
3865
3878
3879
3888
3898int dc_msg_is_bot (const dc_msg_t* msg);
3899
3912
3926
3927
3951
3952
3964char* dc_msg_get_summarytext (const dc_msg_t* msg, int approx_characters);
3965
3966
3996
3997
3998
4014
4015
4026
4027
4038int dc_msg_is_sent (const dc_msg_t* msg);
4039
4040
4058
4059
4080int dc_msg_is_info (const dc_msg_t* msg);
4081
4082
4102
4103
4104// DC_INFO* uses the same values as SystemMessage in rust-land
4105#define DC_INFO_UNKNOWN 0
4106#define DC_INFO_GROUP_NAME_CHANGED 2
4107#define DC_INFO_GROUP_IMAGE_CHANGED 3
4108#define DC_INFO_MEMBER_ADDED_TO_GROUP 4
4109#define DC_INFO_MEMBER_REMOVED_FROM_GROUP 5
4110#define DC_INFO_AUTOCRYPT_SETUP_MESSAGE 6
4111#define DC_INFO_SECURE_JOIN_MESSAGE 7
4112#define DC_INFO_LOCATIONSTREAMING_ENABLED 8
4113#define DC_INFO_LOCATION_ONLY 9
4114#define DC_INFO_EPHEMERAL_TIMER_CHANGED 10
4115#define DC_INFO_PROTECTION_ENABLED 11
4116#define DC_INFO_PROTECTION_DISABLED 12
4117#define DC_INFO_WEBXDC_INFO_MESSAGE 32
4118
4132
4133
4149
4150
4166
4167
4182
4183
4203char* dc_msg_get_error (const dc_msg_t* msg);
4204
4205
4235
4236#define DC_VIDEOCHATTYPE_UNKNOWN 0
4237#define DC_VIDEOCHATTYPE_BASICWEBRTC 1
4238#define DC_VIDEOCHATTYPE_JITSI 2
4239
4240
4265
4266
4290
4291
4300void dc_msg_set_text (dc_msg_t* msg, const char* text);
4301
4302
4327void dc_msg_set_html (dc_msg_t* msg, const char* html);
4328
4329
4342void dc_msg_set_override_sender_name(dc_msg_t* msg, const char* name);
4343
4344
4357void dc_msg_set_file (dc_msg_t* msg, const char* file, const char* filemime);
4358
4359
4370void dc_msg_set_dimension (dc_msg_t* msg, int width, int height);
4371
4372
4382void dc_msg_set_duration (dc_msg_t* msg, int duration);
4383
4384
4401void dc_msg_set_location (dc_msg_t* msg, double latitude, double longitude);
4402
4403
4425void dc_msg_latefiling_mediasize (dc_msg_t* msg, int width, int height, int duration);
4426
4427
4442void dc_msg_set_quote (dc_msg_t* msg, const dc_msg_t* quote);
4443
4444
4460
4461
4484
4500
4501
4511
4533#define DC_CONTACT_ID_SELF 1
4534#define DC_CONTACT_ID_INFO 2 // centered messages as "member added", used in all chats
4535#define DC_CONTACT_ID_DEVICE 5 // messages "update info" in the device-chat
4536#define DC_CONTACT_ID_LAST_SPECIAL 9
4537
4538
4547
4548
4556uint32_t dc_contact_get_id (const dc_contact_t* contact);
4557
4558
4567char* dc_contact_get_addr (const dc_contact_t* contact);
4568
4569
4584char* dc_contact_get_name (const dc_contact_t* contact);
4585
4586
4607
4608
4625
4626
4627// dc_contact_get_first_name is removed,
4628// the following define is to make upgrading more smoothly.
4629#define dc_contact_get_first_name dc_contact_get_display_name
4630
4631
4647
4648
4661
4662
4674uint32_t dc_contact_get_color (const dc_contact_t* contact);
4675
4676
4689
4699
4700
4714
4715
4726
4727
4740
4741
4742
4756
4757
4771
4772
4793dc_provider_t* dc_provider_new_from_email (const dc_context_t* context, const char* email);
4794
4795
4811
4812
4825
4826
4842
4843
4855
4856
4864
4865
4878#define DC_TEXT1_DRAFT 1
4879#define DC_TEXT1_USERNAME 2
4880#define DC_TEXT1_SELF 3
4881
4882
4893
4894
4904char* dc_lot_get_text1 (const dc_lot_t* lot);
4905
4906
4916char* dc_lot_get_text2 (const dc_lot_t* lot);
4917
4918
4929
4930
4939
4940
4948uint32_t dc_lot_get_id (const dc_lot_t* lot);
4949
4950
4960int64_t dc_lot_get_timestamp (const dc_lot_t* lot);
4961
4962
4978
4979
4990char* dc_reactions_get_by_contact_id(dc_reactions_t* reactions, uint32_t contact_id);
4991
4992
5003
5004
5034#define DC_MSG_TEXT 10
5035
5036
5048#define DC_MSG_IMAGE 20
5049
5050
5056#define DC_MSG_GIF 21
5057
5058
5064#define DC_MSG_STICKER 23
5065
5066
5072#define DC_MSG_AUDIO 40
5073
5074
5081#define DC_MSG_VOICE 41
5082
5083
5092#define DC_MSG_VIDEO 50
5093
5094
5100#define DC_MSG_FILE 60
5101
5102
5111#define DC_MSG_VIDEOCHAT_INVITATION 70
5112
5113
5119#define DC_MSG_WEBXDC 80
5120
5121
5141#define DC_STATE_UNDEFINED 0
5142
5146#define DC_STATE_IN_FRESH 10
5147
5151#define DC_STATE_IN_NOTICED 13
5152
5156#define DC_STATE_IN_SEEN 16
5157
5161#define DC_STATE_OUT_PREPARING 18
5162
5166#define DC_STATE_OUT_DRAFT 19
5167
5171#define DC_STATE_OUT_PENDING 20
5172
5176#define DC_STATE_OUT_FAILED 24
5177
5182#define DC_STATE_OUT_DELIVERED 26
5183
5187#define DC_STATE_OUT_MDN_RCVD 28
5188
5209#define DC_CHAT_TYPE_UNDEFINED 0
5210
5214#define DC_CHAT_TYPE_SINGLE 100
5215
5219#define DC_CHAT_TYPE_GROUP 120
5220
5224#define DC_CHAT_TYPE_MAILINGLIST 140
5225
5229#define DC_CHAT_TYPE_BROADCAST 160
5230
5250#define DC_SOCKET_AUTO 0
5251
5252
5256#define DC_SOCKET_SSL 1
5257
5258
5262#define DC_SOCKET_STARTTLS 2
5263
5264
5268#define DC_SOCKET_PLAIN 3
5269
5293#define DC_LP_AUTH_OAUTH2 0x2
5294
5295
5300#define DC_LP_AUTH_NORMAL 0x4
5301
5302
5307#define DC_LP_AUTH_FLAGS (DC_LP_AUTH_OAUTH2|DC_LP_AUTH_NORMAL) // if none of these flags are set, the default is chosen
5308
5324#define DC_CERTCK_AUTO 0
5325
5330#define DC_CERTCK_STRICT 1
5331
5336#define DC_CERTCK_ACCEPT_INVALID_CERTIFICATES 3
5337
5360
5369
5379void dc_jsonrpc_request(dc_jsonrpc_instance_t* jsonrpc_instance, const char* request);
5380
5391
5412
5413// Alias for backwards compatibility, use dc_get_next_event instead.
5414#define dc_accounts_get_next_event dc_get_next_event
5415
5424
5425// Alias for backwards compatibility, use dc_event_emtitter_unref instead.
5426#define dc_accounts_event_emitter_unref dc_event_emitter_unref
5427
5447
5448
5461
5462
5475
5476
5490
5491
5502
5503
5512
5513
5536#define DC_EVENT_INFO 100
5537
5538
5545#define DC_EVENT_SMTP_CONNECTED 101
5546
5547
5554#define DC_EVENT_IMAP_CONNECTED 102
5555
5562#define DC_EVENT_SMTP_MESSAGE_SENT 103
5563
5570#define DC_EVENT_IMAP_MESSAGE_DELETED 104
5571
5578#define DC_EVENT_IMAP_MESSAGE_MOVED 105
5579
5586#define DC_EVENT_NEW_BLOB_FILE 150
5587
5594#define DC_EVENT_DELETED_BLOB_FILE 151
5595
5604#define DC_EVENT_WARNING 300
5605
5606
5624#define DC_EVENT_ERROR 400
5625
5626
5637#define DC_EVENT_ERROR_SELF_NOT_IN_GROUP 410
5638
5639
5650#define DC_EVENT_MSGS_CHANGED 2000
5651
5652
5659#define DC_EVENT_REACTIONS_CHANGED 2001
5660
5661
5671#define DC_EVENT_INCOMING_MSG 2005
5672
5682#define DC_EVENT_INCOMING_MSG_BUNCH 2006
5683
5684
5697#define DC_EVENT_MSGS_NOTICED 2008
5698
5699
5707#define DC_EVENT_MSG_DELIVERED 2010
5708
5709
5718#define DC_EVENT_MSG_FAILED 2012
5719
5720
5728#define DC_EVENT_MSG_READ 2015
5729
5730
5740#define DC_EVENT_CHAT_MODIFIED 2020
5741
5748#define DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED 2021
5749
5750
5757#define DC_EVENT_CONTACTS_CHANGED 2030
5758
5759
5760
5769#define DC_EVENT_LOCATION_CHANGED 2035
5770
5771
5778#define DC_EVENT_CONFIGURE_PROGRESS 2041
5779
5780
5787#define DC_EVENT_IMEX_PROGRESS 2051
5788
5789
5800#define DC_EVENT_IMEX_FILE_WRITTEN 2052
5801
5802
5817#define DC_EVENT_SECUREJOIN_INVITER_PROGRESS 2060
5818
5819
5832#define DC_EVENT_SECUREJOIN_JOINER_PROGRESS 2061
5833
5834
5844#define DC_EVENT_CONNECTIVITY_CHANGED 2100
5845
5846
5851#define DC_EVENT_SELFAVATAR_CHANGED 2110
5852
5853
5868#define DC_EVENT_WEBXDC_STATUS_UPDATE 2120
5869
5876#define DC_EVENT_WEBXDC_INSTANCE_DELETED 2121
5877
5878
5884#define DC_EVENT_DATA1_IS_STRING(e) 0 // not used anymore
5885#define DC_EVENT_DATA2_IS_STRING(e) ((e)==DC_EVENT_CONFIGURE_PROGRESS || (e)==DC_EVENT_IMEX_FILE_WRITTEN || ((e)>=100 && (e)<=499))
5886
5887
5888/*
5889 * Values for dc_get|set_config("show_emails")
5890 */
5891#define DC_SHOW_EMAILS_OFF 0
5892#define DC_SHOW_EMAILS_ACCEPTED_CONTACTS 1
5893#define DC_SHOW_EMAILS_ALL 2
5894
5895
5896/*
5897 * Values for dc_get|set_config("media_quality")
5898 */
5899#define DC_MEDIA_QUALITY_BALANCED 0
5900#define DC_MEDIA_QUALITY_WORSE 1
5901
5902
5903/*
5904 * Values for dc_get|set_config("key_gen_type")
5905 */
5906#define DC_KEY_GEN_DEFAULT 0
5907#define DC_KEY_GEN_RSA2048 1
5908#define DC_KEY_GEN_ED25519 2
5909
5910
5932#define DC_PROVIDER_STATUS_OK 1
5933
5945#define DC_PROVIDER_STATUS_PREPARATION 2
5946
5959#define DC_PROVIDER_STATUS_BROKEN 3
5960
5981#define DC_CHAT_VISIBILITY_NORMAL 0
5982
5995#define DC_CHAT_VISIBILITY_ARCHIVED 1
5996
6001#define DC_CHAT_VISIBILITY_PINNED 2
6002
6022#define DC_DOWNLOAD_DONE 0
6023
6027#define DC_DOWNLOAD_AVAILABLE 10
6028
6032#define DC_DOWNLOAD_FAILURE 20
6033
6037#define DC_DOWNLOAD_IN_PROGRESS 1000
6038
6039
6040
6068#define DC_STR_NOMESSAGES 1
6069
6073#define DC_STR_SELF 2
6074
6078#define DC_STR_DRAFT 3
6079
6083#define DC_STR_VOICEMESSAGE 7
6084
6088#define DC_STR_IMAGE 9
6089
6093#define DC_STR_VIDEO 10
6094
6098#define DC_STR_AUDIO 11
6099
6103#define DC_STR_FILE 12
6104
6112#define DC_STR_MSGGRPNAME 15
6113
6119#define DC_STR_MSGGRPIMGCHANGED 16
6120
6127#define DC_STR_MSGADDMEMBER 17
6128
6135#define DC_STR_MSGDELMEMBER 18
6136
6142#define DC_STR_MSGGROUPLEFT 19
6143
6147#define DC_STR_GIF 23
6148
6152#define DC_STR_ENCRYPTEDMSG 24
6153
6157#define DC_STR_E2E_AVAILABLE 25
6158
6160#define DC_STR_ENCR_TRANSP 27
6161
6165#define DC_STR_ENCR_NONE 28
6166
6170#define DC_STR_CANTDECRYPT_MSG_BODY 29
6171
6175#define DC_STR_FINGERPRINTS 30
6176
6180#define DC_STR_READRCPT 31
6181
6186#define DC_STR_READRCPT_MAILBODY 32
6187
6189#define DC_STR_MSGGRPIMGDELETED 33
6190
6194#define DC_STR_E2E_PREFERRED 34
6195
6200#define DC_STR_CONTACT_VERIFIED 35
6201
6206#define DC_STR_CONTACT_NOT_VERIFIED 36
6207
6212#define DC_STR_CONTACT_SETUP_CHANGED 37
6213
6217#define DC_STR_ARCHIVEDCHATS 40
6218
6222#define DC_STR_AC_SETUP_MSG_SUBJECT 42
6223
6227#define DC_STR_AC_SETUP_MSG_BODY 43
6228
6233#define DC_STR_CANNOT_LOGIN 60
6234
6243#define DC_STR_MSGACTIONBYUSER 62
6244
6252#define DC_STR_MSGACTIONBYME 63
6253
6257#define DC_STR_MSGLOCATIONENABLED 64
6258
6262#define DC_STR_MSGLOCATIONDISABLED 65
6263
6267#define DC_STR_LOCATION 66
6268
6272#define DC_STR_STICKER 67
6273
6277#define DC_STR_DEVICE_MESSAGES 68
6278
6282#define DC_STR_SAVED_MESSAGES 69
6283
6287#define DC_STR_DEVICE_MESSAGES_HINT 70
6288
6292#define DC_STR_WELCOME_MESSAGE 71
6293
6297#define DC_STR_UNKNOWN_SENDER_FOR_CHAT 72
6298
6304#define DC_STR_SUBJECT_FOR_NEW_CONTACT 73
6305
6310#define DC_STR_FAILED_SENDING_TO 74
6311
6317#define DC_STR_EPHEMERAL_DISABLED 75
6318
6326#define DC_STR_EPHEMERAL_SECONDS 76
6327
6333#define DC_STR_EPHEMERAL_MINUTE 77
6334
6340#define DC_STR_EPHEMERAL_HOUR 78
6341
6347#define DC_STR_EPHEMERAL_DAY 79
6348
6354#define DC_STR_EPHEMERAL_WEEK 80
6355
6357#define DC_STR_EPHEMERAL_FOUR_WEEKS 81
6358
6362#define DC_STR_VIDEOCHAT_INVITATION 82
6363
6368#define DC_STR_VIDEOCHAT_INVITE_MSG_BODY 83
6369
6374#define DC_STR_CONFIGURATION_FAILED 84
6375
6380#define DC_STR_BAD_TIME_MSG_BODY 85
6381
6385#define DC_STR_UPDATE_REMINDER_MSG_BODY 86
6386
6390#define DC_STR_ERROR_NO_NETWORK 87
6391
6394
6396#define DC_STR_PROTECTION_ENABLED 88
6397
6399#define DC_STR_PROTECTION_DISABLED 89
6400
6405#define DC_STR_REPLY_NOUN 90
6406
6410#define DC_STR_SELF_DELETED_MSG_BODY 91
6411
6415#define DC_STR_SERVER_TURNED_OFF 92
6416
6424#define DC_STR_EPHEMERAL_MINUTES 93
6425
6433#define DC_STR_EPHEMERAL_HOURS 94
6434
6442#define DC_STR_EPHEMERAL_DAYS 95
6443
6451#define DC_STR_EPHEMERAL_WEEKS 96
6452
6456#define DC_STR_FORWARDED 97
6457
6463#define DC_STR_QUOTA_EXCEEDING_MSG_BODY 98
6464
6472#define DC_STR_PARTIAL_DOWNLOAD_MSG_BODY 99
6473
6479#define DC_STR_DOWNLOAD_AVAILABILITY 100
6480
6484#define DC_STR_SYNC_MSG_SUBJECT 101
6485
6494#define DC_STR_SYNC_MSG_BODY 102
6495
6499#define DC_STR_INCOMING_MESSAGES 103
6500
6504#define DC_STR_OUTGOING_MESSAGES 104
6505
6511#define DC_STR_STORAGE_ON_DOMAIN 105
6512
6514#define DC_STR_ONE_MOMENT 106
6515
6519#define DC_STR_CONNECTED 107
6520
6524#define DC_STR_CONNTECTING 108
6525
6529#define DC_STR_UPDATING 109
6530
6534#define DC_STR_SENDING 110
6535
6539#define DC_STR_LAST_MSG_SENT_SUCCESSFULLY 111
6540
6546#define DC_STR_ERROR 112
6547
6551#define DC_STR_NOT_SUPPORTED_BY_PROVIDER 113
6552
6556#define DC_STR_MESSAGES 114
6557
6561#define DC_STR_BROADCAST_LIST 115
6562
6566#define DC_STR_PART_OF_TOTAL_USED 116
6567
6576#define DC_STR_SECURE_JOIN_STARTED 117
6577
6586#define DC_STR_SECURE_JOIN_REPLIES 118
6587
6593#define DC_STR_SETUP_CONTACT_QR_DESC 119
6594
6600#define DC_STR_SECURE_JOIN_GROUP_QR_DESC 120
6601
6605#define DC_STR_NOT_CONNECTED 121
6606
6610#define DC_STR_AEAP_ADDR_CHANGED 122
6611
6623#define DC_STR_AEAP_EXPLANATION_AND_LINK 123
6624
6629#define DC_STR_GROUP_NAME_CHANGED_BY_YOU 124
6630
6636#define DC_STR_GROUP_NAME_CHANGED_BY_OTHER 125
6637
6639#define DC_STR_GROUP_IMAGE_CHANGED_BY_YOU 126
6640
6644#define DC_STR_GROUP_IMAGE_CHANGED_BY_OTHER 127
6645
6649#define DC_STR_ADD_MEMBER_BY_YOU 128
6650
6657#define DC_STR_ADD_MEMBER_BY_OTHER 129
6658
6664#define DC_STR_REMOVE_MEMBER_BY_YOU 130
6665
6672#define DC_STR_REMOVE_MEMBER_BY_OTHER 131
6673
6677#define DC_STR_GROUP_LEFT_BY_YOU 132
6678
6684#define DC_STR_GROUP_LEFT_BY_OTHER 133
6685
6689#define DC_STR_GROUP_IMAGE_DELETED_BY_YOU 134
6690
6696#define DC_STR_GROUP_IMAGE_DELETED_BY_OTHER 135
6697
6701#define DC_STR_LOCATION_ENABLED_BY_YOU 136
6702
6708#define DC_STR_LOCATION_ENABLED_BY_OTHER 137
6709
6713#define DC_STR_EPHEMERAL_TIMER_DISABLED_BY_YOU 138
6714
6720#define DC_STR_EPHEMERAL_TIMER_DISABLED_BY_OTHER 139
6721
6727#define DC_STR_EPHEMERAL_TIMER_SECONDS_BY_YOU 140
6728
6735#define DC_STR_EPHEMERAL_TIMER_SECONDS_BY_OTHER 141
6736
6740#define DC_STR_EPHEMERAL_TIMER_1_MINUTE_BY_YOU 142
6741
6747#define DC_STR_EPHEMERAL_TIMER_1_MINUTE_BY_OTHER 143
6748
6752#define DC_STR_EPHEMERAL_TIMER_1_HOUR_BY_YOU 144
6753
6759#define DC_STR_EPHEMERAL_TIMER_1_HOUR_BY_OTHER 145
6760
6764#define DC_STR_EPHEMERAL_TIMER_1_DAY_BY_YOU 146
6765
6771#define DC_STR_EPHEMERAL_TIMER_1_DAY_BY_OTHER 147
6772
6776#define DC_STR_EPHEMERAL_TIMER_1_WEEK_BY_YOU 148
6777
6783#define DC_STR_EPHEMERAL_TIMER_1_WEEK_BY_OTHER 149
6784
6790#define DC_STR_EPHEMERAL_TIMER_MINUTES_BY_YOU 150
6791
6798#define DC_STR_EPHEMERAL_TIMER_MINUTES_BY_OTHER 151
6799
6805#define DC_STR_EPHEMERAL_TIMER_HOURS_BY_YOU 152
6806
6813#define DC_STR_EPHEMERAL_TIMER_HOURS_BY_OTHER 153
6814
6820#define DC_STR_EPHEMERAL_TIMER_DAYS_BY_YOU 154
6821
6828#define DC_STR_EPHEMERAL_TIMER_DAYS_BY_OTHER 155
6829
6835#define DC_STR_EPHEMERAL_TIMER_WEEKS_BY_YOU 156
6836
6843#define DC_STR_EPHEMERAL_TIMER_WEEKS_BY_OTHER 157
6844
6848#define DC_STR_PROTECTION_ENABLED_BY_YOU 158
6849
6855#define DC_STR_PROTECTION_ENABLED_BY_OTHER 159
6856
6858#define DC_STR_PROTECTION_DISABLED_BY_YOU 160
6859
6863#define DC_STR_PROTECTION_DISABLED_BY_OTHER 161
6864
6870#ifdef PY_CFFI_INC
6871/* Helper utility to locate the header file when building python bindings. */
6872char* _dc_header_file_location(void) {
6873 return __FILE__;
6874}
6875#endif
6876
6877
6878#ifdef __cplusplus
6879}
6880#endif
6881#endif // __DELTACHAT_H__
This class provides functionality that can be used to manage several dc_context_t objects running at ...
int dc_accounts_select_account(dc_accounts_t *accounts, uint32_t account_id)
Change the selected account.
void dc_accounts_unref(dc_accounts_t *accounts)
Free an account manager object.
dc_event_emitter_t * dc_accounts_get_event_emitter(dc_accounts_t *accounts)
Create the event emitter that is used to receive events.
int dc_accounts_all_work_done(dc_accounts_t *accounts)
This is meant especially for iOS, because iOS needs to tell the system when its background work is do...
dc_context_t * dc_accounts_get_selected_account(dc_accounts_t *accounts)
Get the currently selected account.
void dc_accounts_maybe_network(dc_accounts_t *accounts)
This function should be called when there is a hint that the network is available again.
uint32_t dc_accounts_migrate_account(dc_accounts_t *accounts, const char *dbfile)
Migrate independent accounts into accounts managed by the account manager.
dc_context_t * dc_accounts_get_account(dc_accounts_t *accounts, uint32_t account_id)
Get an account context from an account ID.
dc_array_t * dc_accounts_get_all(dc_accounts_t *accounts)
List all accounts.
dc_accounts_t * dc_accounts_new(const char *os_name, const char *dir)
Create a new account manager.
dc_jsonrpc_instance_t * dc_jsonrpc_init(dc_accounts_t *account_manager)
Create the jsonrpc instance that is used to call the jsonrpc.
void dc_accounts_start_io(dc_accounts_t *accounts)
Start job and IMAP/SMTP tasks for all accounts managed by the account manager.
void dc_accounts_stop_io(dc_accounts_t *accounts)
Stop job and IMAP/SMTP tasks for all accounts and return when they are finished.
void dc_accounts_maybe_network_lost(dc_accounts_t *accounts)
This function can be called when there is a hint that the network is lost.
uint32_t dc_accounts_add_account(dc_accounts_t *accounts)
Add a new account to the account manager.
uint32_t dc_accounts_add_closed_account(dc_accounts_t *accounts)
Add a new closed account to the account manager.
int dc_accounts_remove_account(dc_accounts_t *accounts, uint32_t account_id)
Remove an account from the account manager.
An object containing a simple array.
void dc_array_unref(dc_array_t *array)
Free an array object.
double dc_array_get_accuracy(const dc_array_t *array, size_t index)
Return the accuracy of the item at the given index.
int64_t dc_array_get_timestamp(const dc_array_t *array, size_t index)
Return the timestamp of the item at the given index.
uint32_t dc_array_get_chat_id(const dc_array_t *array, size_t index)
Return the chat ID of the item at the given index.
int dc_array_is_independent(const dc_array_t *array, size_t index)
Return the independent-state of the location at the given index.
uint32_t dc_array_get_msg_id(const dc_array_t *array, size_t index)
Return the message ID of the item at the given index.
uint32_t dc_array_get_contact_id(const dc_array_t *array, size_t index)
Return the contact ID of the item at the given index.
double dc_array_get_longitude(const dc_array_t *array, size_t index)
Return the longitude of the item at the given index.
size_t dc_array_get_cnt(const dc_array_t *array)
Find out the number of items in an array.
uint32_t dc_array_get_id(const dc_array_t *array, size_t index)
Get the item at the given index as an ID.
char * dc_array_get_marker(const dc_array_t *array, size_t index)
Return the marker-character of the item at the given index.
double dc_array_get_latitude(const dc_array_t *array, size_t index)
Return the latitude of the item at the given index.
An object representing a single chat in memory.
char * dc_chat_get_name(const dc_chat_t *chat)
Get name of a chat.
int dc_chat_is_sending_locations(const dc_chat_t *chat)
Check if locations are sent to the chat at the time the object was created using dc_get_chat().
int dc_chat_get_type(const dc_chat_t *chat)
Get chat type as one of the DC_CHAT_TYPE constants:
char * dc_chat_get_mailinglist_addr(const dc_chat_t *chat)
Returns the address where messages are sent to if the chat is a mailing list.
uint32_t dc_chat_get_id(const dc_chat_t *chat)
Get the chat ID.
int dc_chat_is_device_talk(const dc_chat_t *chat)
Check if a chat is a device-talk.
int64_t dc_chat_get_remaining_mute_duration(const dc_chat_t *chat)
Get the exact state of the mute of a chat.
int dc_chat_is_contact_request(const dc_chat_t *chat)
Check if a chat is a contact request chat.
int dc_chat_get_visibility(const dc_chat_t *chat)
Get visibility of chat.
void dc_chat_unref(dc_chat_t *chat)
Free a chat object.
int dc_chat_is_unpromoted(const dc_chat_t *chat)
Check if a group chat is still unpromoted.
uint32_t dc_chat_get_color(const dc_chat_t *chat)
Get a color for the chat.
int dc_chat_can_send(const dc_chat_t *chat)
Check if messages can be sent to a given chat.
int dc_chat_is_self_talk(const dc_chat_t *chat)
Check if a chat is a self talk.
char * dc_chat_get_profile_image(const dc_chat_t *chat)
Get the chat's profile image.
int dc_chat_is_protected(const dc_chat_t *chat)
Check if a chat is protected.
int dc_chat_is_muted(const dc_chat_t *chat)
Check whether the chat is currently muted (can be changed by dc_set_chat_mute_duration()).
An object representing a single chatlist in memory.
uint32_t dc_chatlist_get_msg_id(const dc_chatlist_t *chatlist, size_t index)
Get a single message ID of a chatlist.
void dc_chatlist_unref(dc_chatlist_t *chatlist)
Free a chatlist object.
dc_lot_t * dc_chatlist_get_summary(const dc_chatlist_t *chatlist, size_t index, dc_chat_t *chat)
Get a summary for a chatlist index.
dc_context_t * dc_chatlist_get_context(dc_chatlist_t *chatlist)
Helper function to get the associated context object.
uint32_t dc_chatlist_get_chat_id(const dc_chatlist_t *chatlist, size_t index)
Get a single chat ID of a chatlist.
size_t dc_chatlist_get_cnt(const dc_chatlist_t *chatlist)
Find out the number of chats in a chatlist.
An object representing a single contact in memory.
char * dc_contact_get_addr(const dc_contact_t *contact)
Get the e-mail address of a contact.
char * dc_contact_get_name_n_addr(const dc_contact_t *contact)
Get a summary of name and address.
int dc_contact_is_verified(dc_contact_t *contact)
Check if a contact was verified.
char * dc_contact_get_profile_image(const dc_contact_t *contact)
Get the contact's profile image.
void dc_contact_unref(dc_contact_t *contact)
Free a contact object.
char * dc_contact_get_verifier_addr(dc_contact_t *contact)
Return the address that verified a contact.
char * dc_contact_get_auth_name(const dc_contact_t *contact)
Get original contact name.
int64_t dc_contact_get_last_seen(const dc_contact_t *contact)
Get the contact's last seen timestamp.
uint32_t dc_contact_get_verifier_id(dc_contact_t *contact)
Return the ContactId that verified a contact.
char * dc_contact_get_status(const dc_contact_t *contact)
Get the contact's status.
int dc_contact_is_blocked(const dc_contact_t *contact)
Check if a contact is blocked.
char * dc_contact_get_name(const dc_contact_t *contact)
Get the edited contact name.
char * dc_contact_get_display_name(const dc_contact_t *contact)
Get display name.
uint32_t dc_contact_get_color(const dc_contact_t *contact)
Get a color for the contact.
uint32_t dc_contact_get_id(const dc_contact_t *contact)
Get the ID of a contact.
int dc_contact_was_seen_recently(const dc_contact_t *contact)
Check if the contact was seen recently.
An object representing a single account.
char * dc_imex_has_backup(dc_context_t *context, const char *dir)
Check if there is a backup file.
int dc_add_address_book(dc_context_t *context, const char *addr_book)
Add a number of contacts.
int dc_get_msg_cnt(dc_context_t *context, uint32_t chat_id)
Get the total number of messages in a chat.
dc_context_t * dc_context_new_closed(const char *dbfile)
Create a new context object.
int dc_preconfigure_keypair(dc_context_t *context, const char *addr, const char *public_data, const char *secret_data)
Save a keypair as the default keys for the user.
dc_array_t * dc_get_contacts(dc_context_t *context, uint32_t flags, const char *query)
Returns known and unblocked contacts.
void dc_set_draft(dc_context_t *context, uint32_t chat_id, dc_msg_t *msg)
Save a draft for a chat in the database.
uint32_t dc_add_device_msg(dc_context_t *context, const char *label, dc_msg_t *msg)
Add a message to the device-chat.
dc_chatlist_t * dc_get_chatlist(dc_context_t *context, int flags, const char *query_str, uint32_t query_id)
Get a list of chats.
char * dc_get_contact_encrinfo(dc_context_t *context, uint32_t contact_id)
Get encryption info for a contact.
uint32_t dc_lookup_contact_id_by_addr(dc_context_t *context, const char *addr)
Check if an e-mail address belongs to a known and unblocked contact.
int dc_set_chat_profile_image(dc_context_t *context, uint32_t chat_id, const char *image)
Set group profile image.
uint32_t dc_send_text_msg(dc_context_t *context, uint32_t chat_id, const char *text_to_send)
Send a simple text message a given chat.
void dc_maybe_network(dc_context_t *context)
This function should be called when there is a hint that the network is available again,...
int dc_was_device_msg_ever_added(dc_context_t *context, const char *label)
Check if a device-message with a given label was ever added.
uint32_t dc_get_chat_ephemeral_timer(dc_context_t *context, uint32_t chat_id)
Get the chat's ephemeral message timer.
dc_array_t * dc_get_chat_media(dc_context_t *context, uint32_t chat_id, int msg_type, int msg_type2, int msg_type3)
Returns all message IDs of the given types in a given chat or any chat.
dc_lot_t * dc_check_qr(dc_context_t *context, const char *qr)
Check a scanned QR code.
dc_array_t * dc_get_locations(dc_context_t *context, uint32_t chat_id, uint32_t contact_id, int64_t timestamp_begin, int64_t timestamp_end)
Get shared locations from the database.
void dc_send_locations_to_chat(dc_context_t *context, uint32_t chat_id, int seconds)
Enable or disable location streaming for a chat.
dc_contact_t * dc_get_contact(dc_context_t *context, uint32_t contact_id)
Get a single contact object.
void dc_stop_io(dc_context_t *context)
Stop job, IMAP, SMTP and other tasks and return when they are finished.
dc_msg_t * dc_get_draft(dc_context_t *context, uint32_t chat_id)
Get draft for a chat, if any.
char * dc_get_blobdir(const dc_context_t *context)
Get the blob directory.
dc_array_t * dc_get_blocked_contacts(dc_context_t *context)
Get blocked contacts.
void dc_context_unref(dc_context_t *context)
Free a context object.
void dc_stop_ongoing_process(dc_context_t *context)
Signal an ongoing process to stop.
dc_msg_t * dc_get_msg(dc_context_t *context, uint32_t msg_id)
Get a single message object of the type dc_msg_t.
uint32_t dc_send_reaction(dc_context_t *context, uint32_t msg_id, char *reaction)
Send a reaction to message.
dc_array_t * dc_get_chat_msgs(dc_context_t *context, uint32_t chat_id, uint32_t flags, uint32_t marker1before)
Get all message IDs belonging to a chat.
char * dc_get_info(const dc_context_t *context)
Get information about the context.
int dc_is_sending_locations_to_chat(dc_context_t *context, uint32_t chat_id)
Check if location streaming is enabled.
void dc_block_chat(dc_context_t *context, uint32_t chat_id)
Block a chat.
char * dc_get_securejoin_qr(dc_context_t *context, uint32_t chat_id)
Get QR code text that will offer an Setup-Contact or Verified-Group invitation.
int dc_continue_key_transfer(dc_context_t *context, uint32_t msg_id, const char *setup_code)
Continue the Autocrypt Key Transfer on another device.
dc_array_t * dc_get_fresh_msgs(dc_context_t *context)
Returns the message IDs of all fresh messages of any chat.
int dc_set_stock_translation(dc_context_t *context, uint32_t stock_id, const char *stock_msg)
Set stock string translation.
int dc_set_chat_mute_duration(dc_context_t *context, uint32_t chat_id, int64_t duration)
Set mute duration of a chat.
int dc_set_chat_protection(dc_context_t *context, uint32_t chat_id, int protect)
Enable or disable protection against active attacks.
int dc_get_fresh_msg_cnt(dc_context_t *context, uint32_t chat_id)
Get the number of fresh messages in a chat.
int dc_set_chat_name(dc_context_t *context, uint32_t chat_id, const char *name)
Set group name.
uint32_t dc_create_broadcast_list(dc_context_t *context)
Create a new broadcast list.
void dc_marknoticed_chat(dc_context_t *context, uint32_t chat_id)
Mark all messages in a chat as noticed.
int dc_set_chat_ephemeral_timer(dc_context_t *context, uint32_t chat_id, uint32_t timer)
Set the chat's ephemeral message timer.
int dc_remove_contact_from_chat(dc_context_t *context, uint32_t chat_id, uint32_t contact_id)
Remove a member from a group.
dc_array_t * dc_search_msgs(dc_context_t *context, uint32_t chat_id, const char *query)
Search messages containing the given query string.
int dc_may_be_valid_addr(const char *addr)
Rough check if a string may be a valid e-mail address.
int dc_is_configured(const dc_context_t *context)
Check if the context is already configured.
int dc_estimate_deletion_cnt(dc_context_t *context, int from_server, int64_t seconds)
Estimate the number of messages that will be deleted by the dc_set_config()-options delete_device_aft...
int dc_get_connectivity(dc_context_t *context)
Get the current connectivity, i.e.
char * dc_get_last_error(dc_context_t *context)
Get last error string.
char * dc_get_oauth2_url(dc_context_t *context, const char *addr, const char *redirect_uri)
Get URL that can be used to initiate an OAuth2 authorization.
uint32_t dc_get_chat_id_by_contact_id(dc_context_t *context, uint32_t contact_id)
Check, if there is a normal chat with a given contact.
char * dc_get_config(dc_context_t *context, const char *key)
Get a configuration option.
int dc_set_location(dc_context_t *context, double latitude, double longitude, double accuracy)
Set current location.
void dc_set_chat_visibility(dc_context_t *context, uint32_t chat_id, int visibility)
Set chat visibility to pinned, archived or normal.
int dc_add_contact_to_chat(dc_context_t *context, uint32_t chat_id, uint32_t contact_id)
Add a member to a group.
uint32_t dc_prepare_msg(dc_context_t *context, uint32_t chat_id, dc_msg_t *msg)
Prepare a message for sending.
char * dc_get_msg_info(dc_context_t *context, uint32_t msg_id)
Get an informational text for a single message.
char * dc_get_connectivity_html(dc_context_t *context)
Get an overview of the current connectivity, and possibly more statistics.
dc_array_t * dc_get_chat_contacts(dc_context_t *context, uint32_t chat_id)
Get the contact IDs belonging to a chat.
uint32_t dc_get_next_media(dc_context_t *context, uint32_t msg_id, int dir, int msg_type, int msg_type2, int msg_type3)
Search next/previous message based on a given message and a list of types.
dc_chat_t * dc_get_chat(dc_context_t *context, uint32_t chat_id)
Get a chat object by a chat ID.
uint32_t dc_get_id(dc_context_t *context)
Get the ID of a context object.
dc_context_t * dc_context_new(const char *os_name, const char *dbfile, const char *blobdir)
Create a new context object and try to open it without passphrase.
uint32_t dc_send_videochat_invitation(dc_context_t *context, uint32_t chat_id)
Send invitation to a videochat.
uint32_t dc_send_msg_sync(dc_context_t *context, uint32_t chat_id, dc_msg_t *msg)
Send a message defined by a dc_msg_t object to a chat, synchronously.
uint32_t dc_create_contact(dc_context_t *context, const char *name, const char *addr)
Add a single contact as a result of an explicit user action.
uint32_t dc_send_msg(dc_context_t *context, uint32_t chat_id, dc_msg_t *msg)
Send a message defined by a dc_msg_t object to a chat.
void dc_download_full_msg(dc_context_t *context, int msg_id)
Asks the core to start downloading a message fully.
char * dc_get_msg_html(dc_context_t *context, uint32_t msg_id)
Get uncut message, if available.
dc_event_emitter_t * dc_get_event_emitter(dc_context_t *context)
Create the event emitter that is used to receive events.
void dc_start_io(dc_context_t *context)
Start job and IMAP/SMTP tasks.
void dc_imex(dc_context_t *context, int what, const char *param1, const char *param2)
Import/export things.
char * dc_get_securejoin_qr_svg(dc_context_t *context, uint32_t chat_id)
Get QR code image from the QR code text generated by dc_get_securejoin_qr().
char * dc_get_webxdc_status_updates(dc_context_t *context, uint32_t msg_id, uint32_t serial)
Get webxdc status updates.
dc_lot_t * dc_chatlist_get_summary2(dc_context_t *context, uint32_t chat_id, uint32_t msg_id)
Create a chatlist summary item when the chatlist object is already unref()'d.
uint32_t dc_create_chat_by_contact_id(dc_context_t *context, uint32_t contact_id)
Create a normal chat with a single user.
void dc_forward_msgs(dc_context_t *context, const uint32_t *msg_ids, int msg_cnt, uint32_t chat_id)
Forward messages to another chat.
dc_reactions_t * dc_get_msg_reactions(dc_context_t *context, int msg_id)
Get a structure with reactions to the message.
int dc_send_webxdc_status_update(dc_context_t *context, uint32_t msg_id, const char *json, const char *descr)
A webxdc instance sends a status update to its other members.
int dc_set_config_from_qr(dc_context_t *context, const char *qr)
Set configuration values from a QR code.
void dc_str_unref(char *str)
Release a string returned by another deltachat-core function.
int dc_delete_contact(dc_context_t *context, uint32_t contact_id)
Delete a contact so that it disappears from the corresponding lists.
char * dc_get_mime_headers(dc_context_t *context, uint32_t msg_id)
Get the raw mime-headers of the given message.
void dc_delete_chat(dc_context_t *context, uint32_t chat_id)
Delete a chat.
void dc_block_contact(dc_context_t *context, uint32_t contact_id, int block)
Block or unblock a contact.
int dc_resend_msgs(dc_context_t *context, const uint32_t *msg_ids, int msg_cnt)
Resend messages and make information available for newly added chat members.
void dc_delete_msgs(dc_context_t *context, const uint32_t *msg_ids, int msg_cnt)
Delete messages.
void dc_configure(dc_context_t *context)
Configure a context.
uint32_t dc_join_securejoin(dc_context_t *context, const char *qr)
Continue a Setup-Contact or Verified-Group-Invite protocol started on another device with dc_get_secu...
void dc_markseen_msgs(dc_context_t *context, const uint32_t *msg_ids, int msg_cnt)
Mark messages as presented to the user.
uint32_t dc_create_group_chat(dc_context_t *context, int protect, const char *name)
Create a new group chat.
void dc_delete_all_locations(dc_context_t *context)
Delete all locations on the current device.
int dc_is_contact_in_chat(dc_context_t *context, uint32_t chat_id, uint32_t contact_id)
Check if a given contact ID is a member of a group chat.
int dc_context_is_open(dc_context_t *context)
Returns 1 if database is open.
void dc_accept_chat(dc_context_t *context, uint32_t chat_id)
Accept a contact request chat.
int dc_context_open(dc_context_t *context, const char *passphrase)
Opens the database with the given passphrase.
char * dc_initiate_key_transfer(dc_context_t *context)
Initiate Autocrypt Setup Transfer.
int dc_get_blocked_cnt(dc_context_t *context)
Get the number of blocked contacts.
char * dc_get_chat_encrinfo(dc_context_t *context, uint32_t chat_id)
Get encryption info for a chat.
int dc_set_config(dc_context_t *context, const char *key, const char *value)
Configure the context.
Opaque object that is used to get events from a single context.
void dc_event_emitter_unref(dc_event_emitter_t *emitter)
Free a context event emitter object.
dc_event_t * dc_get_next_event(dc_event_emitter_t *emitter)
Get the next event from a context event emitter object.
Opaque object describing a single event.
void dc_event_unref(dc_event_t *event)
Free memory used by an event object.
int dc_event_get_data2_int(dc_event_t *event)
Get data associated with an event object.
char * dc_event_get_data2_str(dc_event_t *event)
Get data associated with an event object.
uint32_t dc_event_get_account_id(dc_event_t *event)
Get the account ID this event belongs to.
int dc_event_get_id(dc_event_t *event)
Get the event ID from an event object.
int dc_event_get_data1_int(dc_event_t *event)
Get data associated with an event object.
Opaque object for using the json rpc api from the cffi bindings.
char * dc_jsonrpc_next_response(dc_jsonrpc_instance_t *jsonrpc_instance)
Get the next json_rpc response, blocks until there is a new event, so call this in a loop from a thre...
void dc_jsonrpc_unref(dc_jsonrpc_instance_t *jsonrpc_instance)
Free a jsonrpc instance.
void dc_jsonrpc_request(dc_jsonrpc_instance_t *jsonrpc_instance, const char *request)
Makes an asynchronous jsonrpc request, returns immediately and once the result is ready it can be ret...
An object containing a set of values.
int64_t dc_lot_get_timestamp(const dc_lot_t *lot)
Get the associated timestamp.
int dc_lot_get_state(const dc_lot_t *lot)
Get the associated state.
uint32_t dc_lot_get_id(const dc_lot_t *lot)
Get the associated ID.
int dc_lot_get_text1_meaning(const dc_lot_t *lot)
Get the meaning of the first string.
void dc_lot_unref(dc_lot_t *lot)
Frees an object containing a set of parameters.
char * dc_lot_get_text1(const dc_lot_t *lot)
Get first string.
char * dc_lot_get_text2(const dc_lot_t *lot)
Get second string.
An object representing a single message in memory.
void dc_msg_set_html(dc_msg_t *msg, const char *html)
Set the HTML part of a message object.
char * dc_msg_get_webxdc_blob(const dc_msg_t *msg, const char *filename, size_t *ret_bytes)
Return a file from inside a webxdc message.
uint32_t dc_msg_get_ephemeral_timer(const dc_msg_t *msg)
Get the ephemeral timer duration for a message.
char * dc_msg_get_filename(const dc_msg_t *msg)
Get a base file name without the path.
void dc_msg_set_override_sender_name(dc_msg_t *msg, const char *name)
Set different sender name for a message.
char * dc_msg_get_summarytext(const dc_msg_t *msg, int approx_characters)
Get a message summary as a single line of text.
int dc_msg_get_showpadlock(const dc_msg_t *msg)
Check if a padlock should be shown beside the message.
dc_lot_t * dc_msg_get_summary(const dc_msg_t *msg, const dc_chat_t *chat)
Get a summary for a message.
uint32_t dc_msg_get_chat_id(const dc_msg_t *msg)
Get the ID of the chat the message belongs to.
void dc_msg_set_quote(dc_msg_t *msg, const dc_msg_t *quote)
Set the message replying to.
int dc_msg_has_location(const dc_msg_t *msg)
Check if a message has a location bound to it.
char * dc_msg_get_text(const dc_msg_t *msg)
Get the text of the message.
uint32_t dc_msg_get_from_id(const dc_msg_t *msg)
Get the ID of the contact who wrote the message.
int64_t dc_msg_get_ephemeral_timestamp(const dc_msg_t *msg)
Get the timestamp of the ephemeral message removal.
int dc_msg_get_download_state(const dc_msg_t *msg)
Check if the message is completely downloaded or if some further action is needed.
void dc_msg_set_duration(dc_msg_t *msg, int duration)
Set the duration associated with message object.
void dc_msg_set_text(dc_msg_t *msg, const char *text)
Set the text of a message object.
int64_t dc_msg_get_timestamp(const dc_msg_t *msg)
Get the message sending time.
char * dc_msg_get_quoted_text(const dc_msg_t *msg)
Get quoted text, if any.
char * dc_msg_get_override_sender_name(const dc_msg_t *msg)
Get the name that should be shown over the message (in a group chat) instead of the contact display n...
char * dc_msg_get_videochat_url(const dc_msg_t *msg)
Get URL of a videochat invitation.
int dc_msg_get_width(const dc_msg_t *msg)
Get the width of an image or a video.
char * dc_msg_get_filemime(const dc_msg_t *msg)
Get the MIME type of a file.
void dc_msg_unref(dc_msg_t *msg)
Free a message object.
int dc_msg_is_bot(const dc_msg_t *msg)
Check if an incoming message is a bot message, i.e.
char * dc_msg_get_setupcodebegin(const dc_msg_t *msg)
Get the first characters of the setup code.
void dc_msg_set_dimension(dc_msg_t *msg, int width, int height)
Set the dimensions associated with message object.
int dc_msg_is_forwarded(const dc_msg_t *msg)
Check if the message is a forwarded message.
int dc_msg_has_deviating_timestamp(const dc_msg_t *msg)
Check if a message has a deviating timestamp.
int dc_msg_is_info(const dc_msg_t *msg)
Check if the message is an informational message, created by the device or by another users.
void dc_msg_latefiling_mediasize(dc_msg_t *msg, int width, int height, int duration)
Late filing information to a message.
int dc_msg_get_state(const dc_msg_t *msg)
Get the state of a message.
void dc_msg_set_location(dc_msg_t *msg, double latitude, double longitude)
Set any location that should be bound to the message object.
int dc_msg_is_setupmessage(const dc_msg_t *msg)
Check if the message is an Autocrypt Setup Message.
uint64_t dc_msg_get_filebytes(const dc_msg_t *msg)
Get the size of the file.
char * dc_msg_get_subject(const dc_msg_t *msg)
Get the subject of the e-mail.
dc_msg_t * dc_msg_get_quoted_msg(const dc_msg_t *msg)
Get quoted message, if available.
dc_msg_t * dc_msg_get_parent(const dc_msg_t *msg)
Get parent message, if available.
dc_msg_t * dc_msg_new(dc_context_t *context, int viewtype)
Create new message object.
void dc_msg_force_plaintext(dc_msg_t *msg)
Force the message to be sent in plain text.
int dc_msg_has_html(dc_msg_t *msg)
Checks if the message has a full HTML version.
int dc_msg_get_duration(const dc_msg_t *msg)
Get the duration of audio or video.
uint32_t dc_msg_get_id(const dc_msg_t *msg)
Get the ID of the message.
int dc_msg_get_info_type(const dc_msg_t *msg)
Get the type of an informational message.
int dc_msg_get_viewtype(const dc_msg_t *msg)
Get the type of the message.
int dc_msg_is_increation(const dc_msg_t *msg)
Check if a message is still in creation.
int64_t dc_msg_get_sort_timestamp(const dc_msg_t *msg)
Get the message time used for sorting.
int dc_msg_get_videochat_type(const dc_msg_t *msg)
Get type of videochat.
void dc_msg_set_file(dc_msg_t *msg, const char *file, const char *filemime)
Set the file associated with a message object.
int dc_msg_get_height(const dc_msg_t *msg)
Get the height of an image or a video.
char * dc_msg_get_error(const dc_msg_t *msg)
Gets the error status of the message.
int dc_msg_is_sent(const dc_msg_t *msg)
Check if a message was sent successfully.
char * dc_msg_get_file(const dc_msg_t *msg)
Find out full path, file name and extension of the file associated with a message.
int64_t dc_msg_get_received_timestamp(const dc_msg_t *msg)
Get the message receive time.
char * dc_msg_get_webxdc_info(const dc_msg_t *msg)
Get info from a webxdc message, in JSON format.
Opaque object containing information about one single e-mail provider.
int dc_provider_get_status(const dc_provider_t *provider)
Whether DC works with this provider.
char * dc_provider_get_before_login_hint(const dc_provider_t *provider)
Get hints to be shown to the user on the login screen.
char * dc_provider_get_overview_page(const dc_provider_t *provider)
URL of the overview page.
dc_provider_t * dc_provider_new_from_email_with_dns(const dc_context_t *context, const char *email)
Create a provider struct for the given e-mail address by local and DNS lookup.
dc_provider_t * dc_provider_new_from_email(const dc_context_t *context, const char *email)
Create a provider struct for the given e-mail address by local lookup.
void dc_provider_unref(dc_provider_t *provider)
Free the provider info struct.
An object representing all reactions for a single message.
char * dc_reactions_get_by_contact_id(dc_reactions_t *reactions, uint32_t contact_id)
Returns a string containing space-separated reactions of a single contact.
void dc_reactions_unref(dc_reactions_t *reactions)
Frees an object containing message reactions.
dc_array_t * dc_reactions_get_contacts(dc_reactions_t *reactions)
Returns array of contacts which reacted to the given message.