Le service Annotation expose toutes les opérations disponibles autour des annotations d’un document.
Récupération des annotations
Ce service permet de récupérer des annotations d’un document avec une opération de get.
Récupération de toutes les annotations
GET {{core}}/rest/documents/{documentId}/annotations HTTP/1.1
-- Paramètres d'URL --
core: host de FlowerDocs core
documentId: identifiant du document sur lequel se trouvent les annotations à récupérer
-- Headers --
token: {{token}}
Content-Type: application/json
@Autowired
private AnnotationService service;
public List<Annotation> get() throws FunctionalException, TechnicalException
{
    Id documentId = new Id("documentId");
    return service.get(documentId);
}
Création d’annotation
A partir d’un json
POST {{core}}/rest/documents/{documentId}/annotations HTTP/1.1
-- Paramètres d'URL --
core: host de FlowerDocs core
documentId: identifiant du document sur lequel créer les annotations
-- Headers --
token: {{token}}
Content-Type: application/json
-- Body (json) --
[
    {
        "color": {
            "b": 0,
            "g": 0,
            "r": 0
        },
        "creationdate": "2025-08-25T1218.497Z",
        "date": "2025-08-25T1218.497Z",
        "document-id": {
            "id": "documentId"
        },
        "flags": {
            "hidden": false,
            "invisible": false,
            "locked": false,
            "norotate": false,
            "noview": false,
            "nozoom": false,
            "obfuscate": false,
            "print": false,
            "readonly": false,
            "togglenoview": false
        },
        "last-modifier": "string",
        "name": {
            "id": "string"
        },
        "opacity": 0,
        "page": 0,
        "rect": {
            "h": 0,
            "w": 0,
            "x": 0,
            "y": 0
        },
        "type": "com.arondor.viewer.annotation.api.CircleElemType",
        "title": "annotationTest"
    }
]
@Autowired
private AnnotationService service;
public void create() throws FunctionalException, TechnicalException
{
    Id documentId = new Id("documentId");
    List<Annotation> annotations = new ArrayList();
    Annotation annotation = new CircleElemType();
    annotation.setId(new AnnotationId(generateRandomString()));
    annotation.setDate(new Date());
    annotation.setSubject(generateRandomString());
    annotation.setDocumentId(new DocumentId("b64_xxx==/0/1"));
    AnnotationFlags flags = new AnnotationFlags();
    annotation.setFlags(flags);
    annotations.add(annotation);
    service.create(documentId, annotations);
}
A partir d’un xml
POST {{core}}/rest/documents/{documentId}/annotations HTTP/1.1
-- Paramètres d'URL --
core: host de FlowerDocs core
documentId: identifiant du document sur lequel créer les annotations
-- Headers --
token: {{token}}
Content-Type: application/xml
-- Body (xml) --
<?xml version="1.0" encoding="UTF-8"?>
<ns0:xfdf xmlns:ns0="http://ns.adobe.com/xfdf/"><ns0:annots>
<ns0:circle color="#EAF39C" flags="" name="cfdbee9c-dce1-4e62-bc10-55ab1554476b" page="0" rect="82.02787,218.50267,183.40193,337.67523" title="Unknown" creationdate="D:20221228084701+00'00'" opacity="0.7" fringe="0.0,0.0,0.0,0.0" interior-color="#EAF39C" width="0.0" style="solid" intensity=""/>
</ns0:annots>
</ns0:xfdf>
Mise à jour des annotations
POST {{core}}/rest/documents/{documentId}/annotations/{annotationIds} HTTP/1.1
-- Paramètres d'URL --
core: host de FlowerDocs core
documentId: identifiant du document sur lequel se trouvent les annotations à modifier
annotationIds: identifiants des annotations à modifier 
-- Headers --
token: {{token}}
Content-Type: application/json
-- Body (json) --
[
    {
        "color": {
            "b": 0,
            "g": 0,
            "r": 0
        },
        "creationdate": "2025-08-25T1218.497Z",
        "date": "2025-08-25T1218.497Z",
        "document-id": {
            "id": "documentId"
        },
        "flags": {
            "hidden": false,
            "invisible": false,
            "locked": false,
            "norotate": false,
            "noview": false,
            "nozoom": false,
            "obfuscate": false,
            "print": false,
            "readonly": false,
            "togglenoview": false
        },
        "last-modifier": "string",
        "name": {
            "id": "string"
        },
        "opacity": 0,
        "page": 0,
        "rect": {
            "h": 0,
            "w": 0,
            "x": 0,
            "y": 0
        },
        "type": "com.arondor.viewer.annotation.api.FreetextElemType.FreetextElemType",
        "title": "annotationTest"
    }
]
@Autowired
private AnnotationService service;
public void update() throws FunctionalException, TechnicalException
{
    Id documentId = new Id("documentId");
    List<Annotation> updates = new ArrayList();
    List<Annotation> fetchedAnnotations = annotationService.get(created.getId());
    Annotation annotToUpdate = fetchedAnnotations.get(0);
    annotToUpdate.setColor(new Color(21, 9, 98));
    updates.add(annotToUpdate):
    annotationService.update(documentId, updates);
}
Suppression d’annotation
Les exemples ci-dessous indiquent comment supprimer des annotations.
Suppression d’une sélection d’annotations
Cette opération permet de supprimer une partie des annotations d’un document
DELETE {{core}}/rest/documents/{documentId}/annotations/{annotationIds} HTTP/1.1
-- Paramètres d'URL --
core: host de FlowerDocs core
documentId: identifiant du document sur lequel se trouvent les annotations à supprimer
annotationIds: identifiants des annotations à supprimer  
-- Header -- 
token: {{token}}
Content-Type: application/json
@Autowired
private AnnotationService service;
public void delete() throws FunctionalException, TechnicalException
{
    Id documentId = new Id("documentId");
    List<Id> ids = Lists.newArrayList(new Id("annot1"));
    service.delete(documentId, ids);
}
Suppression de toutes les annotations
Cette opération permet de supprimer l’ensemble des annotations d’un document
DELETE {{core}}/rest/documents/{documentId}/annotations/allAnnotations HTTP/1.1
-- Paramètres d'URL --
core: host de FlowerDocs core
documentId: identifiant du document sur lequel se trouvent les annotations à supprimer
-- Headers -- 
token: {{token}}
Content-Type: application/json
@Autowired
private AnnotationService service;
public void delete() throws FunctionalException, TechnicalException
{
    Id documentId = new Id("documentId");
    service.delete(documentId);
}