openapi: 3.2.0 info: title: Fenergo Report Branding API version: '2.0' description: 'Operations tagged ReportBranding across 2 of this provider''s published API definitions: fenergo-reportscommand-v2-0-openapi.json, fenergo-reportsquery-v2-0-openapi.json. Each path carries the servers of the definition it was published in.' servers: - url: /reportscommand - url: /reportsquery security: - Bearer: [] tags: - name: ReportBranding paths: /api/v2/report-branding: put: tags: - ReportBranding summary: Configure report branding description: 'Applies tenant-level branding settings to generated reports. Returns the id of the created or updated branding configuration. Required permissions: Following permissions are required: ReportingEdit' operationId: ConfigureReportBranding parameters: - name: X-TENANT-ID in: header description: The UiD of the tenant representing organization required: true schema: type: string example: b11f8be3-f29b-4959-8964-956d4af7c468 requestBody: description: Configure report branding request content: application/json: schema: allOf: - $ref: '#/components/schemas/ConfigureReportBrandingDtoServiceRequest' responses: '202': description: Success. Branding configured content: application/json: schema: $ref: '#/components/schemas/GuidServiceResponse' '400': description: Bad request. The request has missing/invalid values content: application/json: schema: $ref: '#/components/schemas/ValidationErrorModelListServiceResponse' '401': description: User is not authorized to perform this request content: application/json: example: message: Unauthorized '403': description: Access to resource is forbidden. content: application/json: schema: $ref: '#/components/schemas/ObjectServiceResponse' example: data: {} messages: - message: 'Access denied. Following permissions are required: Permission1, Permission2' type: Forbidden errorCode: Error Code '500': description: Internal server exception. Please, contact your provider. content: application/json: schema: $ref: '#/components/schemas/ObjectServiceResponse' example: data: null messages: - message: Internal server exception. Please, contact your provider. type: Error errorCode: INTERNAL_SERVER_ERROR '410': description: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. content: application/json: schema: $ref: '#/components/schemas/StringServiceResponse' example: data: null messages: - message: This endpoint is obsolete and was terminated on yyyy-MM-dd type: Error errorCode: OBSOLETE_ENDPOINT delete: tags: - ReportBranding summary: Reset report branding description: 'Resets the tenant''s report branding configuration back to platform defaults. Required permissions: Following permissions are required: ReportingEdit' operationId: ResetReportBranding parameters: - name: X-TENANT-ID in: header description: The UiD of the tenant representing organization required: true schema: type: string example: b11f8be3-f29b-4959-8964-956d4af7c468 responses: '204': description: Success. Branding reset '400': description: Bad request. The operation could not be completed '401': description: User is not authorized to perform this request content: application/json: example: message: Unauthorized '403': description: Access to resource is forbidden. content: application/json: schema: $ref: '#/components/schemas/ObjectServiceResponse' example: data: {} messages: - message: 'Access denied. Following permissions are required: Permission1, Permission2' type: Forbidden errorCode: Error Code '500': description: Internal server exception. Please, contact your provider. content: application/json: schema: $ref: '#/components/schemas/ObjectServiceResponse' example: data: null messages: - message: Internal server exception. Please, contact your provider. type: Error errorCode: INTERNAL_SERVER_ERROR '410': description: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. content: application/json: schema: $ref: '#/components/schemas/StringServiceResponse' example: data: null messages: - message: This endpoint is obsolete and was terminated on yyyy-MM-dd type: Error errorCode: OBSOLETE_ENDPOINT get: tags: - ReportBranding summary: Get report branding configuration description: 'This method returns the report branding configuration for the current tenant Required permissions: Following permissions are required: ReportingAccess' operationId: GetReportBranding parameters: - name: X-TENANT-ID in: header description: The UiD of the tenant representing organization required: true schema: type: string example: b11f8be3-f29b-4959-8964-956d4af7c468 responses: '200': description: Success. The report branding configuration is returned content: application/json: schema: $ref: '#/components/schemas/ReportBrandingResponseDtoServiceResponse' '400': description: Bad request. The request has missing/invalid values content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '401': description: User is not authorized to perform this request content: application/json: example: message: Unauthorized '403': description: Access to resource is forbidden. content: application/json: schema: $ref: '#/components/schemas/ObjectServiceResponse' example: data: {} messages: - message: 'Access denied. Following permissions are required: Permission1, Permission2' type: Forbidden errorCode: Error Code '500': description: Internal server exception. Please, contact your provider. content: application/json: schema: $ref: '#/components/schemas/ObjectServiceResponse' example: data: null messages: - message: Internal server exception. Please, contact your provider. type: Error errorCode: INTERNAL_SERVER_ERROR '410': description: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. content: application/json: schema: $ref: '#/components/schemas/StringServiceResponse' example: data: null messages: - message: This endpoint is obsolete and was terminated on yyyy-MM-dd type: Error errorCode: OBSOLETE_ENDPOINT servers: - url: /reportscommand /api/v2/report-branding/logo: post: tags: - ReportBranding summary: Upload a tenant report branding logo description: 'Accepts a multipart upload of a PNG or SVG logo file (max 500 KB). Streams the file directly to the tenant''s S3 document-management bucket from the API (no browser-direct S3 PUT, so no bucket CORS dependency). Returns the S3 key the logo was stored under, which the caller should then submit to `PUT /api/v2/report-branding` to persist the branding configuration. Required permissions: Following permissions are required: ReportingEdit' operationId: UploadLogo parameters: - name: X-TENANT-ID in: header description: The UiD of the tenant representing organization required: true schema: type: string example: b11f8be3-f29b-4959-8964-956d4af7c468 requestBody: content: multipart/form-data: schema: type: object properties: file: type: string description: The logo file to upload (multipart/form-data field name `file`). format: binary encoding: file: style: form application/json: schema: type: object properties: file: type: string description: The logo file to upload (multipart/form-data field name `file`). format: binary encoding: file: style: form responses: '200': description: Success. Logo uploaded and S3 key returned content: application/json: schema: $ref: '#/components/schemas/UploadLogoResponseDtoServiceResponse' '400': description: Bad request. The file is missing, the wrong type, or too large content: application/json: schema: $ref: '#/components/schemas/ValidationErrorModelListServiceResponse' '401': description: User is not authorized to perform this request content: application/json: example: message: Unauthorized '403': description: Access to resource is forbidden. content: application/json: schema: $ref: '#/components/schemas/ObjectServiceResponse' example: data: {} messages: - message: 'Access denied. Following permissions are required: Permission1, Permission2' type: Forbidden errorCode: Error Code '500': description: Internal server exception. Please, contact your provider. content: application/json: schema: $ref: '#/components/schemas/ObjectServiceResponse' example: data: null messages: - message: Internal server exception. Please, contact your provider. type: Error errorCode: INTERNAL_SERVER_ERROR '410': description: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. content: application/json: schema: $ref: '#/components/schemas/StringServiceResponse' example: data: null messages: - message: This endpoint is obsolete and was terminated on yyyy-MM-dd type: Error errorCode: OBSOLETE_ENDPOINT servers: - url: /reportscommand components: schemas: EmailFooterDto: type: object properties: enabled: type: boolean description: Whether the email footer is included. text: type: - string - 'null' description: Footer text content. additionalProperties: false description: Configuration for the footer block appended to report notification emails. XlsxConfigDto: type: object properties: coverSheet: allOf: - $ref: '#/components/schemas/CoverSheetDto' description: Cover sheet settings for the XLSX report. headerRow: allOf: - $ref: '#/components/schemas/HeaderRowDto' description: Header row styling settings for the XLSX report. disclaimer: allOf: - $ref: '#/components/schemas/DisclaimerDto' description: Disclaimer block settings for the XLSX report. additionalProperties: false description: Top-level XLSX-specific branding configuration. HeaderRowDto: type: object properties: backgroundColour: type: - string - 'null' description: Background colour of the header row (hex, e.g. "#1B2A4A"). textColour: type: - string - 'null' description: Text colour of the header row (hex, e.g. "#FFFFFF"). freezeRow: type: boolean description: Whether the header row is frozen so it remains visible when scrolling. autoFitColumns: type: boolean description: Whether columns are auto-fitted to their content width. additionalProperties: false description: Configuration for the header row styling in XLSX reports. ValidationErrorModelListServiceResponse: type: object properties: data: type: - array - 'null' items: $ref: '#/components/schemas/ValidationErrorModel' messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false example: data: - propertyName: data errorMessage: Data is required attemptedValue: '' errorCode: NotNullValidator messages: - message: Data is required type: Error errorCode: Error Code UploadLogoResponseDto: type: object properties: s3Key: type: - string - 'null' description: The S3 object key under which the uploaded logo was stored. mimeType: type: - string - 'null' description: The MIME type the file was stored as. sizeBytes: type: integer description: The size of the uploaded file in bytes. format: int64 additionalProperties: false description: Response payload returned after a logo file has been successfully uploaded to S3. CoverSheetDto: type: object properties: enabled: type: boolean description: Whether the cover sheet is included in the report. showLogo: type: boolean description: Whether the tenant logo is displayed on the cover sheet. showGeneratedDate: type: boolean description: Whether the report generation date is shown on the cover sheet. additionalProperties: false description: Configuration for the cover sheet injected into XLSX reports. ConfigureReportBrandingDto: type: object properties: enabled: type: boolean description: Whether tenant report branding is enabled. logo: allOf: - $ref: '#/components/schemas/LogoDto' description: Logo asset details. Null if no logo has been configured. pdfFooter: type: - string - 'null' description: Text content placed in the footer of generated PDF reports. xlsx: allOf: - $ref: '#/components/schemas/XlsxConfigDto' description: XLSX-specific branding configuration. email: allOf: - $ref: '#/components/schemas/EmailConfigDto' description: Email-specific branding configuration. additionalProperties: false description: Request payload for configuring tenant-level report branding. UploadLogoResponseDtoServiceResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/UploadLogoResponseDto' description: Response payload returned after a logo file has been successfully uploaded to S3. messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false ValidationErrorModel: type: object properties: propertyName: type: - string - 'null' errorMessage: type: - string - 'null' attemptedValue: {} errorCode: type: - string - 'null' additionalProperties: false GuidServiceResponse: type: object properties: data: type: string format: uuid messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false EmailConfigDto: type: object properties: senderDisplayName: type: - string - 'null' description: Display name shown in the From field of outgoing report emails. subjectLine: type: - string - 'null' description: Subject line for outgoing report emails. body: type: - string - 'null' description: Body content of outgoing report emails. footer: allOf: - $ref: '#/components/schemas/EmailFooterDto' description: Footer settings for outgoing report emails. showLogo: type: boolean description: Whether the tenant logo is displayed in the email. additionalProperties: false description: Email-specific branding configuration applied to report notification emails. ServiceResponseMessage: type: object properties: message: type: - string - 'null' type: type: - string - 'null' errorCode: type: - string - 'null' additionalProperties: false LogoDto: type: object properties: s3Key: type: - string - 'null' description: S3 object key for the stored logo file. filename: type: - string - 'null' description: Original filename of the uploaded logo. sizeBytes: type: - integer - 'null' description: Size of the logo file in bytes. format: int64 mimeType: type: - string - 'null' description: MIME type of the logo file (e.g. "image/png"). additionalProperties: false description: Represents the logo asset associated with tenant report branding. DisclaimerDto: type: object properties: enabled: type: boolean description: Whether the disclaimer block is included in the report. text: type: - string - 'null' description: Disclaimer text content. additionalProperties: false description: Configuration for the disclaimer block appended to XLSX reports. ConfigureReportBrandingDtoServiceRequest: type: object properties: data: allOf: - $ref: '#/components/schemas/ConfigureReportBrandingDto' description: Request payload for configuring tenant-level report branding. additionalProperties: false ObjectServiceResponse: type: object properties: data: {} messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false StringServiceResponse: type: object properties: data: type: - string - 'null' messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false XlsxConfigResponseDto: type: object properties: coverSheet: allOf: - $ref: '#/components/schemas/CoverSheetResponseDto' description: Cover sheet settings for the XLSX report. headerRow: allOf: - $ref: '#/components/schemas/HeaderRowResponseDto' description: Header row styling settings for the XLSX report. disclaimer: allOf: - $ref: '#/components/schemas/DisclaimerResponseDto' description: Disclaimer block settings for the XLSX report. additionalProperties: false description: Top-level XLSX-specific branding configuration. EmailFooterResponseDto: type: object properties: enabled: type: boolean description: Whether the email footer is included. text: type: - string - 'null' description: Footer text content. additionalProperties: false description: Configuration for the footer block appended to report notification emails. CoverSheetResponseDto: type: object properties: enabled: type: boolean description: Whether the cover sheet is included in the report. showLogo: type: boolean description: Whether the tenant logo is displayed on the cover sheet. showGeneratedDate: type: boolean description: Whether the report generation date is shown on the cover sheet. additionalProperties: false description: Configuration for the cover sheet injected into XLSX reports. EmailConfigResponseDto: type: object properties: senderDisplayName: type: - string - 'null' description: Display name shown in the From field of outgoing report emails. subjectLine: type: - string - 'null' description: Subject line for outgoing report emails. body: type: - string - 'null' description: Body content of outgoing report emails. footer: allOf: - $ref: '#/components/schemas/EmailFooterResponseDto' description: Footer settings for outgoing report emails. showLogo: type: boolean description: Whether the tenant logo is displayed in the email. additionalProperties: false description: Email-specific branding configuration applied to report notification emails. ServiceResponse: type: object properties: data: type: - string - 'null' messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false HeaderRowResponseDto: type: object properties: backgroundColour: type: - string - 'null' description: Background colour of the header row (hex, e.g. "#1B2A4A"). textColour: type: - string - 'null' description: Text colour of the header row (hex, e.g. "#FFFFFF"). freezeRow: type: boolean description: Whether the header row is frozen so it remains visible when scrolling. autoFitColumns: type: boolean description: Whether columns are auto-fitted to their content width. additionalProperties: false description: Configuration for the header row styling in XLSX reports. LogoResponseDto: type: object properties: s3Key: type: - string - 'null' description: S3 object key for the stored logo file. filename: type: - string - 'null' description: Original filename of the uploaded logo. sizeBytes: type: - integer - 'null' description: Size of the logo file in bytes. format: int64 mimeType: type: - string - 'null' description: MIME type of the logo file (e.g. "image/png"). additionalProperties: false description: Represents the logo asset associated with tenant report branding. ReportBrandingResponseDto: type: object properties: enabled: type: boolean description: Whether tenant report branding is enabled. logo: allOf: - $ref: '#/components/schemas/LogoResponseDto' description: Logo asset details. Null if no logo has been configured. logoPresignedUrl: type: - string - 'null' description: 'Presigned GET URL for downloading the configured logo from S3. Null if no logo has been configured.' pdfFooter: type: - string - 'null' description: Text content placed in the footer of generated PDF reports. xlsx: allOf: - $ref: '#/components/schemas/XlsxConfigResponseDto' description: XLSX-specific branding configuration. email: allOf: - $ref: '#/components/schemas/EmailConfigResponseDto' description: Email-specific branding configuration. additionalProperties: false description: Response payload representing the current tenant report branding configuration. DisclaimerResponseDto: type: object properties: enabled: type: boolean description: Whether the disclaimer block is included in the report. text: type: - string - 'null' description: Disclaimer text content. additionalProperties: false description: Configuration for the disclaimer block appended to XLSX reports. ReportBrandingResponseDtoServiceResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/ReportBrandingResponseDto' description: Response payload representing the current tenant report branding configuration. messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false securitySchemes: Bearer: type: apiKey description: Please insert JWT with Bearer into field name: Authorization in: header x-refined-from: - fenergo-reportscommand-v2-0-openapi.json - fenergo-reportsquery-v2-0-openapi.json