DocIntel API Documentation (v2.1)

Download OpenAPI specification:Download

API as described here is the encouraged way to programmatically interact with DocIntel. This new API was designed with ease of use and uniformity in mind and it is inspired from VirusTotal and other common API specification.

Authentication

For authenticating with the API you must include the Authentication header with a Bearer token in all your requests. The format for the Authentication header is Authentication: Bearer TOKEN where TOKEN is the actual token obtained with a request to /API/Authentication/Login. Bearer tokens are like temporary passwords for your account. You generate a Bearer token using your personal API key. Your API key can be found in your DocIntel account user menu, under the item Manage API Keys. An account may have multiple API keys, last usage is tracked separately for each.

Your API keys and tokens carry all your privileges, so keep it secure and don't share it with anyone. Always use HTTPS instead of HTTP for making your requests. Avoid storing these credentials in plaintext.

Login

Retrieves an authentication token for the specified user.

Request Body schema:

The login credentials

username
required
string non-empty

The username

api_key
required
string non-empty

The API key

Responses

Request samples

Content type
{
  • "username": "Mose41",
  • "api_key": "45m/7KmT54Cr6baW6qOs74aN76ur5LCz77yk76Gb4pme6ae46qaI77yZ5Ya+5IiK566w75Ko7ZCS7oO957i94K6W5qyq7LK04ZOr5piF65Kd56qb6p2q4KSy5LGX56OL7puD576/6J6Z46a07ryD5oOP662b7YWU4ZCt47+s67ic7L6o4qe96ruq56216KWF56qs6bCU7Lic7Y6s4YiR76604pme54y/5YiN5IWu5rqt77+96bqt6q+07Kqy576i"
}

Response samples

Content type
{
  "token": "P2.VQ.fTUswzCW0qr5HK5LI18ntICqVpZKFW9gL4glNgrjDU.cbWsq67BSZouFHNNmH9n1R0FuGBrhROMFHJ1L3G2oV4cSVT0dDyfrvmrbeESJ2yuGLNCo0ILjn9cZfBpezfrnSN7yLItAHjbhcSBF370IDhJV8HVtWs644A7GFbwA.SL5OnKo0J2IjeX5aBIRgixYoiTpFbf0cTJiwkiTNDC6roNtdY.yz6B5a6YPlfhQlwNb8twAv0d51UKpZL3Yfd3HUWA0IEANe5HAzh3e2hfpeNfrJD0QJwPRl32OUK18U.NYPiVsSQFMrn6iu2RGr376AZqsgXfKhUSki6nfE2uHl1GfWEg0scRPVr9ZjQjl8B5X3ITMd8vXA75IkJOM1v401V0ozeQjQbpgN6Xdi2zcUuV4pklrLcnYKUQWDibNYtzZl1rFZtUoCWDPOAyk2oSKeFRF3TielFvQ2lIPAu.YQnAfubv3i9fw.IhwZ1iD188u3q5yhLHAcrcVZL7JVhQBV9BkNpe7vfPpynYYYIDRwR6SGOqktiS4ljtN6wADuzSvhnnLIPsDNBhJu2BOfRlTJqTGTkB.Qti.vwgk67UozYYcKzzCtTfmj.8YhkzZ51q1heEFo.JWUQqNOAFKyJlWEo5nasG.iYqINkeiW3ZLDMwLNrxp7bUqBr0GkjteIbjOowBofHQhly54t5MSrcMrNFIYjbmYAN3Q.hcEoLUqVNAwTwucErlpfbxs6rU8rZo45XjXUreYhz85CObsS.nVLxRH4dWJHlpRZOQX9e4du3N32l.OE3wZ4DAGV5KaYz16rACr.7843W2sVYhKvr8Bz7T8mUtdlwuEtRCWj23GYkrCDdgxWEOW5hAOVbAbYs7xVhb.unsTZDrUyGpcig8.2K6FUrtbROS9Vjh0QoWfG.NeKje5c1yvK0FMMr0.uPSHrqTG5FkNQX.U2P.T2H0BMQQYyCeGwWsK1Q3bbcbSGjI7Y1vztQzlar11ihV.0.FiSi3UJrIebMLJohcaNCFH2y5MgfBJiKfFIAbijHookHjdZaUE8TbjKtoIcZfMgiFruIH5Z0taINhlBU0OH2geQPheMFRtOPpIjaBuHZN.fkjMNO68478WvIcNmayrroxfki77J40VB.l1x6.bnwuimTTeX0GwcKwhTSuqEbTg0HAPi0RtK.aDFGYmSZwcZ5sifCBj7ZkjcDHbE69DYVIBBXvtQk.HOg3zjFRQAK56p9nzpk4N.r9RK9hWNzMV8ZCPf2yIJKqCjD8s3B4Kr8wiwAQSZNrHWl4OB51e5gl1EPMgREHESQjlTZkxcQMgDDijguRi2EdqweVye9UOLA6CN6.86YSnsjsNhyuB0yDJhcfeWc0zHAKqGdR0zvqn6clHbQXrywJ3haEjEXvu4ekwhP6EX5jvu7MSAAtZqUmxNdSrS4bZRgvPrrUUGqQFko.haCMQjRmm5sUE6UsYzFYYOoVMe6qiTmVPwasFIaPixqPUIzbrF6pb8rjGE5Zr5xT6vHmo6kLlHOpW4NMjM.8TEkA5DaxYl9zArL90u.it6.PqpVwpvJjXzNAJyhpdwC20SeGP.FYCuN.vd1nbOgZdKtRowJ5beRMcyBjW0jJqoabTUskMp405PGVpz7MgZz1hF1xi88PI2mzCUgw4ZLEBVl0H91ZX0nAISmhuYcrUs8hWkes3jt3WluMUgL64JXukwoeCuU..8LAB1aRzHFMx6Zqf9Fb57DiQO8Aa.ILXPe8SYV3FwGj1XoKa09vCPiZh1M7jeqUVekiDqoK5YA.r0k9ac8mMofRfYgNsvmS6eJzovFUPlar83sKxndtksJB9vggU8eQVPZLbYea6ADSGuu8uRY8Np37pWQFTPDnst5v6ndBJN.hpVy58tkrNfNmxzSNytPG.M1VaSN0OjHvDqV.LNbut4cwQbDqEgIMA3s58LGEy.9lOCxVlNwJYfU7iVI7Abm6Z6T.yyx.b9hUr5qinWrMoTaZ5Kr0k5o0ftI9oGNiU8XI9SuDYoYpjoYBZrzxj2GY2RjHqJYH2cO.tXWbAvkrRjhMTVdbXCB7smaP1VnyuUq6A9xMn.tNCdG.HNIobh92bwEQohny17zxrX0b.Y3tyxpqs56TBxznTgsQQvco.XJZXEyCHcu2OmE1oAhhQyOUpQc9qOA0bbS7BzRf0wIpQKTDLtk.WS7rPMXceTWdIKm.3FLxPyQHpUPTgn5LQ9ncQoO9GHYRfExtiDsDLM6Ia0d9fSVDSZqzW3.PIhels1b97xzQe6pfrahLNbOYeWOmS4G9hP50T2lMSKnk6JZ2AmYggQw2MwPySdNfsLJgO9R1K6kuzDfHQhKFzQrxZid5JJWUM.Sq5Wn4uvKiVbm06NKjt88kzeOYcCnbDqjUqtJLHPAylM1HksvEydttS3wsyTT0IjNyrfVJN8ieVZ2g9wsdYnqQL.A0PmrsnM98dWpiln9IspbmYFU22lpIkdQ.1rMNNoGQbbKjl8TKwi9q4GMyV5v6ptevenLznDCKRSaPaIgLAe3NfTGBIG3S3DVJvIc5tHyE7XdzVaQjjZCrLLdXm16KINNuZHpZvVqKFFmWivm5qHfYqSiEoq1rZoCFBCUm9h3RBodNabKalo7B7qDovB1P.2ZmdDPyzZp01yr5teSKrjfYv8tdcTm3gpkx1m.UG0Zx9WjseoOeOFr"
}

Classification

Classification of information indicates the level of clearance required to read the enclosed information. In DocIntel, classification are only indicative as all users are expected to have the proper security clearance to handle the highest level of classified information stored in the platform.

Classifications are hierarchical. For example, Unclassified information can be used at "Restricted" level in common government classification schemes; so Restricted is modeled as a sub-classification of Unclassified.

Classification Attributes

Attribute Description
ClassificationId The identifier of the classification
Title The title of the classification (e.g. "Beperkte Verspreiding / Diffusion Restreinte")
Subtitle The tag line, often display below the title (e.g. "K.B/A.R 24.03.2000")
Abbreviation An abbreviated form of the classification (e.g. "BR")
Color A color used for the background of the classification banner. Valid colors are `(access
Description A description of the classification.
ParentClassificationId The identifier of the classification
Default Whether the classification is the default classification

Classification Relationships

Relationship Description
ParentClassification The parent classification

Get classifications

Returns all classifications.

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Classification \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer

Responses

Response samples

Content type
[
  {
    "classification_id": "ba30c69b-ed0c-bb45-367f-81c45970a200",
    "parent_classification": {
      "title": "Unclassified",
      "subtitle": "",
      "abbreviation": "U",
      "color": "info-bg-500",
      "description": "Information is not classified and can be shared according TLP or need to know.",
      "default": true
    },
    "title": "Company Confidential",
    "subtitle": "Don't share outside company",
    "abbreviation": "C",
    "color": "danger-bg-500",
    "description": "Information sharing is restricted and cannot be shared outside the company.",
    "parent_classification_id": "d0f97f31-43f5-751f-419f-85639b610445",
    "default": false
  },
  {
    "classification_id": "8f7ffb89-f1fd-740b-86f6-07217a20e8b3",
    "parent_classification": {
      "title": "Unclassified",
      "subtitle": "",
      "abbreviation": "U",
      "color": "info-bg-500",
      "description": "Information is not classified and can be shared according TLP or need to know.",
      "default": true
    },
    "title": "Beperkte Verspreiding / Diffusion Restreinte",
    "subtitle": "K.B./A.R. 24.03.2000",
    "abbreviation": "BR",
    "color": "info-bg-500",
    "description": "Information is restricted.",
    "parent_classification_id": "d0f97f31-43f5-751f-419f-85639b610445",
    "default": true
  },
  {
    "classification_id": "3f55d7c1-e3cb-fc28-812e-3f51c74d1153",
    "parent_classification": {
      "title": "Unclassified",
      "subtitle": "",
      "abbreviation": "U",
      "color": "info-bg-500",
      "description": "Information is not classified and can be shared according TLP or need to know.",
      "default": true
    },
    "title": "Company Restricted",
    "subtitle": "",
    "abbreviation": "TR",
    "color": "warning-bg-500",
    "description": "Information is restricted and can only be shared with a formal approval.",
    "parent_classification_id": "d0f97f31-43f5-751f-419f-85639b610445",
    "default": true
  }
]

Create a classification

Creates a new classification

For example, with cURL

curl --request POST \
    --url http://localhost:5001/API/Classification \
    --header 'Authorization: Bearer $TOKEN' \
    --header 'Content-Type: application/json' \
    --data '{
      "title": "Company Confidential",
      "subtitle": "Do not share outside company",
      "abbreviation": "C",
      "color": "color-warning-500",
      "description": null,
      "parentClassificationId": null,
      "default": false
    }'
Authorizations:
Bearer
Request Body schema:

The classification to create

title
required
string non-empty

The title

subtitle
string or null

The subtitle

abbreviation
string or null

The abbreviated form

color
string or null

The background color of the classification banner

description
string or null

The description

parent_classification_id
string or null <uuid>

The identifier of the parent classification

default
boolean or null

Whether the classification is the default one.

Responses

Request samples

Content type
{
  • "title": "Beperkte Verspreiding / Diffusion Restreinte",
  • "subtitle": "K.B./A.R. 24.03.2000",
  • "abbreviation": "BR",
  • "color": "info-bg-500",
  • "description": "Information is restricted.",
  • "parent_classification_id": "9871b4f2-ffcd-b6ea-c938-06b02182fd55",
  • "default": true
}

Response samples

Content type
{
  "classification_id": "e0bda52d-c847-4134-ea19-4bbb81929ba5",
  "parent_classification": {
    "title": "Unclassified",
    "subtitle": "",
    "abbreviation": "U",
    "color": "info-bg-500",
    "description": "Information is not classified and can be shared according TLP or need to know.",
    "default": true
  },
  "title": "Company Confidential",
  "subtitle": "Don't share outside company",
  "abbreviation": "C",
  "color": "danger-bg-500",
  "description": "Information sharing is restricted and cannot be shared outside the company.",
  "parent_classification_id": "80fdaa89-a0b7-59ea-6de3-bee580dbe147",
  "default": false
}

Get classification details

Returns the details of a classification.

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Classification/04573fca-f1b1-48a4-b55b-b26b8c09bb9d \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
classificationId
required
string <uuid>
Example: 7dd7bdd3-05c3-cc34-c560-8cc94664f810

The identifier of the classification

Responses

Response samples

Content type
{
  "classification_id": "78d3136e-d3f9-6223-9b57-177968f16b2e",
  "parent_classification": {
    "title": "Unclassified",
    "subtitle": "",
    "abbreviation": "U",
    "color": "info-bg-500",
    "description": "Information is not classified and can be shared according TLP or need to know.",
    "default": true
  },
  "title": "Company Restricted",
  "subtitle": "",
  "abbreviation": "TR",
  "color": "warning-bg-500",
  "description": "Information is restricted and can only be shared with a formal approval.",
  "parent_classification_id": "80fdaa89-a0b7-59ea-6de3-bee580dbe147",
  "default": true
}

Update a classification

Updates the classification specified in the route with the provided body.

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/Classification/f0a8ebb6-dcad-45ac-a0c9-1bc0f15b22c3 \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "title": "Company Confidential",
  "subtitle": "Do not share outside company.",
  "abbreviation": "C",
  "color": "color-warning-500",
  "description": null,
  "parentClassificationId": null,
  "default": false
}'
Authorizations:
Bearer
path Parameters
classificationId
required
string <uuid>
Example: f740b67b-4c2e-4d78-81e2-399f5449412e

The identifier of the classification to update

Request Body schema:

The updated classification

title
required
string non-empty

The title

subtitle
string or null

The subtitle

abbreviation
string or null

The abbreviated form

color
string or null

The background color of the classification banner

description
string or null

The description

parent_classification_id
string or null <uuid>

The identifier of the parent classification

default
boolean or null

Whether the classification is the default one.

Responses

Request samples

Content type
{
  • "title": "Company Confidential",
  • "subtitle": "Don't share outside company",
  • "abbreviation": "C",
  • "color": "danger-bg-500",
  • "description": "Information sharing is restricted and cannot be shared outside the company.",
  • "parent_classification_id": "24d1fb87-a3ea-c5e4-342a-c05bf3c18d16",
  • "default": true
}

Response samples

Content type
{
  "classification_id": "165b9e32-89ce-68ea-749a-63152d1b9f8d",
  "parent_classification": {
    "title": "Unclassified",
    "subtitle": "",
    "abbreviation": "U",
    "color": "info-bg-500",
    "description": "Information is not classified and can be shared according TLP or need to know.",
    "default": true
  },
  "title": "Beperkte Verspreiding / Diffusion Restreinte",
  "subtitle": "K.B./A.R. 24.03.2000",
  "abbreviation": "BR",
  "color": "info-bg-500",
  "description": "Information is restricted.",
  "parent_classification_id": "80fdaa89-a0b7-59ea-6de3-bee580dbe147",
  "default": true
}

Delete a classification

Deletes the classification specified in the route.

curl --request DELETE \
  --url http://localhost:5001/API/Classification/8cdb94c2-f24e-4e04-bfa7-b6f13bdd7fe9 \
  --header 'Authorization: Bearer $TOKEN' \
Authorizations:
Bearer
path Parameters
classificationId
required
string <uuid>
Example: f740b67b-4c2e-4d78-81e2-399f5449412e

The classification identifier

Responses

Response samples

Content type
No sample

Comment

A comment, in the context of DocIntel, is a piece of text expressing an opinion or reaction about a document. Comments are commonly used by analysts to share their thoughts or actions about the shared reports and information. Comments are always authored by a user.

Comment Attributes

  • CommentId: The identifier of the comment
  • Body: The body, in HTML, of the comment. HTML is sanitized at input and output.
  • CommentDate: The date of comment
  • ModificationDate: The date of the last modification

Comment Relationships

  • Author: The original author
  • LastModifiedBy: The last modifier

Get the comments

Gets all the comments about a document.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Comment/08a7474f-1912-4617-9ec4-b0bae39ed84a \
  --header 'Authorization: Bearer $TOKEN' \
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 5f9deb24-2b01-44c0-bb51-971b05a0667f

The document identifier

Responses

Response samples

Content type
[
  {
    "comment_id": "1cab4672-2995-f098-ce35-f32f85ce36b6",
    "comment_date": "2022-11-21T05:40:15.3842196+01:00",
    "modification_id": "2022-11-21T05:40:15.3842196+01:00",
    "author": {
      "userId": "4d44332a-7798-3904-1122-3bc5c97e74d8",
      "userName": "Jonathan_McGlynn35",
      "email": "Jonathan89@hotmail.com",
      "firstName": "Jonathan",
      "lastName": "McGlynn",
      "function": "Dynamic Response Producer",
      "lastActivity": "2022-11-21T02:19:47.8566262+01:00",
      "registrationDate": "2022-11-10T05:43:09.9396546+01:00",
      "enabled": true,
      "friendlyName": "Jonathan McGlynn"
    },
    "body": "<p>Odio consequatur eos qui non vitae voluptatem officia voluptatem. Saepe debitis et ut vel molestias sapiente sunt et tenetur. Ea sunt recusandae. Qui culpa praesentium omnis. Vero molestias aut minima quo dolorem sequi et.</p><p>Autem delectus et molestiae quia maiores assumenda itaque. Quos fugit qui nostrum voluptatem maxime quos. Vero velit voluptas aliquam delectus quam praesentium laudantium. Et quia debitis eum deleniti. Deleniti quis enim corrupti sed a hic qui eveniet vitae. Eum itaque ipsum nisi atque nam nemo.</p><p>Sed sit vel. Nobis voluptatem consequatur. Tempora molestiae laudantium qui laboriosam. Eius cumque nisi similique unde magni molestiae. Dolore hic ab sed temporibus explicabo eaque tenetur. Autem cum ut quia quo dolor voluptatem quo blanditiis sint.</p>"
  },
  {
    "comment_id": "0721edd4-1c74-4233-12f8-a45fa3593871",
    "comment_date": "2022-11-21T05:40:15.3842196+01:00",
    "modification_id": "2022-11-21T05:40:15.3842196+01:00",
    "author": {
      "userId": "691afc98-5fb7-8557-5ae3-483f664be357",
      "userName": "Darrell64",
      "email": "Darrell_Jast@yahoo.com",
      "firstName": "Darrell",
      "lastName": "Jast",
      "function": "Senior Communications Specialist",
      "lastActivity": "2022-11-21T11:55:16.4469364+01:00",
      "registrationDate": "2022-11-08T09:18:04.3120175+01:00",
      "enabled": true,
      "friendlyName": "Darrell Jast"
    },
    "body": "<p>Numquam necessitatibus iure molestiae quia et tempora ea. Dolores sint ut et sed molestiae provident assumenda adipisci quae. Quo voluptatem nobis eum. Voluptatem quae et voluptatum voluptas autem deserunt expedita. Vel voluptas culpa sapiente.</p><p>Nulla excepturi dolor necessitatibus libero laboriosam inventore quisquam dolorum. Occaecati dolorum et. Est laborum dolor eligendi magnam ut omnis incidunt molestiae.</p><p>Ut eos corporis quo non. Dolore rerum incidunt saepe aut blanditiis reprehenderit soluta. Ut qui quidem.</p>"
  },
  {
    "comment_id": "e3b0344b-b42f-e3ce-742a-dbc95d90b9b4",
    "comment_date": "2022-11-21T05:40:15.3842196+01:00",
    "modification_id": "2022-11-21T05:40:15.3842196+01:00",
    "author": {
      "userId": "9440fd18-4cdd-ee11-f040-6747bb687683",
      "userName": "Kirk.Morissette33",
      "email": "Kirk_Morissette@yahoo.com",
      "firstName": "Kirk",
      "lastName": "Morissette",
      "function": "International Marketing Executive",
      "lastActivity": "2022-11-20T14:32:15.6386739+01:00",
      "registrationDate": "2022-11-11T21:58:32.0634673+01:00",
      "enabled": true,
      "friendlyName": "Kirk Morissette"
    },
    "body": "<p>Numquam perspiciatis deleniti cupiditate. Assumenda nihil odio. Laboriosam excepturi et minus autem minima. Et dicta non itaque sed commodi ab enim repellendus eos.</p><p>Blanditiis minus dolores ea. Odio ut maxime omnis. Debitis voluptates aut ullam quia error sed sunt voluptatem. Iste ut minus esse veritatis. Officia odit quis ut laborum vel labore sed autem. Autem aliquid velit perferendis nostrum ab et et sequi consequatur.</p><p>Aliquam rerum totam in qui perspiciatis officia quis. Suscipit atque eos voluptas qui voluptas et sit. Qui neque neque sint qui rem fugit animi fuga. Ut aliquid eveniet adipisci et et natus rerum eos. Natus voluptatem occaecati. Quia ut et et sint.</p>"
  }
]

Post a comment

Post a new comment about a document.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Comment/08a7474f-1912-4617-9ec4-b0bae39ed84a \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "body": "<p>This is my comment</p>"
}'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 5f9deb24-2b01-44c0-bb51-971b05a0667f

The document identifier

Request Body schema:

The comment to post

body
required
string non-empty

The body, in HTML, of the comment.

Responses

Request samples

Content type
{
  • "body": "<p>Voluptas deleniti aliquid nulla ea dolor unde exercitationem. Sed amet incidunt. Ut sed quis eaque. Enim et voluptates molestiae.</p><p>Debitis alias porro itaque. Blanditiis amet et dolorem aut. Sed consequuntur praesentium dolore voluptatem dolor sit ratione dicta. Odit occaecati dicta pariatur cupiditate facere.</p><p>Est et nisi expedita delectus sint. Vel est necessitatibus voluptate facilis velit. Quo reiciendis eaque nam maiores non sint dolores ut. Aut quia veritatis adipisci earum pariatur nostrum placeat ducimus consequatur. Delectus et tenetur voluptates enim sit.</p>"
}

Response samples

Content type
{
  "comment_id": "9f187514-5cc3-3887-70d0-58edf0a58067",
  "comment_date": "2022-11-21T00:57:47.542238+01:00",
  "modification_id": "2022-11-21T00:57:47.542238+01:00",
  "author": {
    "userId": "e3f5f54e-cd56-3abd-38ac-338dc7faa246",
    "userName": "Maurice_Doyle49",
    "email": "Maurice59@hotmail.com",
    "firstName": "Maurice",
    "lastName": "Doyle",
    "function": "Principal Brand Manager",
    "lastActivity": "2022-11-21T03:03:32.6047751+01:00",
    "registrationDate": "2022-11-08T00:15:12.6992367+01:00",
    "enabled": true,
    "friendlyName": "Maurice Doyle"
  },
  "body": "<p>Commodi adipisci necessitatibus unde sapiente occaecati qui et. Possimus et qui. Consequatur autem autem quos libero non voluptatem voluptatum perspiciatis. Sit excepturi quisquam vel. Quibusdam dolores corrupti qui. Eos dolorem aut ipsum et.</p><p>Quod impedit itaque quae commodi. Commodi nesciunt nihil quos vel exercitationem. Est a accusamus est qui. Asperiores quod est vitae. Ab cum necessitatibus. Harum qui natus sed.</p><p>Ut non et sunt sequi fuga. Et architecto quibusdam qui ut eos. Dolorem magni vel suscipit quidem et et omnis.</p>"
}

Update a comment

Update an existing comment,

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/Comment/f3ff2759-9808-4218-8647-2cf48016f67c \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "body": "<p>This is my updated comment</p>"
}'
Authorizations:
Bearer
path Parameters
commentId
required
string <uuid>
Example: 932ba2c1-9d7d-4788-8f12-e55892828c2e

The comment identifier

Request Body schema:

The updated comment

body
required
string non-empty

The body, in HTML, of the comment.

Responses

Request samples

Content type
{
  • "body": "<p>Qui suscipit velit sit quaerat. Ipsam voluptatem distinctio officia dolor architecto et dolore. Hic sed odio quis. Omnis omnis consectetur repudiandae. Alias beatae quis occaecati nihil quo soluta est modi voluptatem.</p><p>Fuga ducimus non eum. Blanditiis optio temporibus. Reprehenderit similique sit sed quas sunt mollitia saepe. Necessitatibus est velit culpa soluta neque sunt aut ut. Vel labore dolor iste error quis quo quibusdam. Repellat autem consequatur quis illo mollitia omnis.</p><p>Quam eaque consequuntur vitae optio eligendi. Et et assumenda voluptates ea et nesciunt. Minus optio nobis. In in repellat dolores quo molestiae fugiat nobis suscipit aliquid. Aut molestiae architecto quaerat ea repudiandae sit omnis doloribus adipisci. At dolor sed qui nemo voluptas quia temporibus exercitationem in.</p>"
}

Response samples

Content type
application/json
{
  • "comment_id": "b3fd456c-e1fa-8935-e5e9-690313650d8a",
  • "comment_date": "2022-11-21T00:57:47.542238+01:00",
  • "modification_id": "2022-11-21T00:57:47.542238+01:00",
  • "author": {
    },
  • "body": "<p>In deserunt pariatur natus nihil ad voluptatum velit est impedit. Qui qui distinctio vero ipsum laboriosam laboriosam. Iusto eligendi ipsum tenetur unde ut. Eaque doloribus quia autem ducimus.</p><p>In et ut est cum. Inventore repudiandae minus doloribus fugiat. Accusamus voluptatem iste omnis distinctio mollitia. Rerum voluptatem et omnis atque numquam ut hic corporis. Nulla nemo non aliquid. Vitae impedit sit.</p><p>Qui fuga quis. Non commodi dolores et ratione sed. Voluptatem accusantium fugit facere possimus et. Ad doloribus eius enim impedit suscipit aut alias veniam. Voluptates laboriosam aliquid iste.</p>"
}

Delete a comment

Delete an existing comment,

For example, with cURL

curl --request DELETE \
  --url http://localhost:5001/API/Comment/f3ff2759-9808-4218-8647-2cf48016f67c \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
commentId
required
string <uuid>
Example: 84777684-8b85-4e11-a92e-b553b84ae26c

The comment identifier

Responses

Response samples

Content type
No sample

Document

A document, in the context of DocIntel, is a piece of electronic matter that provides information or evidence or that serves as an official record. A document is a coherent set of files, like a PDF report and a CSV file with the detailed, machine-processable, observables related to the PDF report.

Document Attributes

  • DocumentId: The identifier
  • Title: The title
  • Summary: A short summary, in HTML, of the document. HTML is sanitized at input and output.
  • ExternalReference: The reference used by the source
  • SourceUrl: The URL from which the document was retrieved
  • DocumentDate: The publication date
  • RegistrationDate: The registration date
  • ModificationDate: The last modification date
  • Reference: The reference, generated by DocIntel
  • URL: The slug generated by DocIntel for pretty URLs
  • Note: Notes
  • SourceId: The identifier of the source
  • ClassificationId: The identifier of the classification
  • Status: The status of the document (0=Submitted, 1=Analyzed, 2=Registered)

Document Relationships

  • Tags: The tags
  • Source: The source
  • Classification: The classification
  • RegisteredBy: The user who registered the document
  • LastModifiedBy: The user who last modified the document

Get pending documents

Get the documents pending registration.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Document/Pending \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
query Parameters
page
integer <int32>
Default: 1

The page, starting from 1 (default: 1)

pageSize
integer <int32>
Default: 20

The page size (default: 20)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a document

Creates a new document. The document has no files and is not registered.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Document/ \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "My document",
    "shortDescription": "My description",
    "sourceUrl": "https://docintel.org"
}'
Authorizations:
Bearer
Request Body schema:

The document

title
required
string non-empty

The title

summary
string or null

A short summary

external_reference
string or null

The reference as used by the external source

source_url
string or null

The URL from which the document was retrieved

document_date
string or null <date-time>

The publication date of the document

note
string or null

Notes, in HTML.

tags
Array of strings or null

A set of tags

source_id
string or null <uuid>

The identifier for the source

classification_id
string or null <uuid>

The identifier for the classification

Responses

Request samples

Content type
{
  • "title": "Hardware-based threat defense against increasingly complex cryptojackers",
  • "summary": "<p>Even with the dip in the value of cryptocurrencies in the past few months, cryptojackers – trojanized coin miners that attackers distribute to use compromised devices’ computing power for their objectives – continue to be widespread. In the past several months, Microsoft Defender Antivirus detected cryptojackers on hundreds of thousands of devices every month. These threats also continue to evolve: recent cryptojackers have become stealthier, leveraging living-off-the-land binaries (LOLBins) to evade detection.</p>",
  • "external_reference": "18-12450234",
  • "document_date": "2022-08-18T17:00:00",
  • "note": "string",
  • "tags": [
    ],
  • "source_id": "fa654749-fdd1-4f57-9ac5-9fcad4cca406",
  • "classification_id": "ad153066-0c0a-4ecc-914b-e5876c8d3787"
}

Response samples

Content type
No sample

Register a document

Register the document and merge the referenced observables into the main layer.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Document/d81f4853-5b79-4e4c-a60a-4360cf896ae0/Register \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: d81f4853-5b79-4e4c-a60a-4360cf896ae0

The document identifier

Responses

Response samples

Content type
application/json
{
  • "document_id": "ca913805-ae9f-47fe-8e90-b20fb29fb72f",
  • "reference": "DI-2022-09-084",
  • "source": {
    },
  • "classification": {
    },
  • "registration_date": "2022-09-28T15:26:04.347412",
  • "modification_date": "2022-09-19T19:01:02.824604",
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "status": 0,
  • "url": "hardware-based-threat-defense-against-increasingly-complex-cryptojackers",
  • "tags": [
    ],
  • "title": "Hardware-based threat defense against increasingly complex cryptojackers",
  • "summary": "<p>Even with the dip in the value of cryptocurrencies in the past few months, cryptojackers – trojanized coin miners that attackers distribute to use compromised devices’ computing power for their objectives – continue to be widespread. In the past several months, Microsoft Defender Antivirus detected cryptojackers on hundreds of thousands of devices every month. These threats also continue to evolve: recent cryptojackers have become stealthier, leveraging living-off-the-land binaries (LOLBins) to evade detection.</p>",
  • "external_reference": "18-12450234",
  • "document_date": "2022-08-18T17:00:00",
  • "note": "string",
  • "source_id": "fa654749-fdd1-4f57-9ac5-9fcad4cca406",
  • "classification_id": "ad153066-0c0a-4ecc-914b-e5876c8d3787"
}

Subscribe to a document

Subscribe to the document. The body indicates whether the user should receive a notification when the document changes.

For example, with cURL

curl --request PUT \
  --url http://localhost:5001/API/Document/a203c3dd-72e2-488f-a999-a4a8a7acd0a8/Subscribe \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data false
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: a203c3dd-72e2-488f-a999-a4a8a7acd0a8

The document identifier

Request Body schema:

Whether the user needs to be notified

boolean
Default: false

Responses

Request samples

Content type
false

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Unsubscribe to a document

Unsubscribe to the document.

For example, with cURL

curl --request PUT \
  --url http://localhost:5001/API/Document/a203c3dd-72e2-488f-a999-a4a8a7acd0a8/Unsubscribe \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: a203c3dd-72e2-488f-a999-a4a8a7acd0a8

The document identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Get subscription status

Gets whether the user is subscribed to the document.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Document/4a9ef072-0cc5-41f8-b42a-a018ef4fb4b8/Subscription \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 4a9ef072-0cc5-41f8-b42a-a018ef4fb4b8

The document identifier

Responses

Response samples

Content type
application/json
{
  • "subscribed": true,
  • "notify": true
}

Get a document

Gets the details of a document

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Document/3601df56-ae41-4d5b-a440-d77094322240 \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 3601df56-ae41-4d5b-a440-d77094322240

The document identifier

Responses

Response samples

Content type
No sample

Updates a document

Updates a document

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/Document/ \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "Looking for the Sliver lining: Hunting for emerging command-and-control frameworks",
    "tags": [
        "targetGeography:united kingdom",
        "technique.commandAndControl:T1071 - Application Layer Protocol",
        "technique.initialAccess:T1078 - Valid Accounts",
        "technique.execution:T1059.005 - Visual Basic",
        "technique.initialAccess:T1195 - Supply Chain Compromise",
        "technique.collection:T1114 - Email Collection",
        "technique.commandAndControl:T1071.004 - DNS",
        "targetGeography:Europe",
        "vulnerability:CVE-2019-19781",
        "vulnerability:CVE-2018-13379",
        "technique.credentialAccess:T1552.004 - Private Keys",
        "technique.persistence:T1078 - Valid Accounts",
        "technique.collection:T1114.002 - Remote Email Collection",
        "vulnerability:CVE-2021-26858",
        "technique.initialAccess:T1195.002 - Compromise Software Supply Chain",
        "technique.reconnaissance:T1595.002 - Vulnerability Scanning",
        "technique.persistence:T1505 - Server Software Component",
        "technique.initialAccess:T1190 - Exploit Public-Facing Application",
        "vulnerability:CVE-2019-11510",
        "technique.commandAndControl:T1573.002 - Asymmetric Cryptography",
        "targetGeography:united states",
        "vulnerability:CVE-2021-26855",
        "technique.execution:T1059 - Command and Scripting Interpreter",
        "vulnerability:CVE-2021-27065",
        "technique.persistence:T1505.003 - Web Shell",
        "technique.credentialAccess:T1552 - Unsecured Credentials",
        "technique.initialAccess:T1199 - Trusted Relationship",
        "technique.reconnaissance:T1595 - Active Scanning",
        "vulnerability:CVE-2021-26857",
        "technique.defenseEvasion:T1078 - Valid Accounts",
        "technique.commandAndControl:T1573 - Encrypted Channel",
        "technique.privilegeEscalation:T1078 - Valid Accounts",
        "tool:Cobalt Strike",
        "targetGeography:russia",
        "technique.commandAndControl:T1071.001 - Web Protocols",
        "group.microsoft:DEV-0237",
        "group.microsoft:HAFNIUM",
        "vulnerability:CVE-2021-21972",
        "vulnerability:CVE-2019-1653",
        "group.mandiant:UNC2452",
        "vulnerability:CVE-2020-14882",
        "vulnerability:CVE-2020-5902",
        "vulnerability:CVE-2019-2725",
        "group.mandiant:APT29",
        "vulnerability:CVE-2020-4006",
        "vulnerability:CVE-2019-9670",
        "vulnerability:CVE-2019-7609"
    ]
}'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: befa4d31-76a9-48ad-9f64-bf1cb1788e3e

The document identifier

Request Body schema:

The updated document

title
required
string non-empty

The title

summary
string or null

A short summary

external_reference
string or null

The reference as used by the external source

source_url
string or null

The URL from which the document was retrieved

document_date
string or null <date-time>

The publication date of the document

note
string or null

Notes, in HTML.

tags
Array of strings or null

A set of tags

source_id
string or null <uuid>

The identifier for the source

classification_id
string or null <uuid>

The identifier for the classification

Responses

Request samples

Content type
{
  • "title": "Hardware-based threat defense against increasingly complex cryptojackers",
  • "summary": "<p>Even with the dip in the value of cryptocurrencies in the past few months, cryptojackers – trojanized coin miners that attackers distribute to use compromised devices’ computing power for their objectives – continue to be widespread. In the past several months, Microsoft Defender Antivirus detected cryptojackers on hundreds of thousands of devices every month. These threats also continue to evolve: recent cryptojackers have become stealthier, leveraging living-off-the-land binaries (LOLBins) to evade detection.</p>",
  • "external_reference": "18-12450234",
  • "document_date": "2022-08-18T17:00:00",
  • "note": "string",
  • "tags": [
    ],
  • "source_id": "fa654749-fdd1-4f57-9ac5-9fcad4cca406",
  • "classification_id": "ad153066-0c0a-4ecc-914b-e5876c8d3787"
}

Response samples

Content type
application/json
{
  • "document_id": "ca913805-ae9f-47fe-8e90-b20fb29fb72f",
  • "reference": "DI-2022-09-084",
  • "source": {
    },
  • "classification": {
    },
  • "registration_date": "2022-09-28T15:26:04.347412",
  • "modification_date": "2022-09-19T19:01:02.824604",
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "status": 0,
  • "url": "hardware-based-threat-defense-against-increasingly-complex-cryptojackers",
  • "tags": [
    ],
  • "title": "Hardware-based threat defense against increasingly complex cryptojackers",
  • "summary": "<p>Even with the dip in the value of cryptocurrencies in the past few months, cryptojackers – trojanized coin miners that attackers distribute to use compromised devices’ computing power for their objectives – continue to be widespread. In the past several months, Microsoft Defender Antivirus detected cryptojackers on hundreds of thousands of devices every month. These threats also continue to evolve: recent cryptojackers have become stealthier, leveraging living-off-the-land binaries (LOLBins) to evade detection.</p>",
  • "external_reference": "18-12450234",
  • "document_date": "2022-08-18T17:00:00",
  • "note": "string",
  • "source_id": "fa654749-fdd1-4f57-9ac5-9fcad4cca406",
  • "classification_id": "ad153066-0c0a-4ecc-914b-e5876c8d3787"
}

Deletes a document

Deletes the specified document, the related files, and removes the references to the observable.

For example, with cURL

curl --request DELETE \
  --url http://localhost:5001/API/Document/6e7635a0-27bb-495d-a218-15b54cb938fd \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 6e7635a0-27bb-495d-a218-15b54cb938fd

The document identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Get the files

Get the facets

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Document/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Files \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The document identifier

Responses

Response samples

Content type
application/json
{
  • "registration_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "document": {
    },
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "classification": {
    },
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
  • "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",
  • "title": "string",
  • "mimetype": "string",
  • "file_date": "2019-08-24T14:15:22Z",
  • "source_url": "string",
  • "override_classification": true,
  • "classification_id": "47ac1861-59ea-4c4a-93ac-eecdeb4d654d",
  • "override_releasable_to": true,
  • "releasable_to_id": [
    ],
  • "override_eyes_only": true,
  • "eyes_only_id": [
    ],
  • "metadata": null,
  • "visible": true,
  • "preview": true,
  • "auto_generated": true
}

Upload a file

Upload a new file to a document.

For example, with cURL (for a file named report.pdf)

curl --request POST \
  --url http://localhost:5001/API/Document/08a7474f-1912-4617-9ec4-b0bae39ed84a/Files \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/pdf' \
  --data-binary @report.pdf
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The document identifier

Responses

Response samples

Content type
application/json
{
  • "registration_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "document": {
    },
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "classification": {
    },
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
  • "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",
  • "title": "string",
  • "mimetype": "string",
  • "file_date": "2019-08-24T14:15:22Z",
  • "source_url": "string",
  • "override_classification": true,
  • "classification_id": "47ac1861-59ea-4c4a-93ac-eecdeb4d654d",
  • "override_releasable_to": true,
  • "releasable_to_id": [
    ],
  • "override_eyes_only": true,
  • "eyes_only_id": [
    ],
  • "metadata": null,
  • "visible": true,
  • "preview": true,
  • "auto_generated": true
}

Get observables

Returns all observables referenced in a document

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Observable/6EB0681C-9E7B-48A8-AA72-50DD1CF00506 \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 6EB0681C-9E7B-48A8-AA72-50DD1CF00506

The document identifier

Responses

Response samples

Content type
No sample

Reference an observable

Mark an observable, created if necessary, as referenced by a document. The observable is added to the main layer if the document is registered, and to the layer to be reviewed if not.

Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>

The document identifier

Request Body schema:

The observable to create

type
string or null

The observable data form, as in Synapse Data Model.

value
string or null

The observable value

tags
Array of strings or null

The tags

object or null

The additional properties

Responses

Request samples

Content type
{
  • "type": "string",
  • "value": "string",
  • "tags": [
    ],
  • "properties": {
    }
}

Response samples

Content type
No sample

Dereference an observable

Removes an observable from the document references.

Authorizations:
Bearer
path Parameters
observableId
required
string

The observable identifier

documentId
required
string <uuid>

The document identifier

Responses

Response samples

Content type
No sample

Facet

Facets in DocIntel are bags of tags. Facets are used to group coherent set of tags such as actors, geographical regions, etc. Facets can be mandatory, forcing users to select at least one tag. Hidden facets are not displayed in search results and are only displayed on detailed pages. Last, facets control the automated extraction of tags during the pre-processing. Facets with a specified regular expression will create new tags with matching expression, otherwise, when enabled, only tags with be matched when found.

Facets Attributes

Attribute Description
FacetId The identifier
Title The title
Prefix The facet prefix
Description The description
Mandatory Whether the facet is mandatory
Hidden Whether the facet is not shown in search results
ExtractionRegex The regular expression used when extracting new tags
AutoExtract Whether tags of the facet should be matched and extracted
TagNormalization Normalization of the tags (Valid values are "", "camelize", "capitalize", "downcase", "handleize", "upcase")
CreationDate The creation date
ModificationDate The last modification date

Facets Relationships

Relationship Description
Tags The tags
RegisteredBy The user who registered the facet
LastModifiedBy The user who last modified the facet

Get facets

Get the facets

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Facet \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a facet

Creates a new facet.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Facet/ \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "title": "My facet",
  "prefix": "myFacet",
  "description": "<p>A simple facet</p>",
  "mandatory": false,
  "hidden": false,
  "extractionRegex": "",
  "autoExtract": true,
  "tagNormalization": "upcase"
}'
Authorizations:
Bearer
Request Body schema:

The facet

title
string or null

The title

prefix
string or null

The prefix

description
string or null

The description

mandatory
boolean

Whether the facet is mandatory

hidden
boolean

Whether the facet is displayed in search results

extraction_regex
string or null

The regex to use for extracting new tags

auto_extract
boolean

Whether the tags should be extracted

tag_normalization
string or null

How tags should be normalized

Responses

Request samples

Content type
{
  • "title": "string",
  • "prefix": "string",
  • "description": "string",
  • "mandatory": true,
  • "hidden": true,
  • "extraction_regex": "string",
  • "auto_extract": true,
  • "tag_normalization": "string"
}

Response samples

Content type
application/json
{
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "created_by": {
    },
  • "last_modified_by": {
    },
  • "tags": [
    ],
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "title": "string",
  • "prefix": "string",
  • "description": "string",
  • "mandatory": true,
  • "hidden": true,
  • "extraction_regex": "string",
  • "auto_extract": true,
  • "tag_normalization": "string"
}

Get a facet

Gets the details of the facet.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Facet/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The facet identifier

Responses

Response samples

Content type
application/json
{
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "created_by": {
    },
  • "last_modified_by": {
    },
  • "tags": [
    ],
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "title": "string",
  • "prefix": "string",
  • "description": "string",
  • "mandatory": true,
  • "hidden": true,
  • "extraction_regex": "string",
  • "auto_extract": true,
  • "tag_normalization": "string"
}

Update a facet

Updates a facet

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/Facet/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "title": "My (updated) facet",
  "prefix": "myFacet",
  "description": "<p>A simple facet</p>",
  "mandatory": false,
  "hidden": false,
  "extractionRegex": "",
  "autoExtract": true,
  "tagNormalization": "upcase"
}'
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: 640afad4-0a3d-416a-b6f0-22cb85e0d638

The facet identifier

Request Body schema:

The updated facet

title
string or null

The title

prefix
string or null

The prefix

description
string or null

The description

mandatory
boolean

Whether the facet is mandatory

hidden
boolean

Whether the facet is displayed in search results

extraction_regex
string or null

The regex to use for extracting new tags

auto_extract
boolean

Whether the tags should be extracted

tag_normalization
string or null

How tags should be normalized

Responses

Request samples

Content type
{
  • "title": "string",
  • "prefix": "string",
  • "description": "string",
  • "mandatory": true,
  • "hidden": true,
  • "extraction_regex": "string",
  • "auto_extract": true,
  • "tag_normalization": "string"
}

Response samples

Content type
application/json
{
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "created_by": {
    },
  • "last_modified_by": {
    },
  • "tags": [
    ],
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "title": "string",
  • "prefix": "string",
  • "description": "string",
  • "mandatory": true,
  • "hidden": true,
  • "extraction_regex": "string",
  • "auto_extract": true,
  • "tag_normalization": "string"
}

Deletes a facet

Deletes the specified facet and the enclosed tags,

For example, with cURL

curl --request DELETE \
  --url http://localhost:5001/API/Facet/6e7635a0-27bb-495d-a218-15b54cb938fd \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: 6e7635a0-27bb-495d-a218-15b54cb938fd

The facet identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Merge two facets

Merges two facets.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Facet/a28a36ec-88a4-4dfc-a241-de602c530998/Merge/1902bfa6-2fd7-4a8a-bc22-33b3fbbdd660 \
  --header 'Authorization: Bearer $TOKEN' \
Authorizations:
Bearer
path Parameters
primaryId
required
string <uuid>
Example: a28a36ec-88a4-4dfc-a241-de602c530998

The identifier of the facet to keep

secondaryId
required
string <uuid>
Example: 1902bfa6-2fd7-4a8a-bc22-33b3fbbdd660

The identifier of the facet to remove

Responses

Response samples

Content type
application/json
{
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "created_by": {
    },
  • "last_modified_by": {
    },
  • "tags": [
    ],
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "title": "string",
  • "prefix": "string",
  • "description": "string",
  • "mandatory": true,
  • "hidden": true,
  • "extraction_regex": "string",
  • "auto_extract": true,
  • "tag_normalization": "string"
}

Get subscription status

Gets whether the user is subscribed to the facet.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Facet/4a9ef072-0cc5-41f8-b42a-a018ef4fb4b8/Subscription \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: 4a9ef072-0cc5-41f8-b42a-a018ef4fb4b8

The facet identifier

Responses

Response samples

Content type
application/json
{
  • "subscribed": true,
  • "notify": true
}

Subscribe to a facet

Subscribe to the facet. The body indicates whether the user should receive a notification when the facet changes.

For example, with cURL

curl --request PUT \
  --url http://localhost:5001/API/Facet/a203c3dd-72e2-488f-a999-a4a8a7acd0a8/Subscribe \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data false
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: a203c3dd-72e2-488f-a999-a4a8a7acd0a8

The facet identifier

Request Body schema:

Whether the user needs to be notified

boolean
Default: false

Responses

Request samples

Content type
false

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Unsubscribe to a facet

Unsubscribe to the facet.

For example, with cURL

curl --request PUT \
  --url http://localhost:5001/API/Facet/a203c3dd-72e2-488f-a999-a4a8a7acd0a8/Unsubscribe \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json'
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: a203c3dd-72e2-488f-a999-a4a8a7acd0a8

The facet identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Get the facet tags

Get the tags for a facet

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Facet/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Tags \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The facet identifier

Responses

Response samples

Content type
application/json
[
  • {
    }
]

File

Files in DocIntel are the computer files enclosed within a document.

Document Attributes

Attribute Description
FileId The file identifier
DocumentId The document identifier
Title The tile
MimeType The mime type
FileDate The file date
RegistrationDate The registration date
ModificationDate The modification date
SourceUrl The URL at which the document was found
OverrideClassification Whether classification is overriden
ClassificationId The new classification, if applicable
OverrideReleasableTo Whether releasable to groups are overriden
ReleasableToId The new releasable to groups, if applicable
OverrideEyesOnly Whether the eyes only groups are overriden
EyesOnlyId The new eyes only groups, if applicable
MetaData The metadata
Visible Whether the file is visible by default
Preview Whether the preview is enabled
AutoGenerated Whether the file was automatically generated

Document Relationships

Relationship Description
Document The associated document
RegisteredBy The user who registered the document
LastModifiedBy The last modifier
Classification The new classification, if applicable
ReleasableTo The new releasable to groups, if applicable
EyesOnly The new eyes only groups, if applicable

Get a file

Gets the details of the file.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/File/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
fileId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The file identifier

Responses

Response samples

Content type
application/json
{
  • "registration_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "document": {
    },
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "classification": {
    },
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
  • "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",
  • "title": "string",
  • "mimetype": "string",
  • "file_date": "2019-08-24T14:15:22Z",
  • "source_url": "string",
  • "override_classification": true,
  • "classification_id": "47ac1861-59ea-4c4a-93ac-eecdeb4d654d",
  • "override_releasable_to": true,
  • "releasable_to_id": [
    ],
  • "override_eyes_only": true,
  • "eyes_only_id": [
    ],
  • "metadata": null,
  • "visible": true,
  • "preview": true,
  • "auto_generated": true
}

Update a file

Updates a file

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/File/21b6ff94-fed8-4569-9d03-352941bdd59d \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "My custom report 2"
}'
Authorizations:
Bearer
path Parameters
fileId
required
string <uuid>
Example: 640afad4-0a3d-416a-b6f0-22cb85e0d638

The file identifier

Request Body schema:

The updated file

document_id
string <uuid>

The document identifier

title
string or null

The title

mimetype
string or null

The mime type of the document

file_date
string or null <date-time>

The file date

source_url
string or null

The URL from which the file was downloaded

override_classification
boolean or null

Whether classification is overriden

classification_id
string or null <uuid>

The new classification is any

override_releasable_to
boolean or null

Whether releasable to is overriden

releasable_to_id
Array of strings or null <uuid>

The new releasable to is any

override_eyes_only
boolean or null

Whether eye only to is overriden

eyes_only_id
Array of strings or null <uuid>

The new eyes only to is any

metadata
any or null

The meta data

visible
boolean or null

Whether the file is visible by default

preview
boolean or null

Whether the file preview is available

auto_generated
boolean or null

Whether the file was automatically generated.

Responses

Request samples

Content type
{
  • "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",
  • "title": "string",
  • "mimetype": "string",
  • "file_date": "2019-08-24T14:15:22Z",
  • "source_url": "string",
  • "override_classification": true,
  • "classification_id": "47ac1861-59ea-4c4a-93ac-eecdeb4d654d",
  • "override_releasable_to": true,
  • "releasable_to_id": [
    ],
  • "override_eyes_only": true,
  • "eyes_only_id": [
    ],
  • "metadata": null,
  • "visible": true,
  • "preview": true,
  • "auto_generated": true
}

Response samples

Content type
application/json
{
  • "registration_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "document": {
    },
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "classification": {
    },
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
  • "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",
  • "title": "string",
  • "mimetype": "string",
  • "file_date": "2019-08-24T14:15:22Z",
  • "source_url": "string",
  • "override_classification": true,
  • "classification_id": "47ac1861-59ea-4c4a-93ac-eecdeb4d654d",
  • "override_releasable_to": true,
  • "releasable_to_id": [
    ],
  • "override_eyes_only": true,
  • "eyes_only_id": [
    ],
  • "metadata": null,
  • "visible": true,
  • "preview": true,
  • "auto_generated": true
}

Deletes a file

Deletes the specified file,

For example, with cURL

curl --request DELETE \
  --url http://localhost:5001/API/File/6e7635a0-27bb-495d-a218-15b54cb938fd \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
fileId
required
string <uuid>
Example: 6e7635a0-27bb-495d-a218-15b54cb938fd

The file identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Download a file

Gets the details of the file.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/File/640afad4-0a3d-416a-b6f0-22cb85e0d638/Download \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
fileId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The file identifier

Responses

Response samples

Content type
No sample

Get the files

Get the facets

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Document/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Files \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The document identifier

Responses

Response samples

Content type
application/json
{
  • "registration_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "document": {
    },
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "classification": {
    },
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
  • "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",
  • "title": "string",
  • "mimetype": "string",
  • "file_date": "2019-08-24T14:15:22Z",
  • "source_url": "string",
  • "override_classification": true,
  • "classification_id": "47ac1861-59ea-4c4a-93ac-eecdeb4d654d",
  • "override_releasable_to": true,
  • "releasable_to_id": [
    ],
  • "override_eyes_only": true,
  • "eyes_only_id": [
    ],
  • "metadata": null,
  • "visible": true,
  • "preview": true,
  • "auto_generated": true
}

Upload a file

Upload a new file to a document.

For example, with cURL (for a file named report.pdf)

curl --request POST \
  --url http://localhost:5001/API/Document/08a7474f-1912-4617-9ec4-b0bae39ed84a/Files \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/pdf' \
  --data-binary @report.pdf
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The document identifier

Responses

Response samples

Content type
application/json
{
  • "registration_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "document": {
    },
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "classification": {
    },
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
  • "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",
  • "title": "string",
  • "mimetype": "string",
  • "file_date": "2019-08-24T14:15:22Z",
  • "source_url": "string",
  • "override_classification": true,
  • "classification_id": "47ac1861-59ea-4c4a-93ac-eecdeb4d654d",
  • "override_releasable_to": true,
  • "releasable_to_id": [
    ],
  • "override_eyes_only": true,
  • "eyes_only_id": [
    ],
  • "metadata": null,
  • "visible": true,
  • "preview": true,
  • "auto_generated": true
}

Group

Groups in DocIntel controls who can see the information. Users can be part of multiple groups. An instance has default groups, document and files are always considered as releasable to these groups (most often, the default groups correspond to the team managing the DocIntel instance). Note that users do not belong to these groups by default. The groups are used to decorate documents and files with 'Releasable to' and 'Eyes Only' list of groups. Groups used in 'Releasable to' are used to indicate who can view the document. For example, a document releasable to 'CTI Summit 2022' can be seen by any member of the group 'CTI Summit 2022'. Because all documents are releasable to default groups, the users belonging to the default groups will also see the document. If you want the document to be only seen by members of 'CTI Summit 2022' but not the default groups, you can use 'Eyes only' groups.

Hidden groups are groups only visible to its member, like the fight club. Groups are hierarchical, a user member of a sub-group is also a member of the parent groups.

Group Attributes

Attribute Description
GroupId The identifier
Name The name
Description The description
Default Whether the group is default
Hidden Whether the group is hidden
ParentGroupId The identifier of the parent group
CreationDate The creation date
ModificationDate The last modification date

Group Relationship

Attribute Description
ParentGroup The parent group
Members The users member of the group

Get groups

Returns all groups.

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Group \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a group

Creates a new group

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Group \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Fight Club",
  "description": "<p>The fight club</p>",
  "default": false,
  "hidden": true,
  "parentGroupId": null
}'
Authorizations:
Bearer
Request Body schema:

The group to create

name
string or null

The name

description
string or null

The description

default
boolean

Whether the group is a default group

hidden
boolean

Whether the group is hidden

parentGroupId
string or null <uuid>

The parent group, if any.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "default": true,
  • "hidden": true,
  • "parentGroupId": "e5e63afb-859b-44be-b014-ce932bd8bf74"
}

Response samples

Content type
application/json
{
  • "creationDate": "2019-08-24T14:15:22Z",
  • "modificationDate": "2019-08-24T14:15:22Z",
  • "parentGroup": { },
  • "members": [
    ],
  • "group_id": "306db4e0-7449-4501-b76f-075576fe2d8f",
  • "name": "string",
  • "description": "string",
  • "default": true,
  • "hidden": true,
  • "parentGroupId": "e5e63afb-859b-44be-b014-ce932bd8bf74"
}

Get group details

Returns the details of a group.

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Group/04573fca-f1b1-48a4-b55b-b26b8c09bb9d \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
groupId
required
string <uuid>
Example: 7dd7bdd3-05c3-cc34-c560-8cc94664f810

The identifier of the group

Responses

Response samples

Content type
application/json
{
  • "creationDate": "2019-08-24T14:15:22Z",
  • "modificationDate": "2019-08-24T14:15:22Z",
  • "parentGroup": { },
  • "members": [
    ],
  • "group_id": "306db4e0-7449-4501-b76f-075576fe2d8f",
  • "name": "string",
  • "description": "string",
  • "default": true,
  • "hidden": true,
  • "parentGroupId": "e5e63afb-859b-44be-b014-ce932bd8bf74"
}

Update a group

Updates the group specified in the route with the provided body.

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/Group/f740b67b-4c2e-4d78-81e2-399f5449412e \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Fight Club II",
  "description": "<p>The second fight club</p>",
  "default": false,
  "hidden": true,
  "parentGroupId": null
}'
Authorizations:
Bearer
path Parameters
groupId
required
string <uuid>
Example: f740b67b-4c2e-4d78-81e2-399f5449412e

The identifier of the group to update

Request Body schema:

The updated group

name
string or null

The name

description
string or null

The description

default
boolean

Whether the group is a default group

hidden
boolean

Whether the group is hidden

parentGroupId
string or null <uuid>

The parent group, if any.

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "default": true,
  • "hidden": true,
  • "parentGroupId": "e5e63afb-859b-44be-b014-ce932bd8bf74"
}

Response samples

Content type
application/json
{
  • "creationDate": "2019-08-24T14:15:22Z",
  • "modificationDate": "2019-08-24T14:15:22Z",
  • "parentGroup": { },
  • "members": [
    ],
  • "group_id": "306db4e0-7449-4501-b76f-075576fe2d8f",
  • "name": "string",
  • "description": "string",
  • "default": true,
  • "hidden": true,
  • "parentGroupId": "e5e63afb-859b-44be-b014-ce932bd8bf74"
}

Delete a group

Deletes the group specified in the route.

curl --request DELETE \
  --url http://localhost:5001/API/Group/8cdb94c2-f24e-4e04-bfa7-b6f13bdd7fe9 \
  --header 'Authorization: Bearer $TOKEN' \
Authorizations:
Bearer
path Parameters
groupId
required
string <uuid>
Example: f740b67b-4c2e-4d78-81e2-399f5449412e

The group identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Observable

Observables are technical elements such as IP addresses, or domain names that allow analyst to detect, respond, or understand cyber threats. Observables in DocIntel are at their infancy although the underlying model is very mature, as seen in Synapse documentation.

Observable Attributes

  • Iden: The identifier
  • Type: The type
  • Value: The value
  • Tags: The associated tags (these are not DocIntel tags, but Synapse tags)
  • Properties: The properties

Get observables

Returns all observables referenced in a document

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Observable/6EB0681C-9E7B-48A8-AA72-50DD1CF00506 \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>
Example: 6EB0681C-9E7B-48A8-AA72-50DD1CF00506

The document identifier

Responses

Response samples

Content type
No sample

Get observable details

Returns the details of an observable.

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Observable/64cbe362c8b2c6df61e0d264fc55c1a6454d407dc5048a0445480907aedc1487 \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
observableId
required
string
Example: 64cbe362c8b2c6df61e0d264fc55c1a6454d407dc5048a0445480907aedc1487

The identifier of the observable

Responses

Response samples

Content type
No sample

Create a observable

Creates a new observable. Currently, the endpoint only supports creating simple observables and will ignore the properties.

For example, with cURL

Authorizations:
Bearer
Request Body schema:

The observable to create

type
string or null

The observable data form, as in Synapse Data Model.

value
string or null

The observable value

tags
Array of strings or null

The tags

object or null

The additional properties

Responses

Request samples

Content type
{
  • "type": "string",
  • "value": "string",
  • "tags": [
    ],
  • "properties": {
    }
}

Response samples

Content type
No sample

Reference an observable

Mark an observable, created if necessary, as referenced by a document. The observable is added to the main layer if the document is registered, and to the layer to be reviewed if not.

Authorizations:
Bearer
path Parameters
documentId
required
string <uuid>

The document identifier

Request Body schema:

The observable to create

type
string or null

The observable data form, as in Synapse Data Model.

value
string or null

The observable value

tags
Array of strings or null

The tags

object or null

The additional properties

Responses

Request samples

Content type
{
  • "type": "string",
  • "value": "string",
  • "tags": [
    ],
  • "properties": {
    }
}

Response samples

Content type
No sample

Dereference an observable

Removes an observable from the document references.

Authorizations:
Bearer
path Parameters
observableId
required
string

The observable identifier

documentId
required
string <uuid>

The document identifier

Responses

Response samples

Content type
No sample

RewritingRule

Rewriting rules in DocIntel allow tags to be rewritten.

Document Attributes

Attribute Description
RuleId The rule identifier
RuleSetId The set identifier
Name The name
Description The description
Position The position within the set
SearchPattern The regular expression pattern to search
Replacement The replacement expression

Document Relationships

Relationship Description
ImportRuleSet The associated rule set

Get the rules of a set

Get the rules of a rule set

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/RewritingRuleSet/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Rules \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
setId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The et identifier

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a rule

Creates a new rule for a ruleset.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/RewritingRuleSet/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Rules \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "TLP white to clear",
  "description": "<p>Ensure that latest version of TLP is used.</p>",
  "position": 0,
  "search_pattern": "tlp:white",
  "replacement": "tlp:clear"
}'
Authorizations:
Bearer
path Parameters
setId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The facet identifier

Request Body schema:

The rule

position
integer <int32>
name
string or null
description
string or null
search_pattern
string or null
replacement
string or null

Responses

Request samples

Content type
{
  • "position": 0,
  • "name": "string",
  • "description": "string",
  • "search_pattern": "string",
  • "replacement": "string"
}

Response samples

Content type
application/json
{
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "rule_set_id": "d9347d2e-8fc3-4254-806b-a802f013e519",
  • "ruleSet": {
    },
  • "position": 0,
  • "name": "string",
  • "description": "string",
  • "search_pattern": "string",
  • "replacement": "string"
}

Get a rule

Gets the details of the rewriting rule.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/RewritingRule/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
ruleId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The rule identifier

Responses

Response samples

Content type
application/json
{
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "rule_set_id": "d9347d2e-8fc3-4254-806b-a802f013e519",
  • "ruleSet": {
    },
  • "position": 0,
  • "name": "string",
  • "description": "string",
  • "search_pattern": "string",
  • "replacement": "string"
}

Update a rule

Updates a rewriting rule,

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/RewritingRule/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2 \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "TLP white to clear",
  "description": "<p>Ensure that latest version of TLP is used.</p>",
  "position": 0,
  "search_pattern": "tlp:white",
  "replacement": "tlp:clear"
}'
Authorizations:
Bearer
path Parameters
ruleId
required
string <uuid>
Example: 640afad4-0a3d-416a-b6f0-22cb85e0d638

The rule identifier

Request Body schema:

The updated rule

position
integer <int32>
name
string or null
description
string or null
search_pattern
string or null
replacement
string or null

Responses

Request samples

Content type
{
  • "position": 0,
  • "name": "string",
  • "description": "string",
  • "search_pattern": "string",
  • "replacement": "string"
}

Response samples

Content type
application/json
{
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "rule_set_id": "d9347d2e-8fc3-4254-806b-a802f013e519",
  • "ruleSet": {
    },
  • "position": 0,
  • "name": "string",
  • "description": "string",
  • "search_pattern": "string",
  • "replacement": "string"
}

Deletes a rule

Deletes the specified rule,

For example, with cURL

curl --request DELETE \
  --url http://localhost:5001/API/RewritingRule/6e7635a0-27bb-495d-a218-15b54cb938fd \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
ruleId
required
string <uuid>
Example: 6e7635a0-27bb-495d-a218-15b54cb938fd

The rule identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

RewritingRuleSet

Rewriting rule sets in DocIntel organize the rewriting rules into coherent and manageable sets of rewriting rules.

Document Attributes

Attribute Description
RuleSetId The set identifier
Name The name
Description The description
Position The position

Document Relationships

Relationship Description
Rules The associated rules

Get the rules of a set

Get the rules of a rule set

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/RewritingRuleSet/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Rules \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
setId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The et identifier

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get rule sets

Get the rewriting rule sets

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/RewritingRuleSet \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a rule set

Creates a rewriting rule set.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/RewritingRuleSet/ \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "title": "My set",
  "description": "<p>My set description</p>",
  "position": 0
}'
Authorizations:
Bearer
Request Body schema:

The set

name
string or null
description
string or null
position
integer <int32>

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "position": 0
}

Response samples

Content type
application/json
{
  • "rule_set_id": "d9347d2e-8fc3-4254-806b-a802f013e519",
  • "rules": [
    ],
  • "name": "string",
  • "description": "string",
  • "position": 0
}

Get a rule set

Gets the details of the rewriting rule set.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/RewritingRuleSet/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
setId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The set identifier

Responses

Response samples

Content type
application/json
{
  • "rule_set_id": "d9347d2e-8fc3-4254-806b-a802f013e519",
  • "rules": [
    ],
  • "name": "string",
  • "description": "string",
  • "position": 0
}

Update a rule set

Updates a rewriting rule set

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/RewritingRuleSet/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Tags \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "title": "My (updated) set",
  "description": "<p>My set description</p>",
  "position": 0
}'
Authorizations:
Bearer
path Parameters
setId
required
string <uuid>
Example: 640afad4-0a3d-416a-b6f0-22cb85e0d638

The set identifier

Request Body schema:

The updated set

name
string or null
description
string or null
position
integer <int32>

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "position": 0
}

Response samples

Content type
application/json
{
  • "rule_set_id": "d9347d2e-8fc3-4254-806b-a802f013e519",
  • "rules": [
    ],
  • "name": "string",
  • "description": "string",
  • "position": 0
}

Deletes a rule set

Deletes the specified rewriting rule set,

For example, with cURL

curl --request DELETE \
  --url http://localhost:5001/API/RewritingRuleSet/6e7635a0-27bb-495d-a218-15b54cb938fd \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
setId
required
string <uuid>
Example: 6e7635a0-27bb-495d-a218-15b54cb938fd

The set identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Role

Roles in DocIntel controls the actions a user can perform. A user can belong to many roles and his permissions are the union of the permissions in the roles.

Group Attributes

Attribute Description
RoleId The identifier
Name The name
Description The description
Permissions An array of string indicating permissions
Slug The slug generated for URLs
CreatedById The identifier of the user who created the role
LastModifiedById The identifier of the user who last modified the role
CreationDate The creation date
ModificationDate The last modification date

Group Relationship

Attribute Description
Users The users assigned the role
CreatedBy The user who created the role
LastModifiedBy The user who last modified the role

Get roles

Returns all roles.

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Role \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a role

Creates a new role

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Group \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
      "name": "Fight Club",
      "description": "<p>The fight club</p>",
      "default": false,
      "hidden": true,
      "parentGroupId": null
    }'
Authorizations:
Bearer
Request Body schema:

The role to create

name
string or null
description
string or null
permissions
Array of strings or null

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "role_id": "string",
  • "slug": "string",
  • "creationDate": "2019-08-24T14:15:22Z",
  • "modificationDate": "2019-08-24T14:15:22Z",
  • "createdById": "string",
  • "createdBy": {
    },
  • "lastModifiedById": "string",
  • "lastModifiedBy": {
    },
  • "users": [
    ],
  • "name": "string",
  • "description": "string",
  • "permissions": [
    ]
}

Get role details

Returns the details of a role.

For example, with cURL

curl --request GET \
    --url http://localhost:5001/API/Role/04573fca-f1b1-48a4-b55b-b26b8c09bb9d \
    --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
roleId
required
string
Example: 7dd7bdd3-05c3-cc34-c560-8cc94664f810

The identifier of the role

Responses

Response samples

Content type
application/json
{
  • "role_id": "string",
  • "slug": "string",
  • "creationDate": "2019-08-24T14:15:22Z",
  • "modificationDate": "2019-08-24T14:15:22Z",
  • "createdById": "string",
  • "createdBy": {
    },
  • "lastModifiedById": "string",
  • "lastModifiedBy": {
    },
  • "users": [
    ],
  • "name": "string",
  • "description": "string",
  • "permissions": [
    ]
}

Update a role

Updates the role specified in the route with the provided body.

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/Group/f740b67b-4c2e-4d78-81e2-399f5449412e \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Fight Club II",
  "description": "<p>The second fight club</p>",
  "default": false,
  "hidden": true,
  "parentGroupId": null
}'
Authorizations:
Bearer
path Parameters
roleId
required
string
Example: f740b67b-4c2e-4d78-81e2-399f5449412e

The identifier of the role to update

Request Body schema:

The updated role

name
string or null
description
string or null
permissions
Array of strings or null

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "role_id": "string",
  • "slug": "string",
  • "creationDate": "2019-08-24T14:15:22Z",
  • "modificationDate": "2019-08-24T14:15:22Z",
  • "createdById": "string",
  • "createdBy": {
    },
  • "lastModifiedById": "string",
  • "lastModifiedBy": {
    },
  • "users": [
    ],
  • "name": "string",
  • "description": "string",
  • "permissions": [
    ]
}

Delete a role

Deletes the role specified in the route.

curl --request DELETE \
  --url http://localhost:5001/API/Role/8cdb94c2-f24e-4e04-bfa7-b6f13bdd7fe9 \
  --header 'Authorization: Bearer $TOKEN' \
Authorizations:
Bearer
path Parameters
roleId
required
string
Example: f740b67b-4c2e-4d78-81e2-399f5449412e

The role identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Importer

IndexImporter

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

DetailsImporter

Authorizations:
Bearer
path Parameters
importerId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "importerId": "2af23631-0f1c-4fa5-8df7-11e6d0589108",
  • "name": "string",
  • "description": "string",
  • "status": 0,
  • "collectionDelay": "string",
  • "lastCollection": "2019-08-24T14:15:22Z",
  • "fetchingUserId": "string",
  • "fetchingUser": {
    },
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "limit": 0,
  • "priority": 0,
  • "overrideClassification": true,
  • "classification": {
    },
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "overrideReleasableTo": true,
  • "releasableTo": [
    ],
  • "overrideEyesOnly": true,
  • "eyesOnly": [
    ]
}

EditImporter

Authorizations:
Bearer
path Parameters
importerId
required
string <uuid>
Request Body schema:
name
string or null
description
string or null
status
integer <int32> (ImporterStatus)
Enum: 0 1 2
collectionDelay
string <date-span>
fetchingUserId
string or null
settings
any or null
referenceClass
string <uuid>
limit
integer <int32>
priority
integer <int32>
overrideClassification
boolean
classificationId
string or null <uuid>
overrideReleasableTo
boolean
overrideEyesOnly
boolean
releasableToId
Array of strings or null <uuid>
eyesOnlyId
Array of strings or null <uuid>

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "status": 0,
  • "collectionDelay": "string",
  • "fetchingUserId": "string",
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "limit": 0,
  • "priority": 0,
  • "overrideClassification": true,
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "overrideReleasableTo": true,
  • "overrideEyesOnly": true,
  • "releasableToId": [
    ],
  • "eyesOnlyId": [
    ]
}

Response samples

Content type
application/json
{
  • "importerId": "2af23631-0f1c-4fa5-8df7-11e6d0589108",
  • "name": "string",
  • "description": "string",
  • "status": 0,
  • "collectionDelay": "string",
  • "lastCollection": "2019-08-24T14:15:22Z",
  • "fetchingUserId": "string",
  • "fetchingUser": {
    },
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "limit": 0,
  • "priority": 0,
  • "overrideClassification": true,
  • "classification": {
    },
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "overrideReleasableTo": true,
  • "releasableTo": [
    ],
  • "overrideEyesOnly": true,
  • "eyesOnly": [
    ]
}

DeleteImporter

Authorizations:
Bearer
path Parameters
importerId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

CreateImporter

Authorizations:
Bearer
path Parameters
moduleId
required
string <uuid>
Request Body schema:
name
string or null
description
string or null
status
integer <int32> (ImporterStatus)
Enum: 0 1 2
collectionDelay
string <date-span>
fetchingUserId
string or null
settings
any or null
referenceClass
string <uuid>
limit
integer <int32>
priority
integer <int32>
overrideClassification
boolean
classificationId
string or null <uuid>
overrideReleasableTo
boolean
overrideEyesOnly
boolean
releasableToId
Array of strings or null <uuid>
eyesOnlyId
Array of strings or null <uuid>

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "status": 0,
  • "collectionDelay": "string",
  • "fetchingUserId": "string",
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "limit": 0,
  • "priority": 0,
  • "overrideClassification": true,
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "overrideReleasableTo": true,
  • "overrideEyesOnly": true,
  • "releasableToId": [
    ],
  • "eyesOnlyId": [
    ]
}

Response samples

Content type
application/json
{
  • "importerId": "2af23631-0f1c-4fa5-8df7-11e6d0589108",
  • "name": "string",
  • "description": "string",
  • "status": 0,
  • "collectionDelay": "string",
  • "lastCollection": "2019-08-24T14:15:22Z",
  • "fetchingUserId": "string",
  • "fetchingUser": {
    },
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "limit": 0,
  • "priority": 0,
  • "overrideClassification": true,
  • "classification": {
    },
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "overrideReleasableTo": true,
  • "releasableTo": [
    ],
  • "overrideEyesOnly": true,
  • "eyesOnly": [
    ]
}

Scraper

IndexScraper

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

DetailsScraper

Authorizations:
Bearer
path Parameters
scraperId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
  • "name": "string",
  • "description": "string",
  • "enabled": true,
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "overrideSource": true,
  • "sourceId": "797f5a94-3689-4ac8-82fd-d749511ea2b2",
  • "source": {
    },
  • "skipInbox": true,
  • "position": 0,
  • "overrideClassification": true,
  • "classification": {
    },
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "overrideReleasableTo": true,
  • "overrideEyesOnly": true
}

EditScraper

Authorizations:
Bearer
path Parameters
scraperId
required
string <uuid>
Request Body schema:
name
string or null
description
string or null
enabled
boolean
settings
any or null
referenceClass
string <uuid>
overrideSource
boolean
sourceId
string or null <uuid>
skipInbox
boolean
position
integer <int32>
overrideClassification
boolean
classificationId
string or null <uuid>
releasableToId
Array of strings or null <uuid>
eyesOnlyId
Array of strings or null <uuid>
overrideReleasableTo
boolean
overrideEyesOnly
boolean

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "enabled": true,
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "overrideSource": true,
  • "sourceId": "797f5a94-3689-4ac8-82fd-d749511ea2b2",
  • "skipInbox": true,
  • "position": 0,
  • "overrideClassification": true,
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "releasableToId": [
    ],
  • "eyesOnlyId": [
    ],
  • "overrideReleasableTo": true,
  • "overrideEyesOnly": true
}

Response samples

Content type
application/json
{
  • "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
  • "name": "string",
  • "description": "string",
  • "enabled": true,
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "overrideSource": true,
  • "sourceId": "797f5a94-3689-4ac8-82fd-d749511ea2b2",
  • "source": {
    },
  • "skipInbox": true,
  • "position": 0,
  • "overrideClassification": true,
  • "classification": {
    },
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "overrideReleasableTo": true,
  • "overrideEyesOnly": true
}

DeleteScraper

Authorizations:
Bearer
path Parameters
scraperId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

CreateScraper

Authorizations:
Bearer
path Parameters
moduleId
required
string <uuid>
Request Body schema:
name
string or null
description
string or null
enabled
boolean
settings
any or null
referenceClass
string <uuid>
overrideSource
boolean
sourceId
string or null <uuid>
skipInbox
boolean
position
integer <int32>
overrideClassification
boolean
classificationId
string or null <uuid>
releasableToId
Array of strings or null <uuid>
eyesOnlyId
Array of strings or null <uuid>
overrideReleasableTo
boolean
overrideEyesOnly
boolean

Responses

Request samples

Content type
{
  • "name": "string",
  • "description": "string",
  • "enabled": true,
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "overrideSource": true,
  • "sourceId": "797f5a94-3689-4ac8-82fd-d749511ea2b2",
  • "skipInbox": true,
  • "position": 0,
  • "overrideClassification": true,
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "releasableToId": [
    ],
  • "eyesOnlyId": [
    ],
  • "overrideReleasableTo": true,
  • "overrideEyesOnly": true
}

Response samples

Content type
application/json
{
  • "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
  • "name": "string",
  • "description": "string",
  • "enabled": true,
  • "settings": null,
  • "referenceClass": "4698c3ee-c49f-46b9-828d-d028b9b7a433",
  • "overrideSource": true,
  • "sourceId": "797f5a94-3689-4ac8-82fd-d749511ea2b2",
  • "source": {
    },
  • "skipInbox": true,
  • "position": 0,
  • "overrideClassification": true,
  • "classification": {
    },
  • "classificationId": "be45c001-b173-48ff-ac91-3f6e45868c8b",
  • "releasableTo": [
    ],
  • "eyesOnly": [
    ],
  • "overrideReleasableTo": true,
  • "overrideEyesOnly": true
}

Search

Search for tags

Authorizations:
Bearer
Request Body schema:

The query

search_term
string or null
page
integer <int32>
page_size
integer <int32>

Responses

Request samples

Content type
{
  • "search_term": "string",
  • "page": 0,
  • "page_size": 0
}

Response samples

Content type
application/json
[
  • {
    }
]

Search for facets

Authorizations:
Bearer
Request Body schema:

The search query

search_term
string or null
page
integer <int32>
page_size
integer <int32>

Responses

Request samples

Content type
{
  • "search_term": "string",
  • "page": 0,
  • "page_size": 0
}

Response samples

Content type
application/json
[
  • {
    }
]

Search for sources

Authorizations:
Bearer
Request Body schema:

The search query

search_term
string or null
sort
integer <int32> (SourceSortCriteria)
Enum: 0 1 2 3
page
integer <int32>
page_size
integer <int32>
reliabilities
Array of integers or null <int32> (SourceReliability)
Enum: 0 1 2 3 4 5

Responses

Request samples

Content type
{
  • "search_term": "string",
  • "sort": 0,
  • "page": 0,
  • "page_size": 0,
  • "reliabilities": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Source

Get sources

Get the sources

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Source \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
query Parameters
page
integer <int32>
Default: 1
pageSize
integer <int32>
Default: 10

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a source

Creates a new source.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Source/ \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "title": "My source",
  "prefix": "mySource",
  "description": "<p>A simple source</p>",
  "mandatory": false,
  "hidden": false,
  "extractionRegex": "",
  "autoExtract": true,
  "tagNormalization": "upcase"
}'
Authorizations:
Bearer
Request Body schema:

The source

title
string or null

The title

description
string or null

The description

homepage
string or null

The URL to the homepage

rss
string or null

The URL to the syndication feed

facebook
string or null

The URL to the facebook page

twitter
string or null

The URL to the twitter page

reddit
string or null

The URL to the Reddit page

linkedIn
string or null

The URL to the LinkedIn page

keywords
Array of strings or null

The keywords used for search

reliability
integer <int32> (SourceReliability)
Enum: 0 1 2 3 4 5
country
string or null

The country code, in M49 format.

Responses

Request samples

Content type
{
  • "title": "string",
  • "description": "string",
  • "homepage": "string",
  • "rss": "string",
  • "facebook": "string",
  • "twitter": "string",
  • "reddit": "string",
  • "linkedIn": "string",
  • "keywords": [
    ],
  • "reliability": 0,
  • "country": "string"
}

Response samples

Content type
application/json
{
  • "source_id": "ae50a35c-df42-4eff-ba26-f8bc28d2af81",
  • "title": "string",
  • "description": "string",
  • "homepage": "string",
  • "rss": "string",
  • "facebook": "string",
  • "twitter": "string",
  • "reddit": "string",
  • "linkedIn": "string",
  • "keywords": [
    ],
  • "reliability": 0,
  • "country": "string"
}

Get a source

Gets the details of the source.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Source/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
sourceId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The source identifier

Responses

Response samples

Content type
application/json
{
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "registered_by": {
    },
  • "last_modified_by": {
    },
  • "source_id": "ae50a35c-df42-4eff-ba26-f8bc28d2af81",
  • "title": "string",
  • "description": "string",
  • "homepage": "string",
  • "rss": "string",
  • "facebook": "string",
  • "twitter": "string",
  • "reddit": "string",
  • "linkedIn": "string",
  • "keywords": [
    ],
  • "reliability": 0,
  • "country": "string"
}

Update a source

Updates a source

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/Source/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "title": "My (updated) source",
  "prefix": "mySource",
  "description": "<p>A simple source</p>",
  "mandatory": false,
  "hidden": false,
  "extractionRegex": "",
  "autoExtract": true,
  "tagNormalization": "upcase"
}'
Authorizations:
Bearer
path Parameters
sourceId
required
string <uuid>
Example: 640afad4-0a3d-416a-b6f0-22cb85e0d638

The source identifier

Request Body schema:

The updated source

title
string or null

The title

description
string or null

The description

homepage
string or null

The URL to the homepage

rss
string or null

The URL to the syndication feed

facebook
string or null

The URL to the facebook page

twitter
string or null

The URL to the twitter page

reddit
string or null

The URL to the Reddit page

linkedIn
string or null

The URL to the LinkedIn page

keywords
Array of strings or null

The keywords used for search

reliability
integer <int32> (SourceReliability)
Enum: 0 1 2 3 4 5
country
string or null

The country code, in M49 format.

Responses

Request samples

Content type
{
  • "title": "string",
  • "description": "string",
  • "homepage": "string",
  • "rss": "string",
  • "facebook": "string",
  • "twitter": "string",
  • "reddit": "string",
  • "linkedIn": "string",
  • "keywords": [
    ],
  • "reliability": 0,
  • "country": "string"
}

Response samples

Content type
application/json
{
  • "source_id": "ae50a35c-df42-4eff-ba26-f8bc28d2af81",
  • "title": "string",
  • "description": "string",
  • "homepage": "string",
  • "rss": "string",
  • "facebook": "string",
  • "twitter": "string",
  • "reddit": "string",
  • "linkedIn": "string",
  • "keywords": [
    ],
  • "reliability": 0,
  • "country": "string"
}

Deletes a source

Deletes the specified source and the enclosed tags,

For example, with cURL

curl --request DELETE \
  --url http://localhost:5001/API/Source/6e7635a0-27bb-495d-a218-15b54cb938fd \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
sourceId
required
string <uuid>
Example: 6e7635a0-27bb-495d-a218-15b54cb938fd

The source identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Merge two sources

Merges two sources.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Source/a28a36ec-88a4-4dfc-a241-de602c530998/Merge/1902bfa6-2fd7-4a8a-bc22-33b3fbbdd660 \
  --header 'Authorization: Bearer $TOKEN' \
Authorizations:
Bearer
path Parameters
primaryId
required
string <uuid>
Example: a28a36ec-88a4-4dfc-a241-de602c530998

The identifier of the source to keep

secondaryId
required
string <uuid>
Example: 1902bfa6-2fd7-4a8a-bc22-33b3fbbdd660

The identifier of the source to remove

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Get subscription status

Gets whether the user is subscribed to the source.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Source/4a9ef072-0cc5-41f8-b42a-a018ef4fb4b8/Subscription \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
sourceId
required
string <uuid>
Example: 4a9ef072-0cc5-41f8-b42a-a018ef4fb4b8

The source identifier

Responses

Response samples

Content type
application/json
{
  • "subscribed": true,
  • "notify": true
}

Subscribe to a source

Subscribe to the source. The body indicates whether the user should receive a notification when the source changes.

For example, with cURL

curl --request PUT \
  --url http://localhost:5001/API/Source/a203c3dd-72e2-488f-a999-a4a8a7acd0a8/Subscribe \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data false
Authorizations:
Bearer
path Parameters
sourceId
required
string <uuid>
Example: a203c3dd-72e2-488f-a999-a4a8a7acd0a8

The source identifier

Request Body schema:

Whether the user needs to be notified

boolean
Default: false

Responses

Request samples

Content type
false

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Unsubscribe to a source

Unsubscribe to the source.

For example, with cURL

curl --request PUT \
  --url http://localhost:5001/API/Source/a203c3dd-72e2-488f-a999-a4a8a7acd0a8/Unsubscribe \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json'
Authorizations:
Bearer
path Parameters
sourceId
required
string
query Parameters
id
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Suggest

Suggest tags

Authorizations:
Bearer
query Parameters
searchTerm
string
Default: ""

The search term

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Suggest facets

Authorizations:
Bearer
query Parameters
searchTerm
string
Default: ""

The search term

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Suggest sources

Authorizations:
Bearer
query Parameters
searchTerm
string
Default: ""

The search term

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Tag

Get tags

Get the tags

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Tag \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
query Parameters
page
integer <int32>
Default: 1

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get the facet tags

Get the tags for a facet

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Facet/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Tags \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The facet identifier

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a facet

Creates a new facet.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Facet/1ee4eac9-6d56-4665-bb78-6986dd6bf7a2/Tags \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "label": "My tag",
  "description": "<p>My tag description</p>",
  "keywords": [],
  "extractionKeywords": [],
  "backgroundColor": "bg-primary-500"
}'
Authorizations:
Bearer
path Parameters
facetId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The facet identifier

Request Body schema:

The tag

tag_id
string <uuid>

The tag identifier

label
string or null

The label

description
string or null

The description

keywords
Array of strings or null

The alternative keywords used for search

extractionKeywords
Array of strings or null

The keywords used for extraction

backgroundColor
string or null

The background color

facet_id
string or null <uuid>

The facet identifier

facet_prefix
string or null

The facet prefix

friendly_name
string or null

The friendly name

Responses

Request samples

Content type
{
  • "tag_id": "39c8a0b3-fbe8-4801-95bf-e8a0792edf1d",
  • "label": "string",
  • "description": "string",
  • "keywords": [
    ],
  • "extractionKeywords": [
    ],
  • "backgroundColor": "string",
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "facet_prefix": "string",
  • "friendly_name": "string"
}

Response samples

Content type
application/json
{
  • "created_by": {
    },
  • "last_modified_by": {
    },
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "facet": {
    },
  • "tag_id": "39c8a0b3-fbe8-4801-95bf-e8a0792edf1d",
  • "label": "string",
  • "description": "string",
  • "keywords": [
    ],
  • "extractionKeywords": [
    ],
  • "backgroundColor": "string",
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "facet_prefix": "string",
  • "friendly_name": "string"
}

SearchTag

Authorizations:
Bearer
query Parameters
searchTerm
string
Default: ""
page
integer <int32>
Default: 1

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a tag

Gets the details of the tag.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Tag/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
tagId
required
string <uuid>
Example: 1ee4eac9-6d56-4665-bb78-6986dd6bf7a2

The tag identifier

Responses

Response samples

Content type
application/json
{
  • "created_by": {
    },
  • "last_modified_by": {
    },
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "facet": {
    },
  • "tag_id": "39c8a0b3-fbe8-4801-95bf-e8a0792edf1d",
  • "label": "string",
  • "description": "string",
  • "keywords": [
    ],
  • "extractionKeywords": [
    ],
  • "backgroundColor": "string",
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "facet_prefix": "string",
  • "friendly_name": "string"
}

Update a tag

Updates a tag

For example, with cURL

curl --request PATCH \
  --url http://localhost:5001/API/Tag/640afad4-0a3d-416a-b6f0-22cb85e0d638 \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "label": "My (updated) tag",
  "description": "<p>My tag description</p>",
  "keywords": [],
  "extractionKeywords": [],
  "backgroundColor": "bg-primary-500"
}'
Authorizations:
Bearer
path Parameters
tagId
required
string <uuid>
Example: 640afad4-0a3d-416a-b6f0-22cb85e0d638

The tag identifier

Request Body schema:

The updated tag

tag_id
string <uuid>

The tag identifier

label
string or null

The label

description
string or null

The description

keywords
Array of strings or null

The alternative keywords used for search

extractionKeywords
Array of strings or null

The keywords used for extraction

backgroundColor
string or null

The background color

facet_id
string or null <uuid>

The facet identifier

facet_prefix
string or null

The facet prefix

friendly_name
string or null

The friendly name

Responses

Request samples

Content type
{
  • "tag_id": "39c8a0b3-fbe8-4801-95bf-e8a0792edf1d",
  • "label": "string",
  • "description": "string",
  • "keywords": [
    ],
  • "extractionKeywords": [
    ],
  • "backgroundColor": "string",
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "facet_prefix": "string",
  • "friendly_name": "string"
}

Response samples

Content type
application/json
{
  • "created_by": {
    },
  • "last_modified_by": {
    },
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "facet": {
    },
  • "tag_id": "39c8a0b3-fbe8-4801-95bf-e8a0792edf1d",
  • "label": "string",
  • "description": "string",
  • "keywords": [
    ],
  • "extractionKeywords": [
    ],
  • "backgroundColor": "string",
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "facet_prefix": "string",
  • "friendly_name": "string"
}

Deletes a tag

Deletes the specified tag,

For example, with cURL

curl --request DELETE \
  --url http://localhost:5001/API/Tag/6e7635a0-27bb-495d-a218-15b54cb938fd \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
tagId
required
string <uuid>
Example: 6e7635a0-27bb-495d-a218-15b54cb938fd

The tag identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Merge two tags

Merges two tags.

For example, with cURL

curl --request POST \
  --url http://localhost:5001/API/Tag/a28a36ec-88a4-4dfc-a241-de602c530998/Merge/1902bfa6-2fd7-4a8a-bc22-33b3fbbdd660 \
  --header 'Authorization: Bearer $TOKEN' \
Authorizations:
Bearer
path Parameters
primaryId
required
string <uuid>
Example: a28a36ec-88a4-4dfc-a241-de602c530998

The identifier of the tag to keep

secondaryId
required
string <uuid>
Example: 1902bfa6-2fd7-4a8a-bc22-33b3fbbdd660

The identifier of the tag to remove

Responses

Response samples

Content type
application/json
{
  • "created_by": {
    },
  • "last_modified_by": {
    },
  • "creation_date": "2019-08-24T14:15:22Z",
  • "modification_date": "2019-08-24T14:15:22Z",
  • "facet": {
    },
  • "tag_id": "39c8a0b3-fbe8-4801-95bf-e8a0792edf1d",
  • "label": "string",
  • "description": "string",
  • "keywords": [
    ],
  • "extractionKeywords": [
    ],
  • "backgroundColor": "string",
  • "facet_id": "07295cd2-55ef-4f0c-985e-783a000fdb3c",
  • "facet_prefix": "string",
  • "friendly_name": "string"
}

Get subscription status

Gets whether the user is subscribed to the tag.

For example, with cURL

curl --request GET \
  --url http://localhost:5001/API/Tag/4a9ef072-0cc5-41f8-b42a-a018ef4fb4b8/Subscription \
  --header 'Authorization: Bearer $TOKEN'
Authorizations:
Bearer
path Parameters
tagId
required
string <uuid>
Example: 4a9ef072-0cc5-41f8-b42a-a018ef4fb4b8

The tag identifier

Responses

Response samples

Content type
application/json
{
  • "subscribed": true,
  • "notify": true
}

Subscribe to a tag

Subscribe to the tag. The body indicates whether the user should receive a notification when the tag changes.

For example, with cURL

curl --request PUT \
  --url http://localhost:5001/API/Tag/a203c3dd-72e2-488f-a999-a4a8a7acd0a8/Subscribe \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data false
Authorizations:
Bearer
path Parameters
tagId
required
string <uuid>
Example: a203c3dd-72e2-488f-a999-a4a8a7acd0a8

The tag identifier

query Parameters
notification
boolean
Default: false

Whether the user needs to be notified

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Unsubscribe to a tag

Unsubscribe to the tag.

For example, with cURL

curl --request PUT \
  --url http://localhost:5001/API/Tag/a203c3dd-72e2-488f-a999-a4a8a7acd0a8/Unsubscribe \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json'
Authorizations:
Bearer
path Parameters
tagId
required
string <uuid>
Example: a203c3dd-72e2-488f-a999-a4a8a7acd0a8

The tag identifier

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}