# V3 Message Violations

## Get violations as a result of policy enforcement on messages.

> Retrieves DLP v3 message related violations for a given time range

```json
{"openapi":"3.0.1","info":{"title":"Agent API","version":"25.8.1"},"servers":[{"url":"youragentURL.symphony.com/agent"}],"paths":{"/v3/dlp/violations/message":{"get":{"tags":["Violations"],"summary":"Get violations as a result of policy enforcement on messages.","description":"Retrieves DLP v3 message related violations for a given time range","parameters":[{"name":"startTime","in":"query","description":"Timestamp of the first required violation.\nThis is a long integer value representing milliseconds since Jan 1 1970\n","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"Timestamp of the last required violation.\nThis is a long integer value representing milliseconds since Jan 1 1970\nIf unspecified, it will default to current time of the request.\n","schema":{"type":"integer","format":"int64"}},{"name":"next","in":"query","description":"Offset of the next chunk of violations. Value is null for the first request.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Max No. of violations to return. If no value is provided, 50 is the default. The maximum supported value is 500.\n","schema":{"type":"integer"}},{"name":"sessionToken","in":"header","description":"Session authentication token.","required":true,"schema":{"type":"string"}},{"name":"keyManagerToken","in":"header","description":"Key Manager authentication token.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V3DLPViolationMessageResponse"}}}},"204":{"description":"No Messages.","content":{}},"400":{"description":"Client error, see response body for further details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized: Session tokens invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden: Caller lacks necessary entitlement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error, see response body for further details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"V3DLPViolationMessageResponse":{"type":"object","required":["violations"],"properties":{"violations":{"type":"array","description":"A representation of list of violations due to messages sent by a user of Symphony","items":{"$ref":"#/components/schemas/V3DLPViolationMessage"}},"nextOffset":{"type":"string","description":"Offset for the next chunk of violations to be submitted in the next request. \nValue is null if there are no further violations.\n"}}},"V3DLPViolationMessage":{"type":"object","properties":{"violation":{"$ref":"#/components/schemas/V3DLPViolation"},"message":{"$ref":"#/components/schemas/V4Message"},"sharedMessage":{"$ref":"#/components/schemas/V4Message"},"diagnostic":{"type":"string","description":"A diagnostic message containing an error message in the event there are parsing errors.\nMay also be present in the case of a successful call if there is useful narrative to return.\n"}}},"V3DLPViolation":{"type":"object","properties":{"enforcementEventID":{"type":"string","description":"Enforcement event ID. Unique ID that identifies this enforcement."},"entityID":{"type":"string","description":"Entity ID is the content Id of the violation. For example, for messages it's the Id of the message"},"createTime":{"type":"integer","description":"Timestamp of the violation in milliseconds since Jan 1 1970","format":"int64"},"lastModified":{"type":"integer","description":"Timestamp of the last modification of violation in milliseconds since Jan 1 1970","format":"int64"},"requesterId":{"type":"integer","description":"Id of the requester responsible for the message/stream/signal","format":"int64"},"details":{"type":"array","description":"JSON representation of the details of the violation.","items":{"type":"object"}},"action":{"type":"string","description":"action taken such as BLOCK or WARN.  See outcome for a more detailed description of the outcome this action."},"outcome":{"$ref":"#/components/schemas/V1DLPOutcome"},"version":{"type":"string","description":"Version of application which processed the message and produced this violation."},"ignoreDLPwarning":{"type":"boolean","description":"Did the user chose to ignore DLP warning that was presented?"}},"description":"A representation of a violation due to an event created by a user of Symphony"},"V1DLPOutcome":{"type":"object","properties":{"type":{"type":"string","description":"Outcome of DLP enforcement"}},"description":"A representation of outcome of DLP message/stream/signal sent by a user of Symphony"},"V4Message":{"type":"object","properties":{"messageId":{"type":"string","description":"Id of the message"},"parentMessageId":{"type":"string","description":"Id of the parent message, set when the message is a reply to another message or a forwarded message. Since Agent 20.14."},"timestamp":{"type":"integer","description":"Timestamp of the message in milliseconds since Jan 1 1970","format":"int64"},"message":{"type":"string","description":"Message content in MessageMLV2","format":"MessageMLV2"},"sharedMessage":{"$ref":"#/components/schemas/V4Message"},"data":{"type":"string","description":"Message data in EntityJSON","format":"JSON"},"attachments":{"type":"array","default":[],"description":"Message attachments","items":{"$ref":"#/components/schemas/V4AttachmentInfo"}},"user":{"$ref":"#/components/schemas/V4User"},"stream":{"$ref":"#/components/schemas/V4Stream"},"externalRecipients":{"type":"boolean","description":"Indicates if the message have external recipients. Only present on real time messaging."},"diagnostic":{"type":"string","description":"Details if event failed to parse for any reason.  The contents of this field may not be useful,\ndepending on the nature of the error. Only present when error occurs.\n"},"userAgent":{"type":"string","description":"User agent string for client that sent the message.  Allows callers to identify which client sent the\norigin message (e.g. API Agent, SFE Client, mobile, etc)\n"},"originalFormat":{"type":"string","description":"Indicates the format in which the message was originally sent.  This could have been either:\n- com.symphony.markdown - Markdown OR Message ML V1\n- com.symphony.messageml.v2 - Message ML V2\n"},"disclaimer":{"type":"string","description":"Message that may be sent along with a regular message if configured for the POD,\nusually the first message sent in a room that day.\n"},"sid":{"type":"string","description":"Unique session identifier from where the message was created.\n"},"replacing":{"type":"string","description":"Id of the message that the current message is replacing (present only if set)"},"replacedBy":{"type":"string","description":"Id of the message that the current message is being replaced with (present only if set)"},"initialTimestamp":{"type":"integer","description":"Timestamp of when the initial message has been created in milliseconds since \nJan 1 1970 (present only if set)\n","format":"int64"},"initialMessageId":{"type":"string","description":"Id the the initial message that has been updated (present only if set)"},"silent":{"type":"boolean","description":"When false the user/s will receive the message update as unread (true by default)"}},"description":"A representation of a message sent by a user of Symphony"},"V4AttachmentInfo":{"required":["id","name","size","images"],"type":"object","properties":{"id":{"type":"string","description":"The attachment ID."},"name":{"type":"string","description":"The file name."},"size":{"type":"integer","description":"Size in bytes.","format":"int64"},"images":{"type":"array","items":{"$ref":"#/components/schemas/V4ThumbnailInfo"}}}},"V4ThumbnailInfo":{"type":"object","properties":{"id":{"type":"string","description":"The thumbnail ID."},"dimension":{"type":"string","description":"The thumbnail pixel size."}}},"V4User":{"type":"object","properties":{"userId":{"type":"integer","description":"Id of user","format":"int64"},"firstName":{"type":"string","description":"First name of user"},"lastName":{"type":"string","description":"Last name of user"},"displayName":{"type":"string","description":"User display name"},"email":{"type":"string","description":"Email of user"},"username":{"type":"string","description":"Applicable only to internal users"}}},"V4Stream":{"type":"object","properties":{"streamId":{"type":"string","description":"Id of stream"},"streamType":{"type":"string","description":"Stream type, possible values are:\n  - IM\n  - MIM\n  - ROOM\n  - POST\n"},"roomName":{"type":"string","description":"Applicable only to rooms"},"members":{"type":"array","description":"Applicable only to IM Created","items":{"$ref":"#/components/schemas/V4User"}},"external":{"type":"boolean"},"crossPod":{"type":"boolean"},"recipientTenantIds":{"type":"array","description":"List of tenant identifiers (aka pod identifiers) involved in the conversation. It contains more than one\nitem if the conversation is external. Field is only present for real time messaging.\n","items":{"type":"integer","format":"int32"}}}},"Error":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}
```

> #### 📘 sharedMessage
>
> Note that the `sharedMessage` attribute is only returned when the message represented by this class is a wall post sharing another message.\
> \&#xNAN;*Please note the payload example with `sharedMessage` object included.*

> #### 🚧 Required Permissions
>
> Calling this endpoint requires the Expression Filter Policy Management role.\
> See [Bot Permissions](https://docs.developers.symphony.com/building-bots-on-symphony/configuration/bot-permissions) for a list of roles and associated privileges.
