HTTP Citing Protocol
188BET靠谱吗The Google Docs plugin uses a simple HTTP protocol to communicate with Zotero.188BET靠谱吗The below documentation applies to Zotero 6.0 and newer.
Basics
188BET靠谱吗Zotero operates a server on port 23119 for188BET靠谱吗Zotero Connector integration.188BET靠谱吗It includes endpoints for integrating with Zotero citing functionality.The integrating plugin or application only needs to be able to send HTTP JSON requests to fully implement the citing protocol.
A singleciting integration commandis implemented as a series of requests and responses to the HTTP endpoints, constituting a transaction.The integration client begins a transaction by sending a request tohttp://127.0.0.1:23119/connector/document/execCommandwhich responds a command to be executed by the client, then subsequent requests with executed command results are made tohttp://127.0.0.1:23119/connector/document/responduntil a transaction is complete.
An example
In order to add a citation to a document, the implementing client sends the following tohttp://127.0.0.1:23119/connector/document/execCommand:
{ "command":"addEditCitation", "docId":"1ro9AmDxrwbys-xjazJqQG7UlSbBC76CU5xRJ71I8UjE" }
188BET靠谱吗Zotero then responds by asking for the active document:
{ "command":"Application.getActiveDocument", "arguments":[] }
The client then sends a response tohttp://127.0.0.1:23119/connector/document/respondconsisting of the the document ID and config options for the implementing client:
{ "documentID":"1ro9AmDxrwbys-xjazJqQG7UlSbBC76CU5xRJ71I8UjE", "outputFormat":"html", "supportedNotes":["footnotes"] }
188BET靠谱吗You can observe the communication between Zotero and Google Docs in the Zotero Connector background page, which is accessed atabout:extensions
188BET靠谱吗on Chrome by enabling Developer mode and clicking "background page" for Zotero Connector, or atabout:debugging
188BET靠谱吗on Firefox by clicking "Debug" for Zotero connector.The requests are listed under the Network tab in the developer tools window.
Integration Commands
188BET靠谱吗These commands are sent from the word processor to Zotero, and do not receive a response.The command payload always follows this format.
{ "command":"", "docId":" " // an unique document identifying string }
Command | Description |
---|---|
"addEditCitation" | Add a new or edit an existing citation |
"addEditBibliography" | Add a new or edit an existing bibliography |
"addNote" | 188BET靠谱吗Insert a Zotero note into the document |
"refresh" | Refresh all fields in the document, verifying that they match expectations |
"removeCodes" | Remove field codes from the document |
"setDocPrefs" | Change the citation style or other document parameters |
"exportDocument" | Export the citations in the document to a format importable in other word processors |
An up-to-date command list is always available by looking at the methods of188BET靠谱吗Zotero.Integration.Interface.
188BET靠谱吗If Zotero responds with a 503 HTTP response, it means that another integration transaction is already in progress.If your integration client initiates an integration transaction and fails to complete it by either returning an error or responding to requests until#Document.complete
188BET靠谱吗is issued the Zotero integration layer will continuously respond with 503 until it is restarted.
Word Processor Commands
188BET靠谱吗These commands are sent from Zotero to the word processor.They must always receive a response.The command payload is always a JSON-encoded string in the form
{ "command":"", "arguments":[] }
If the request is successful, the client must send a response with a JSON-encoded payload.This response is often null if the command returns no output, but may also be an array, an integer, a string, or a boolean value depending on the command.
If the request is unsuccessful, the client must send a response with the payload:
{ "error": "", "message": " ", "stack": " " }
188BET靠谱吗Zotero will cancel the current operation, log this error, and present it to the user using theDocument.displayAlertcommand if possible.188BET靠谱吗If the subsequent Document.displayAlert command fails, Zotero will present the error using its own dialog box.
A full and up-to-date API of commands is available as part of188BET靠谱吗Zotero Integration testsand|LibreOffice plugin code.
Application.getActiveDocument
Gets information about the client and the currently active document.
Parameters
N/A
Returns
documentID | Integer|String | An ID corresponding to the document that is currently active |
outputFormat | String | Either "html" or "rdt".Defaults to "html" |
supportedNotes | Array |
Document.displayAlert
Shows an alert.
Parameters
dialogText | String | The text to display inside the dialog. |
icon | Integer | One of:DIALOG_ICON_STOP = 0 DIALOG_ICON_NOTICE = 1 DIALOG_ICON_CAUTION = 2 |
buttons | Integer | One of:DIALOG_BUTTONS_OK = 0 DIALOG_BUTTONS_OK_CANCEL = 1 DIALOG_BUTTONS_YES_NO = 2 DIALOG_BUTTONS_YES_NO_CANCEL = 3 |
Returns
(Integer) The index of the button pressed, according to the value of buttons sent as a parameter.
DIALOG_BUTTONS_OK | OK = 1 |
DIALOG_BUTTONS_OK_CANCEL | CANCEL = 0 OK = 1 |
DIALOG_BUTTONS_YES_NO | NO = 0 YES = 1 |
DIALOG_BUTTONS_YES_NO_CANCEL | CANCEL = 0 NO = 1 YES = 2 |
Document.activate
Brings the document to the foreground.
Parameters
N/A
Returns
null
Document.canInsertField
Indicates whether a field can be inserted at the current cursor position.
Parameters
N/A
Returns
(Boolean) Whether a field can be inserted.
Document.setDocumentData
Stores a document-specific persistent data string.This data contains the style ID and other user preferences.
Parameters
dataString | String | The data string |
Returns
null
Document.getDocumentData
Retrieves data string set bysetDocumentData.
Parameters
N/A
Returns
(String) The document data string.
Document.cursorInField
Indicates whether the cursor is in a given field.If it is, returns information about that field.
Parameters
fieldType | String | The type of field used by the document, always "Http" for HTTP integration and can be ignored |
Returns
Either null, indicating that the cursor isn't in a field, or (Array)
0 | fieldID | Integer|String | A unique identifier corresponding to this field |
1 | fieldCode | Integer|String | The code stored within this field |
2 | noteIndex | Integer | The number of the footnote in which this field resides, or 0 if the field is not in a footnote. |
Document.insertField
Inserts a new field at the current cursor position.
Parameters
fieldType | String | The type of field used by the document, either ReferenceMark or Bookmark |
noteType | Integer | The type of note specified by the style:NOTE_IN_TEXT = 0 NOTE_FOOTNOTE = 1 NOTE_ENDNOTE = 2 If noteType is not NOTE_IN_TEXT, the implementation should create a new note before inserting the field |
Returns
(Array)
0 | fieldID | Integer|String | A unique identifier corresponding to this field |
1 | fieldCode | Integer|String | The code stored within this field.Since no data has been set, this should be empty. |
2 | noteIndex | Integer | The number of the footnote in which this field resides, or 0 if the field is not in a footnote. |
Document.insertText
Inserts rich text (HTML) at cursor position.The rich text may contain citation placeholder hyperlinks (to188BET靠谱吗//www.brodersterzo.com/?[placeholderID]) which are later converted to citations viaDocument.convertPlaceholdersToFields.
Parameters
text | String | The text |
Returns
null
Document.getFields
Get all fields present in the document, in document order.
Parameters
fieldType | String | The type of field used by the document, always "Http" for HTTP integration and can be ignored |
Returns
(Array)
0 | fieldID | Array(Integer|String) | Unique identifiers for each field |
1 | fieldCode | Array(Integer|String) | The code stored in each field |
2 | noteIndex | Array(Integer) | The number of the footnote in which each field resides, or 0 if the field is not in a footnote |
Document.convert
Converts all fields in a document to a different fieldType or noteType.Called upon style change from a an in-text to note type or vice-versa
Parameters
fields | Array(String) | Array of field IDs to be converted |
toFieldType | Array(String) | Should be ignored |
toNoteType | Array(Number) | Array of note types to be converted to.Each array entry corresponds to a field in thefields parameter and is one ofNOTE_IN_TEXT = 0 NOTE_FOOTNOTE = 1 NOTE_ENDNOTE = 2 |
count | Number | Size of the above arrays |
Returns
null
Document.convertPlaceholdersToFields
Converts placeholders (which are text with links to188BET靠谱吗//www.brodersterzo.com/?[placeholderID]) to fields and sets their field codes to strings in `codes` in the reverse order of their appearance
Parameters
0 | placeholderIDs | Array(String) | An array of placeholderID strings which are to be converted to citation fields in the document. |
1 | noteType | Number | Note type to convert citation placeholders to.Is one ofNOTE_IN_TEXT = 0 NOTE_FOOTNOTE = 1 NOTE_ENDNOTE = 2 |
2 | fieldType | Number | To be ignored |
Returns
Array of fields after conversion
(Array)
0 | fieldID | Array(Integer|String) | Unique identifiers for each field |
1 | fieldCode | Array(Integer|String) | The code stored in each field |
2 | noteIndex | Array(Integer) | The number of the footnote in which each field resides, or 0 if the field is not in a footnote |
Document.setBibliographyStyle
Sets parameters to be used to style the bibliography.Numbers are intwips
Parameters
firstLineIndent | Number | First line indent of each bibliography paragraph |
indent | Number | The indent of each bibliography paragraph |
lineSpacing | Number | Paragraph line spacing |
entrySpacing | Number | Line spacing between paragraphs |
tabStops | Array(Number) | An array of tab stops |
tabStopsCount | Number | Size of thetabStops array |
Returns
null
Document.complete
Indicates that the given documentID will no longer be used and associated resources may be freed.NOTE: No further requests tohttp://127.0.0.1:23119/connector/document/respondshould be made after this point
Parameters
N/A
Returns
null
Field.delete
Deletes a field from the document (both its code and its contents).
Parameters
fieldID | Integer|String | The fieldID, as originally returned byDocument.cursorInField,Document.insertField, orDocument.getFields |
Returns
null
Field.select
Moves the current cursor position to encompass a field.
Parameters
fieldID | Integer|String | The fieldID, as originally returned byDocument.cursorInField,Document.insertField, orDocument.getFields |
Returns
null
Field.removeCode
Removes the field code from a field, leaving it as plain text.
Parameters
fieldID | Integer|String | The fieldID, as originally returned byDocument.cursorInField,Document.insertField, orDocument.getFields |
Returns
null
Field.setText
Sets the (visible) text of a field.
Parameters
fieldID | Integer|String | The fieldID, as originally returned byDocument.cursorInField,Document.insertField, orDocument.getFields | |
text | String | The text | |
isRich | Boolean | Whether the text should be interpreted as RTF if Document.outputFormat is RTF, otherwise always true |
Returns
null
Field.getText
Gets the (visible) text of a field.
Parameters
fieldID | Integer|String | The fieldID, as originally returned byDocument.cursorInField,Document.insertField, orDocument.getFields |
Returns
(String) The (visible) text
Field.setCode
Sets the (hidden, persistent) code of a field.
Parameters
fieldID | Integer|String | The fieldID, as originally returned byDocument.cursorInField,Document.insertField, orDocument.getFields |
code | String | The field code |
Returns
null
Other resources
See:
-
Dummy Document Client188BET靠谱吗implementation in Zotero tests
-
The proper implementation of the HTTP clientfor our Google Docs plugin