openapi: 3.1.0 info: description: 'APIs for retrieving and closing tickets for an organization. ' title: Ticket Attachment API version: 1.0.0 servers: - description: US001 url: https://ticket-api.managedgw.us001-prod.arcticwolf.net - description: US002 url: https://ticket-api.managedgw.us002-prod.arcticwolf.net - description: US003 url: https://ticket-api.managedgw.us003-prod.arcticwolf.net - description: EU001 url: https://ticket-api.managedgw.eu001-prod.arcticwolf.net - description: AU001 url: https://ticket-api.managedgw.au001-prod.arcticwolf.net - description: CA001 url: https://ticket-api.managedgw.ca001-prod.arcticwolf.net tags: - name: Attachment paths: /api/v1/organizations/{organizationUuid}/tickets/{ticketId}/attachments/{attachmentId}: get: summary: Download an attachment description: Get a presigned URL to download a ticket attachment operationId: getAttachment security: - BearerAuth: [] tags: - Attachment parameters: - $ref: '#/components/parameters/OrganizationUuid' - $ref: '#/components/parameters/TicketId' - $ref: '#/components/parameters/AttachmentId' responses: '200': $ref: '#/components/responses/AttachmentURLResponse' '401': $ref: '#/components/responses/UnauthorizedError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' '500': $ref: '#/components/responses/InternalServerError' components: responses: ForbiddenError: description: Authenticated but insufficient permissions content: application/json: schema: $ref: '#/components/schemas/Error' examples: forbidden: value: code: forbidden description: Insufficient permissions to access this resource. NotFoundError: description: Ticket not found content: application/json: schema: $ref: '#/components/schemas/Error' examples: notFound: value: code: not_found description: Ticket with ID 12345 was not found. attachmentNotFound: value: code: not_found description: Attachment with ID 123 belonging to Ticket with ID 456 was not found. UnauthorizedError: description: Authentication required or token invalid content: application/json: schema: $ref: '#/components/schemas/Error' examples: unauthorized: value: code: unauthorized description: Invalid or expired authentication token. InternalServerError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' examples: internalError: value: code: internal_server_error description: An unexpected error occurred while processing your request. AttachmentURLResponse: description: URL to download the attachment content: application/json: schema: $ref: '#/components/schemas/AttachmentURL' examples: attachmentURL: $ref: '#/components/examples/AttachmentURLExample' examples: AttachmentURLExample: summary: Example of a presigned URL for downloading an attachment value: url: https://example-bucket.s3.amazonaws.com/path/to/file.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAFAKEEXAMPLE%2F20260113%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260113T120000Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef schemas: Error: type: object description: Error envelope; returned when we encounter an error required: - code properties: code: description: Error code identifier type: string pattern: ^[a-zA-Z0-9_-]+$ minLength: 1 maxLength: 100 description: description: Detailed error description type: string pattern: ^[\s\S]*$ minLength: 1 maxLength: 1000 AttachmentURL: type: object description: Response containing a presigned URL for downloading an attachment required: - url properties: url: type: string format: uri pattern: ^https?://[^\s/$.?#].[^\s]*$ minLength: 10 maxLength: 2048 description: Presigned URL for downloading the attachment (expires after a limited time) parameters: AttachmentId: in: path name: attachmentId required: true schema: type: integer format: int64 minimum: 1 maximum: 9223372036854776000 description: The unique identifier for the attachment examples: attachmentId: value: 70001 TicketId: in: path name: ticketId required: true schema: type: integer format: int64 minimum: 1 maximum: 9223372036854776000 description: The unique identifier for the ticket examples: ticketId: value: 12345 OrganizationUuid: in: path name: organizationUuid required: true schema: type: string format: uuid pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ minLength: 36 maxLength: 36 description: The unique identifier for the organization examples: uuid: value: 550e8400-e29b-41d4-a716-446655440000 securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT