openapi: 3.0.1 info: title: Factset IRN API v1 description: Allows users to extract, create, update and configure IRN data. version: '1' externalDocs: description: API Documentation url: https://developer.factset.com/api-catalog/irn-notes-api#apiDocumentation servers: - url: https://api.factset.com/research/irn description: Production Server - url: https://api-sandbox.factset.com/research/irn description: Sandbox paths: /v1/events: get: tags: - Events summary: >- Factset Get all the record events in the specified date range filtered on the given types operationId: GetAllEvents parameters: - name: startDate in: query description: StartDate required: true schema: type: string - name: endDate in: query description: EndDate schema: type: string - name: types in: query description: Set of event types to filter on schema: type: array items: type: string responses: '200': description: Success - Returns events list content: text/plain: schema: type: array items: $ref: '#/components/schemas/EventSnippetDto' application/json: schema: type: array items: $ref: '#/components/schemas/EventSnippetDto' text/json: schema: type: array items: $ref: '#/components/schemas/EventSnippetDto' '400': description: Bad Request - Returns error message /v1/identifiers: get: tags: - Identifiers summary: Factset Get all the identifier details for given identifiers operationId: GetIdentifiers parameters: - name: identifiers in: query description: Identifiers schema: type: string responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/IdentifierResolutionDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' /v1/notes: get: tags: - Notes summary: >- Factset Get all the notes in the specified date range filtered on the given identifiers operationId: GetNotes parameters: - name: start in: query description: StartDate schema: type: string - name: end in: query description: EndDate schema: type: string - name: identifiers in: query description: Set of identifiers to filter on schema: type: array items: type: string - name: authors in: query description: Set of authors to filter on schema: type: array items: type: string format: uuid - name: subjects in: query description: Set of subjects to filter on schema: type: array items: type: string format: uuid - name: recommendations in: query description: Set of recommendations to filter on schema: type: array items: type: string format: uuid - name: sentiments in: query description: Set of sentiments to filter on schema: type: array items: type: string format: uuid - name: limit in: query description: Limit on the number of notes retrieved schema: type: integer format: int32 - name: offset in: query description: Fetch notes after the offset schema: type: integer format: int32 - name: modifiedSince in: query description: >- Only return notes which have been modified or created since a particular time schema: type: string - name: states in: query description: Set of states to filter on schema: type: array items: type: string - name: filterOnRelatedSymbols in: query description: Include notes whose related symbols match the identifier filter schema: type: boolean default: false - name: includeRelatedEntities in: query description: >- When set to true fetches notes tagged with all the entities related to identifiers param schema: type: boolean default: false - name: X-IRN-Include-Deleted in: header description: '' schema: type: boolean default: false responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/NoteSummaryDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' post: tags: - Notes summary: Factset Create a note operationId: CreateNote parameters: - name: X-IRN-Contributor-Username in: header schema: maxLength: 30 minLength: 0 type: string - name: X-IRN-Contributor-Serial in: header schema: maxLength: 8 minLength: 0 type: string requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/CreateNoteDto' application/json: schema: $ref: '#/components/schemas/CreateNoteDto' text/json: schema: $ref: '#/components/schemas/CreateNoteDto' application/*+json: schema: $ref: '#/components/schemas/CreateNoteDto' required: true responses: '201': description: Success - Returns unique identifier of the note created content: application/json: schema: $ref: '#/components/schemas/NewItemDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' /v1/notes/{noteId}: get: tags: - Notes summary: Factset Get details of a note operationId: GetNote parameters: - name: noteId in: path description: Note Id required: true schema: type: string format: uuid responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NoteDto' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' put: tags: - Notes summary: Factset Update a note operationId: UpdateNote parameters: - name: noteId in: path description: Note Id required: true schema: type: string format: uuid requestBody: description: Note details to update content: application/json-patch+json: schema: $ref: '#/components/schemas/UpdateNoteDto' application/json: schema: $ref: '#/components/schemas/UpdateNoteDto' text/json: schema: $ref: '#/components/schemas/UpdateNoteDto' application/*+json: schema: $ref: '#/components/schemas/UpdateNoteDto' responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' delete: tags: - Notes summary: Factset Delete a Note operationId: DeleteNote parameters: - name: noteId in: path required: true schema: type: string format: uuid responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' /v1/notes/{noteId}/attachments: get: tags: - Notes summary: Factset Get all the attachments belonging to a note operationId: GetAttachments parameters: - name: noteId in: path description: Note Id required: true schema: type: string format: uuid responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AttachmentSummaryDto' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' post: tags: - Notes summary: Factset Create an attachment for an existing note operationId: CreateAttachment parameters: - name: noteId in: path required: true schema: type: string format: uuid requestBody: content: multipart/form-data: schema: required: - file type: object properties: file: type: string format: binary responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/NewItemDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' /v1/notes/{noteId}/attachments/{attachmentId}/download: get: tags: - Notes summary: Factset Download an attachment from a Note operationId: DownloadAttachment parameters: - name: noteId in: path required: true schema: type: string format: uuid - name: attachmentId in: path required: true schema: type: string format: uuid responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' /v1/notes/{noteId}/comments: get: tags: - Notes summary: Factset Get all comments for a note operationId: GetComments parameters: - name: noteId in: path required: true schema: type: string format: uuid responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CommentSummaryDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' post: tags: - Notes summary: Factset Create a comment to a Note operationId: CreateComment parameters: - name: noteId in: path required: true schema: type: string format: uuid requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/CreateCommentDto' application/json: schema: $ref: '#/components/schemas/CreateCommentDto' text/json: schema: $ref: '#/components/schemas/CreateCommentDto' application/*+json: schema: $ref: '#/components/schemas/CreateCommentDto' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/NewItemDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '500': description: Server Error /v1/notes/{noteId}/comments/{commentId}: get: tags: - Notes summary: Factset Get details of a comment belonging to a note operationId: GetComment parameters: - name: noteId in: path required: true schema: type: string format: uuid - name: commentId in: path required: true schema: type: string format: uuid responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CommentDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' patch: tags: - Notes summary: Factset Edit a comment for a note operationId: PatchComment parameters: - name: noteId in: path required: true schema: type: string format: uuid - name: commentId in: path required: true schema: type: string format: uuid requestBody: content: application/json-patch+json: schema: type: array items: $ref: '#/components/schemas/Operation' application/json: schema: type: array items: $ref: '#/components/schemas/Operation' text/json: schema: type: array items: $ref: '#/components/schemas/Operation' application/*+json: schema: type: array items: $ref: '#/components/schemas/Operation' responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' delete: tags: - Notes summary: Factset Delete a Comment from a Note operationId: DeleteComment parameters: - name: noteId in: path required: true schema: type: string format: uuid - name: commentId in: path required: true schema: type: string format: uuid responses: '200': description: Success '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '500': description: Server Error /v1/notes/{noteId}/comments/{commentId}/attachments: get: tags: - Notes summary: Factset Get attachments summary of a comment belonging to a note operationId: GetCommentAttachments parameters: - name: noteId in: path required: true schema: type: string format: uuid - name: commentId in: path required: true schema: type: string format: uuid responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AttachmentSummaryDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' post: tags: - Notes summary: Factset Create a comment attachment to a Note operationId: CreateCommentAttachment parameters: - name: noteId in: path required: true schema: type: string format: uuid - name: commentId in: path required: true schema: type: string format: uuid requestBody: content: multipart/form-data: schema: required: - file type: object properties: file: type: string format: binary responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/NewItemDto' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '500': description: Server Error /v1/notes/{noteId}/comments/{commentId}/attachments/{attachmentId}/download: get: tags: - Notes summary: Factset Download single attachment detail of a comment belonging to a note operationId: DownloadCommentAttachmentForComment parameters: - name: noteId in: path required: true schema: type: string format: uuid - name: commentId in: path required: true schema: type: string format: uuid - name: attachmentId in: path required: true schema: type: string format: uuid responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' /v1/notes/{noteId}/events: get: tags: - Notes summary: Factset Get all the record events that belong to a note operationId: GetEvents parameters: - name: noteId in: path description: Note Id required: true schema: type: string format: uuid responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordEventSummaryDto' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' default: description: Error content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' /v1/notes/{noteId}/events/{recordEventId}: get: tags: - Notes summary: Factset Get details of a record event of a note operationId: GetRecordEvent parameters: - name: noteId in: path description: Note Id required: true schema: type: string format: uuid - name: recordEventId in: path description: Record Event Id required: true schema: type: string format: uuid responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/NoteEventDto' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' /v1/notes/{noteId}/attachments/{attachmentId}: delete: tags: - Notes summary: Factset Delete attachment from note operationId: SoftDeleteNoteAttachment parameters: - name: noteId in: path description: Note Id required: true schema: type: string format: uuid - name: attachmentId in: path description: Attachment Id required: true schema: type: string format: uuid responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' components: schemas: AttachmentSummaryDto: type: object properties: id: type: string format: uuid fileName: type: string nullable: true mimeType: type: string nullable: true size: type: integer format: int64 nullable: true additionalProperties: false CommentDto: type: object properties: id: type: string format: uuid authorId: type: string format: uuid parentCommentId: type: string format: uuid nullable: true body: type: string nullable: true createdAt: type: string nullable: true attachments: type: array items: $ref: '#/components/schemas/AttachmentSummaryDto' nullable: true subcomments: type: array items: $ref: '#/components/schemas/SubcommentSummaryDto' nullable: true additionalProperties: false CommentSummaryDto: type: object properties: id: type: string format: uuid userId: type: string format: uuid createdAt: type: string nullable: true subcomments: type: array items: $ref: '#/components/schemas/SubcommentSummaryDto' nullable: true additionalProperties: false CreateBodyDto: type: object properties: content: type: string nullable: true additionalProperties: false CreateCommentDto: type: object properties: authorId: type: string format: uuid parentCommentId: type: string format: uuid nullable: true body: type: string nullable: true additionalProperties: false CreateCustomFieldValueDto: required: - code type: object properties: code: type: string integerValue: type: integer format: int32 nullable: true textValue: type: string nullable: true filePathValue: type: string nullable: true numericValue: type: number format: double nullable: true dateValue: type: string nullable: true extendedTextValue: type: string nullable: true contactLookupValues: type: array items: type: string format: uuid nullable: true optionValue: type: string nullable: true optionValues: type: array items: type: string nullable: true additionalProperties: false description: "Set a value or values for a custom field identified by the field 'Code'. Only one of the fields (IntegerValue / TextValue / FilePathValue etc) will be used,\r\ndepending on the data type of the custom field corresponding to the 'Code' provided" CreateNoteDto: required: - author - date type: object properties: author: $ref: '#/components/schemas/UserSerialDto' title: maxLength: 255 minLength: 0 type: string nullable: true identifier: type: string nullable: true date: type: string subjectId: type: string format: uuid nullable: true recommendationId: type: string format: uuid nullable: true sentimentId: type: string format: uuid nullable: true body: $ref: '#/components/schemas/CreateBodyDto' source: type: string nullable: true link: maxLength: 255 minLength: 0 type: string nullable: true relatedSymbols: maxItems: 100 type: array items: type: string nullable: true relatedContacts: type: array items: type: string format: uuid nullable: true relatedRecords: $ref: '#/components/schemas/RelatedRecordsDto' customFieldValues: type: array items: $ref: '#/components/schemas/CreateCustomFieldValueDto' nullable: true isPersonal: type: boolean default: false additionalProperties: false CustomFieldValueDto: type: object properties: code: type: string nullable: true value: type: string nullable: true options: type: array items: type: string nullable: true contactValues: type: array items: type: string format: uuid nullable: true additionalProperties: false EventSnippetDto: type: object properties: id: type: string format: uuid type: type: string nullable: true noteId: type: string format: uuid nullable: true meetingId: type: string format: uuid nullable: true createdAt: type: string format: date-time additionalProperties: false IdentifierResolutionDto: type: object additionalProperties: false NewItemDto: type: object properties: id: type: string format: uuid additionalProperties: false NoteDto: type: object properties: id: type: string format: uuid date: type: string nullable: true createdAt: type: string nullable: true authorId: type: string format: uuid contributorId: type: string format: uuid title: type: string nullable: true identifier: type: string nullable: true relatedSymbols: type: array items: type: string nullable: true subjectId: type: string format: uuid recommendationId: type: string format: uuid nullable: true sentimentId: type: string format: uuid nullable: true source: type: string nullable: true link: type: string nullable: true body: type: string nullable: true isPersonal: type: boolean state: type: string nullable: true approvalStatus: type: string nullable: true averageRating: type: integer format: int32 nullable: true relatedRecords: $ref: '#/components/schemas/RelatedRecordsDto' relatedContacts: type: array items: type: string format: uuid nullable: true customFields: type: array items: $ref: '#/components/schemas/CustomFieldValueDto' nullable: true additionalProperties: false NoteEventDto: type: object properties: createdAt: type: string nullable: true type: type: string nullable: true user: type: string nullable: true comment: type: string nullable: true changeList: type: array items: $ref: '#/components/schemas/RecordChangeDto' nullable: true additionalProperties: false NoteSummaryDto: type: object properties: id: type: string format: uuid date: type: string nullable: true createdAt: type: string nullable: true authorId: type: string format: uuid contributorId: type: string format: uuid title: type: string nullable: true identifier: type: string nullable: true subjectId: type: string format: uuid isPersonal: type: boolean state: type: string nullable: true approvalStatus: type: string nullable: true attachmentIds: type: array items: type: string format: uuid nullable: true relatedSymbols: type: array items: type: string nullable: true recommendationId: type: string format: uuid sentimentId: type: string format: uuid customFields: type: array items: $ref: '#/components/schemas/CustomFieldValueDto' nullable: true additionalProperties: false Operation: type: object properties: operationType: $ref: '#/components/schemas/OperationType' path: type: string nullable: true op: type: string nullable: true from: type: string nullable: true value: nullable: true additionalProperties: false OperationType: enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 type: integer format: int32 ProblemDetails: type: object properties: type: type: string nullable: true title: type: string nullable: true status: type: integer format: int32 nullable: true detail: type: string nullable: true instance: type: string nullable: true additionalProperties: {} RecordChangeDto: type: object properties: field: type: string nullable: true operation: type: string nullable: true oldValue: type: string nullable: true newValue: type: string nullable: true oldList: type: array items: type: string nullable: true newList: type: array items: type: string nullable: true additionalProperties: false RecordEventSummaryDto: type: object properties: id: type: string format: uuid type: type: string nullable: true createdAt: type: string nullable: true additionalProperties: false RelatedRecordsDto: type: object properties: noteIds: type: array items: type: string format: uuid nullable: true meetingIds: type: array items: type: string format: uuid nullable: true additionalProperties: false SubcommentSummaryDto: type: object properties: id: type: string format: uuid userId: type: string format: uuid createdAt: type: string nullable: true additionalProperties: false UpdateNoteDto: type: object properties: author: $ref: '#/components/schemas/UserSerialDto' title: maxLength: 255 minLength: 0 type: string nullable: true subjectId: type: string format: uuid noteDate: type: string nullable: true recommendationId: type: string format: uuid nullable: true sentimentId: type: string format: uuid nullable: true body: $ref: '#/components/schemas/CreateBodyDto' source: type: string nullable: true link: maxLength: 255 minLength: 0 type: string nullable: true relatedSymbols: maxItems: 100 type: array items: type: string nullable: true relatedContacts: type: array items: type: string format: uuid nullable: true relatedRecords: $ref: '#/components/schemas/RelatedRecordsDto' customFieldValues: type: array items: $ref: '#/components/schemas/CreateCustomFieldValueDto' nullable: true isPersonal: type: boolean nullable: true identifier: type: string nullable: true additionalProperties: false UserSerialDto: required: - serialNumber - username type: object properties: username: maxLength: 30 minLength: 0 type: string serialNumber: maxLength: 8 minLength: 0 type: string additionalProperties: false securitySchemes: FactSetApiKey: type: http scheme: basic FactSetOAuth2: type: oauth2 flows: clientCredentials: tokenUrl: https://auth.factset.com/as/token.oauth2 scopes: {} security: - FactSetApiKey: [] - FactSetOAuth2: [] tags: - name: Events - name: Identifiers - name: Notes