| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656 |
- .\" Man page generated from reStructuredText.
- .
- .TH "SYNCTHING-EVENT-API" "7" "January 30, 2016" "v0.12" "Syncthing"
- .SH NAME
- syncthing-event-api \- Event API
- .
- .nr rst2man-indent-level 0
- .
- .de1 rstReportMargin
- \\$1 \\n[an-margin]
- level \\n[rst2man-indent-level]
- level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
- -
- \\n[rst2man-indent0]
- \\n[rst2man-indent1]
- \\n[rst2man-indent2]
- ..
- .de1 INDENT
- .\" .rstReportMargin pre:
- . RS \\$1
- . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
- . nr rst2man-indent-level +1
- .\" .rstReportMargin post:
- ..
- .de UNINDENT
- . RE
- .\" indent \\n[an-margin]
- .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
- .nr rst2man-indent-level -1
- .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
- .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
- ..
- .SH DESCRIPTION
- .sp
- Syncthing provides a simple long polling interface for exposing events from the
- core utility towards a GUI.
- .sp
- To receive events, perform a HTTP GET of \fB/rest/events?since=<lastSeenID>\fP,
- where \fB<lastSeenID>\fP is the ID of the last event you\(aqve already seen or zero.
- Syncthing returns a JSON encoded array of event objects, starting at the event
- just after the one with the last seen ID. There is a limit to the number of
- events buffered, so if the rate of events is high or the time between polling
- calls is long some events might be missed. This can be detected by noting a
- discontinuity in the event IDs.
- .sp
- If no new events are produced since \fB<lastSeenID>\fP, the HTTP call blocks and
- waits for new events to happen before returning, or if no new events are
- produced within 60 seconds, times out.
- .sp
- To receive only a limited number of events, add the \fBlimit=n\fP parameter with a
- suitable value for \fBn\fP and only the \fIlast\fP \fBn\fP events will be returned. This
- can be used to catch up with the latest event ID after a disconnection for
- example: \fB/rest/events?since=0&limit=1\fP\&.
- .SH EVENT STRUCTURE
- .sp
- Each event is represented by an object similar to the following:
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 2,
- "type": "DeviceConnected",
- "time": "2014\-07\-13T21:04:33.687836696+02:00",
- "data": {
- "addr": "172.16.32.25:22000",
- "id": "NFGKEKE\-7Z6RTH7\-I3PRZXS\-DEJF3UJ\-FRWJBFO\-VBBTDND\-4SGNGVZ\-QUQHJAG"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .sp
- The top level keys \fBid\fP, \fBtime\fP, \fBtype\fP and \fBdata\fP are always present,
- though \fBdata\fP may be \fBnull\fP\&.
- .INDENT 0.0
- .TP
- .B id
- A monotonically increasing integer. The first event generated has id \fB1\fP,
- the next has id \fB2\fP etc.
- .TP
- .B time
- The time the event was generated.
- .TP
- .B type
- Indicates the type of (i.e. reason for) the event and is one of the event
- types below.
- .TP
- .B data
- An object containing optional extra information; the exact structure is
- determined by the event type.
- .UNINDENT
- .SH EVENTS
- .SS ConfigSaved
- .sp
- Emitted after the config has been saved by the user or by Syncthing
- itself.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 50,
- "type": "ConfigSaved",
- "time": "2014\-12\-13T00:09:13.5166486Z",
- "data":{
- "Version": 7,
- "Options": { ... },
- "GUI": { ... },
- "Devices": [ ... ],
- "Folders": [ ... ]
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS DeviceConnected
- .sp
- Generated each time a connection to a device has been established.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 2,
- "type": "DeviceConnected",
- "time": "2014\-07\-13T21:04:33.687836696+02:00",
- "data": {
- "addr": "172.16.32.25:22000",
- "id": "NFGKEKE\-7Z6RTH7\-I3PRZXS\-DEJF3UJ\-FRWJBFO\-VBBTDND\-4SGNGVZ\-QUQHJAG"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS DeviceDisconnected
- .sp
- Generated each time a connection to a device has been terminated.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 48,
- "type": "DeviceDisconnected",
- "time": "2014\-07\-13T21:18:52.859929215+02:00",
- "data": {
- "error": "unexpected EOF",
- "id": "NFGKEKE\-7Z6RTH7\-I3PRZXS\-DEJF3UJ\-FRWJBFO\-VBBTDND\-4SGNGVZ\-QUQHJAG"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .sp
- \fBNOTE:\fP
- .INDENT 0.0
- .INDENT 3.5
- The error key contains the cause for disconnection, which might not
- necessarily be an error as such. Specifically, "EOF" and "unexpected
- EOF" both signify TCP connection termination, either due to the other
- device restarting or going offline or due to a network change.
- .UNINDENT
- .UNINDENT
- .SS DeviceDiscovered
- .sp
- Emitted when a new device is discovered using local discovery.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 13,
- "type": "DeviceDiscovered",
- "time": "2014\-07\-17T13:28:05.043465207+02:00",
- "data": {
- "addrs": [
- "172.16.32.25:22000"
- ],
- "device": "NFGKEKE\-7Z6RTH7\-I3PRZXS\-DEJF3UJ\-FRWJBFO\-VBBTDND\-4SGNGVZ\-QUQHJAG"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS DeviceRejected
- .sp
- Emitted when there is a connection from a device we are not configured
- to talk to.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 24,
- "type": "DeviceRejected",
- "time": "2014\-08\-19T10:43:00.562821045+02:00",
- "data": {
- "address": "127.0.0.1:51807",
- "device": "EJHMPAQ\-OGCVORE\-ISB4IS3\-SYYVJXF\-TKJGLTU\-66DIQPF\-GJ5D2GX\-GQ3OWQK"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS DownloadProgress
- .sp
- Emitted during file downloads for each folder for each file. By default
- only a single file in a folder is handled at the same time, but custom
- configuration can cause multiple files to be shown.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 221,
- "type": "DownloadProgress",
- "time": "2014\-12\-13T00:26:12.9876937Z",
- "data": {
- "folder1": {
- "file1": {
- "Total": 800,
- "Pulling": 2,
- "CopiedFromOrigin": 0,
- "Reused": 633,
- "CopiedFromElsewhere": 0,
- "Pulled": 38,
- "BytesTotal": 104792064,
- "BytesDone": 87883776
- },
- "dir\e\efile2": {
- "Total": 80,
- "Pulling": 2,
- "CopiedFromOrigin": 0,
- "Reused": 0,
- "CopiedFromElsewhere": 0,
- "Pulled": 32,
- "BytesTotal": 10420224,
- "BytesDone": 4128768
- }
- },
- "folder2": {
- "file3": {
- "Total": 800,
- "Pulling": 2,
- "CopiedFromOrigin": 0,
- "Reused": 633,
- "CopiedFromElsewhere": 0,
- "Pulled": 38,
- "BytesTotal": 104792064,
- "BytesDone": 87883776
- },
- "dir\e\efile4": {
- "Total": 80,
- "Pulling": 2,
- "CopiedFromOrigin": 0,
- "Reused": 0,
- "CopiedFromElsewhere": 0,
- "Pulled": 32,
- "BytesTotal": 10420224,
- "BytesDone": 4128768
- }
- }
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .INDENT 0.0
- .IP \(bu 2
- \fBTotal\fP \- total number of blocks in the file
- .IP \(bu 2
- \fBPulling\fP \- number of blocks currently being downloaded
- .IP \(bu 2
- \fBCopiedFromOrigin\fP \- number of blocks copied from the file we are
- about to replace
- .IP \(bu 2
- \fBReused\fP \- number of blocks reused from a previous temporary file
- .IP \(bu 2
- \fBCopiedFromElsewhere\fP \- number of blocks copied from other files or
- potentially other folders
- .IP \(bu 2
- \fBPulled\fP \- number of blocks actually downloaded so far
- .IP \(bu 2
- \fBBytesTotal\fP \- approximate total file size
- .IP \(bu 2
- \fBBytesDone\fP \- approximate number of bytes already handled (already
- reused, copied or pulled)
- .UNINDENT
- .sp
- Where block size is 128KB.
- .sp
- Files/folders appearing in the event data imply that the download has
- been started for that file/folder, where disappearing implies that the
- downloads have been finished or failed for that file/folder. There is
- always a last event emitted with no data, which implies all downloads
- have finished/failed.
- .SS FolderCompletion
- .sp
- The \fBFolderCompletion\fP event is emitted when the local or remote
- contents for a folder changes. It contains the completion percentage for
- a given remote device and is emitted once per currently connected remote
- device.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 84,
- "type": "FolderCompletion",
- "time": "2015\-04\-17T14:14:27.043576583+09:00",
- "data": {
- "completion": 100,
- "device": "I6KAH76\-66SLLLB\-5PFXSOA\-UFJCDZC\-YAOMLEK\-CP2GB32\-BV5RQST\-3PSROAU",
- "folder": "default"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS FolderErrors
- .sp
- The \fBFolderErrors\fP event is emitted when a folder cannot be successfully
- synchronized. The event contains the ID of the affected folder and a list of
- errors for files or directories therein. This list of errors is obsolete once
- the folder changes state to \fBsyncing\fP \- if errors remain after the next
- synchronization attempt, a new \fBFolderErrors\fP event is emitted.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 132,
- "type": "FolderErrors",
- "time": "2015\-06\-26T13:39:24.697401384+02:00",
- "data": {
- "errors": [
- {
- "error": "open /Users/jb/src/github.com/syncthing/syncthing/test/s2/h2j/.syncthing.aslkjd.tmp: permission denied",
- "path": "h2j/aslkjd"
- }
- ],
- "folder": "default"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .sp
- New in version 0.11.12.
- .sp
- \fBSEE ALSO:\fP
- .INDENT 0.0
- .INDENT 3.5
- The statechanged event.
- .UNINDENT
- .UNINDENT
- .SS FolderRejected
- .sp
- Emitted when a device sends index information for a folder we do not
- have, or have but do not share with the device in question.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 27,
- "type": "FolderRejected",
- "time": "2014\-08\-19T10:41:06.761751399+02:00",
- "data": {
- "device": "EJHMPAQ\-OGCVORE\-ISB4IS3\-SYYVJXF\-TKJGLTU\-66DIQPF\-GJ5D2GX\-GQ3OWQK",
- "folder": "unique"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS FolderSummary
- .sp
- The FolderSummary event is emitted when folder contents have changed
- locally. This can be used to calculate the current local completion
- state.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 16,
- "type": "FolderSummary",
- "time": "2015\-04\-17T14:12:20.460121585+09:00",
- "data": {
- "folder": "default",
- "summary": {
- "globalBytes": 0,
- "globalDeleted": 0,
- "globalFiles": 0,
- "ignorePatterns": false,
- "inSyncBytes": 0,
- "inSyncFiles": 0,
- "invalid": "",
- "localBytes": 0,
- "localDeleted": 0,
- "localFiles": 0,
- "needBytes": 0,
- "needFiles": 0,
- "state": "idle",
- "stateChanged": "2015\-04\-17T14:12:12.455224687+09:00",
- "version": 0
- }
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS ItemFinished
- .sp
- Generated when Syncthing ends synchronizing a file to a newer version. A
- successful operation:
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 93,
- "type": "ItemFinished",
- "time": "2014\-07\-13T21:22:03.414609034+02:00",
- "data": {
- "item": "test.txt",
- "folder": "default",
- "error": null,
- "type": "file",
- "action": "update"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .sp
- An unsuccessful operation:
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 44,
- "type": "ItemFinished",
- "time": "2015\-05\-27T11:21:05.711133004+02:00",
- "data": {
- "action": "update",
- "error": "open /Users/jb/src/github.com/syncthing/syncthing/test/s2/foo/.syncthing.hej.tmp: permission denied",
- "folder": "default",
- "item": "foo/hej",
- "type": "file"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .sp
- The \fBaction\fP field is either \fBupdate\fP (contents changed), \fBmetadata\fP (file metadata changed but not contents), or \fBdelete\fP\&.
- .sp
- New in version 0.11.10: The \fBmetadata\fP action.
- .SS ItemStarted
- .sp
- Generated when Syncthing begins synchronizing a file to a newer version.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 93,
- "type": "ItemStarted",
- "time": "2014\-07\-13T21:22:03.414609034+02:00",
- "data": {
- "item": "test.txt",
- "folder": "default",
- "type": "file",
- "action": "update"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .sp
- The \fBaction\fP field is either \fBupdate\fP (contents changed), \fBmetadata\fP (file metadata changed but not contents), or \fBdelete\fP\&.
- .sp
- New in version 0.11.10: The \fBmetadata\fP action.
- .SS LocalIndexUpdated
- .sp
- Generated when the local index information has changed, due to
- synchronizing one or more items from the cluster or discovering local
- changes during a scan.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 59,
- "type": "LocalIndexUpdated",
- "time": "2014\-07\-17T13:27:28.051369434+02:00",
- "data": {
- "folder": "default",
- "items": 1000,
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS Ping
- .sp
- The Ping event is generated automatically every 60 seconds. This means
- that even in the absence of any other activity, the event polling HTTP
- request will return within a minute.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 46,
- "type": "Ping",
- "time": "2014\-07\-13T21:13:18.502171586+02:00",
- "data": null
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS RemoteIndexUpdated
- .sp
- Generated each time new index information is received from a device.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 44,
- "type": "RemoteIndexUpdated",
- "time": "2014\-07\-13T21:04:35.394184435+02:00",
- "data": {
- "device": "NFGKEKE\-7Z6RTH7\-I3PRZXS\-DEJF3UJ\-FRWJBFO\-VBBTDND\-4SGNGVZ\-QUQHJAG",
- "folder": "lightroom",
- "items": 1000
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS Starting
- .sp
- Emitted exactly once, when Syncthing starts, before parsing
- configuration etc.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 1,
- "type": "Starting",
- "time": "2014\-07\-17T13:13:32.044470055+02:00",
- "data": {
- "home": "/home/jb/.config/syncthing"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS StartupComplete
- .sp
- Emitted exactly once, when initialization is complete and Syncthing is
- ready to start exchanging data with other devices.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 1,
- "type": "StartupComplete",
- "time": "2014\-07\-13T21:03:18.383239179+02:00",
- "data": null
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SS StateChanged
- .sp
- Emitted when a folder changes state. Possible states are \fBidle\fP,
- \fBscanning\fP, \fBsyncing\fP and \fBerror\fP\&. The field \fBduration\fP is
- the number of seconds the folder spent in state \fBfrom\fP\&. In the example
- below, the folder \fBdefault\fP was in state \fBscanning\fP for 0.198
- seconds and is now in state \fBidle\fP\&.
- .INDENT 0.0
- .INDENT 3.5
- .sp
- .nf
- .ft C
- {
- "id": 8,
- "type": "StateChanged",
- "time": "2014\-07\-17T13:14:28.697493016+02:00",
- "data": {
- "folder": "default",
- "from": "scanning",
- "duration": 0.19782869900000002,
- "to": "idle"
- }
- }
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .SH AUTHOR
- The Syncthing Authors
- .SH COPYRIGHT
- 2015, The Syncthing Authors
- .\" Generated by docutils manpage writer.
- .
|