swagger: '2.0' info: description: 'This is the public REST API to integrate with the demisto server. HTTP request can be sent using any HTTP-client. For an example dedicated client take a look at: https://github.com/demisto/demisto-py. Requests must include API-key that can be generated in the Demisto web client under ''Settings'' -> ''Integrations'' -> ''API keys'' Optimistic Locking and Versioning\: When using Demisto REST API, you will need to make sure to work on the latest version of the item (incident, entry, etc.), otherwise, you will get a DB version error (which not allow you to override a newer item). In addition, you can pass ''version\: -1'' to force data override (make sure that other users data might be lost). Assume that Alice and Bob both read the same data from Demisto server, then they both changed the data, and then both tried to write the new versions back to the server. Whose changes should be saved? Alice’s? Bob’s? To solve this, each data item in Demisto has a numeric incremental version. If Alice saved an item with version 4 and Bob trying to save the same item with version 3, Demisto will rollback Bob request and returns a DB version conflict error. Bob will need to get the latest item and work on it so Alice work will not get lost. Example request using ''curl''\: ``` curl ''https://hostname:443/incidents/search'' -H ''content-type: application/json'' -H ''accept: application/json'' -H ''Authorization: '' --data-binary ''{"filter":{"query":"-status:closed -category:job","period":{"by":"day","fromValue":7}}}'' --compressed ```' title: Demisto Apikeys Indicators API version: 2.0.0 host: hostname:443 schemes: - https consumes: - application/json - application/xml produces: - application/json security: - api_key: [] - csrf_token: [] - x-xdr-auth-id: [] tags: - name: Indicators paths: /indicators/batch/export/stix: post: description: Exports an indicators batch to STIX file (returns file ID) summary: Batch export indicators to STIX operationId: exportIndicatorsToStixBatch parameters: - name: genericIndicatorUpdateBatch in: body schema: $ref: '#/definitions/genericIndicatorUpdateBatch' responses: '200': description: STIX file name schema: type: string tags: - Indicators /indicators/batch/exportToCsv: post: description: Exports an indicators batch to CSV file (returns file ID) summary: Batch export indicators to csv operationId: exportIndicatorsToCsvBatch parameters: - description: 'Required parameters from `genericIndicatorUpdateBatch`: `columns`, `filter`. You should also include either `all` or `ids` ' name: genericIndicatorUpdateBatch in: body schema: $ref: '#/definitions/genericIndicatorUpdateBatch' responses: '200': description: csv file name schema: type: string tags: - Indicators /indicators/batchDelete: post: description: 'Batch whitelist or delete indicators entities In order to delete indicators and not whitelist, set doNotWhitelist boolean field to true' summary: Batch whitelist or delete indicators operationId: deleteIndicatorsBatch parameters: - name: genericIndicatorUpdateBatch in: body schema: $ref: '#/definitions/genericIndicatorUpdateBatch' responses: '200': description: UpdateResponse schema: $ref: '#/definitions/UpdateResponse' tags: - Indicators /indicators/csv/{id}: get: description: Get an indicators CSV file that was exported, by ID produces: - application/octet-stream summary: Get indicators as CSV operationId: getIndicatorsAsCsv parameters: - type: string description: CSV file to fetch (returned from batch export to csv call) name: id in: path required: true responses: '200': description: Return Csv file schema: type: file tags: - Indicators /indicators/feed/json: post: description: 'Create indicators from raw JSON (similar to ingesting from a feed). Builds indicators according to the specified feed classifier, or uses the default one if not specified. Indicator properties (all optional except for value): **value** (string, required) | **type** (string) | **score** (number, 0-3, default `0`, where `0` means None, `1` Good, `2` Suspicious, and `3` Bad) | **sourceBrand** (string, default `"External"`) | **sourceInstance** (string, default `"External"`) | **reliability** (string, one of `"A - Completely reliable"`, `"B - Usually reliable"`, `"C - Fairly reliable"`, `"D - Not usually reliable"`, `"E - Unreliable"`, `"F - Reliability cannot be judged"`) | **expirationPolicy** (string, one of `"never"`, `"interval"`, `"indicatorType"`) | **expirationInterval** (number, in minutes)' summary: Create feed indicators from JSON operationId: createFeedIndicatorsJson parameters: - name: FeedIndicatorsRequest in: body required: true schema: $ref: '#/definitions/FeedIndicatorsRequest' responses: '201': description: Indicators created tags: - Indicators /indicators/search: post: description: Search indicators by filter summary: Search indicators operationId: indicatorsSearch parameters: - name: IndicatorFilter in: body schema: $ref: '#/definitions/IndicatorFilter' responses: '200': description: indicatorResult schema: $ref: '#/definitions/IndicatorResult' tags: - Indicators /indicators/stix/v2/{id}: get: description: Get an indicators STIX V2 file that was exported, by ID produces: - application/octet-stream summary: Get indicators as STIX V2 operationId: getIndicatorsAsSTIX parameters: - type: string description: STIX V2 file to fetch (returned from batch export to STIX call) name: id in: path required: true responses: '200': description: Return STIX V2 file schema: type: file tags: - Indicators /indicators/upload: post: description: Create indicators from a file consumes: - multipart/form-data summary: Create indicators operationId: indicatorsCreateBatch parameters: - type: string description: file name name: fileName in: formData - type: file description: file name: file in: formData required: true responses: '200': description: IocObjects schema: $ref: '#/definitions/IocObjects' tags: - Indicators definitions: DBotScore: description: DBotScore - Contain the score of a specific brand for a specific insight type: object properties: content: type: string x-go-name: Content contentFormat: type: string x-go-name: ContentFormat context: type: object additionalProperties: type: object x-go-name: Context isTypedIndicator: type: boolean x-go-name: IsTypedIndicator score: type: integer format: int64 x-go-name: Score scoreChangeTimestamp: description: We need to track when the score changes to know if we need to re-calculate the overall score type: string format: date-time x-go-name: ScoreChangeTimeStamp timestamp: type: string format: date-time x-go-name: TimeStamp type: type: string x-go-name: Type x-go-package: github.com/demisto/server/domain InsightCache: description: InsightCache - map insight name to all its metadata, name will be case insensitive type: object properties: id: type: string x-go-name: ID modified: type: string format: date-time x-go-name: Modified scores: type: object additionalProperties: $ref: '#/definitions/DBotScore' x-go-name: Scores sequenceNumber: type: integer format: int64 x-go-name: SeqNum sortValues: type: array items: type: string x-go-name: SortValues version: type: integer format: int64 x-go-name: Versn x-go-package: github.com/demisto/server/domain RawFeedIndicator: description: RawFeedIndicator is an unparsed feed indicator from JSON ingestion type: object additionalProperties: type: object x-go-package: github.com/demisto/server/web genericIndicatorUpdateBatch: type: object properties: all: type: boolean x-go-name: All columns: type: array items: type: string x-go-name: Columns doNotWhitelist: type: boolean x-go-name: DoNotWhitelist filter: $ref: '#/definitions/IndicatorFilter' ids: type: array items: type: string x-go-name: IDs reason: type: string x-go-name: Reason reputations: type: array items: type: string x-go-name: Reputations x-go-package: github.com/demisto/server/web Duration: description: 'A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.' type: integer format: int64 x-go-package: time DateRangeFilter: description: DateRangeFilter provides common fields for date filtering type: object properties: fromDate: type: string format: date-time x-go-name: FromDate fromDateLicense: type: string format: date-time x-go-name: FromDateLicenseVal period: $ref: '#/definitions/Period' timeFrame: $ref: '#/definitions/Duration' toDate: type: string format: date-time x-go-name: ToDate x-go-package: github.com/demisto/server/repo/entities Order: description: Order struct holds a sort field and the direction of sorting type: object properties: asc: type: boolean x-go-name: Asc field: type: string x-go-name: Field fieldType: type: string x-go-name: FieldType x-go-package: github.com/demisto/server/domain CustomFields: description: 'The keys should be the field''s display name all lower and without spaces. For example: Scan IP -> scanip To get the actual key name you can also go to Demisto CLI and run /incident_add and look for the key that you would like to update' type: object title: CustomFields ... additionalProperties: type: object x-go-package: github.com/demisto/server/domain UpdateResponse: type: object title: UpdateResponse ... properties: notUpdated: type: integer format: int64 x-go-name: NotUpdated updatedIds: type: array items: type: string x-go-name: UpdatedIds x-go-package: github.com/demisto/server/repo/entities IocObjects: type: array title: IocObjects ... items: $ref: '#/definitions/IocObject' x-go-package: github.com/demisto/server/domain IocObject: description: IocObject - represents an Ioc (or simply an indicator) object type: object properties: CustomFields: $ref: '#/definitions/CustomFields' account: type: string x-go-name: Account calculatedTime: description: Do not set the fields bellow this line type: string format: date-time x-go-name: CalculatedTime comment: type: string x-go-name: Comment firstSeen: type: string format: date-time x-go-name: FirstSeen firstSeenEntryID: type: string x-go-name: FirstSeenEntryID id: type: string x-go-name: ID indicator_type: type: string x-go-name: IndicatorType insightCache: $ref: '#/definitions/InsightCache' investigationIDs: type: array items: type: string x-go-name: InvestigationIDs lastReputationRun: type: string format: date-time x-go-name: LastReputationRun lastSeen: type: string format: date-time x-go-name: LastSeen lastSeenEntryID: type: string x-go-name: LastSeenEntryID manualScore: type: boolean x-go-name: ManualScore manualSetTime: type: string format: date-time x-go-name: ManualSetTime manuallyEditedFields: type: array items: type: string x-go-name: ManuallyEditedFields modified: type: string format: date-time x-go-name: Modified score: type: integer format: int64 x-go-name: Score setBy: type: string x-go-name: SetBy sortValues: type: array items: type: string x-go-name: SortValues source: type: string x-go-name: Source timestamp: type: string format: date-time x-go-name: TimeStamp value: type: string x-go-name: Value version: type: integer format: int64 x-go-name: Versn x-go-package: github.com/demisto/server/domain FeedIndicatorsRequest: description: FeedIndicatorsRequest is the input for JSON feed indicator ingestion type: object properties: bypassExclusionList: type: boolean x-go-name: ShouldBypassExclusionList classifierId: type: string x-go-name: ClassifierID indicators: type: array items: $ref: '#/definitions/RawFeedIndicator' x-go-name: Indicators mapperId: type: string x-go-name: MapperID x-go-package: github.com/demisto/server/web IndicatorResult: type: object title: IndicatorResult ... properties: iocObjects: $ref: '#/definitions/IocObjects' total: type: integer format: int64 x-go-name: Total x-go-package: github.com/demisto/server/web Period: type: object title: Period holds the 'Period' query, such as last 3 days, last 6 hours, between 6 days from now until 3 days from now. properties: by: description: By is used for legacty, and if exists it will override ByTo and ByFrom type: string x-go-name: By byFrom: type: string x-go-name: ByFrom byTo: type: string x-go-name: ByTo field: type: string x-go-name: Field fromValue: type: string format: duration x-go-name: FromValue toValue: type: string format: duration x-go-name: ToValue x-go-package: github.com/demisto/server/domain IndicatorFilter: description: IndicatorFilter is a general filter that fetches entities using a query string query using the Query value type: object properties: Cache: description: Cache of join functions type: object additionalProperties: type: array items: type: string earlyTimeInPage: type: string format: date-time x-go-name: EarlyTimeInPage firstSeen: $ref: '#/definitions/DateRangeFilter' fromDate: type: string format: date-time x-go-name: FromDate fromDateLicense: type: string format: date-time x-go-name: FromDateLicenseVal lastSeen: $ref: '#/definitions/DateRangeFilter' laterTimeInPage: type: string format: date-time x-go-name: LaterTimeInPage page: description: 0-based page type: integer format: int64 x-go-name: Page period: $ref: '#/definitions/Period' prevPage: description: MT support - these fields are for indicator search according to calculatedTime type: boolean x-go-name: PrevPage query: type: string x-go-name: Query searchAfter: description: Efficient next page, pass max sort value from previous page type: array items: type: string x-go-name: SearchAfter searchBefore: description: Efficient prev page, pass min sort value from next page type: array items: type: string x-go-name: SearchBefore size: description: Size is limited to 1000, if not passed it defaults to 0, and no results will return type: integer format: int64 x-go-name: Size sort: description: The sort order type: array items: $ref: '#/definitions/Order' x-go-name: Sort timeFrame: $ref: '#/definitions/Duration' toDate: type: string format: date-time x-go-name: ToDate x-go-package: github.com/demisto/server/repo/entities securityDefinitions: api_key: type: apiKey name: Authorization in: header csrf_token: type: apiKey name: X-XSRF-TOKEN in: header x-xdr-auth-id: type: apiKey name: x-xdr-auth-id in: header