> ## Documentation Index
> Fetch the complete documentation index at: https://developer.findity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send an expense report

> Sends a single expense report to its recipient. Validation problems do not refuse the send, they come back as warnings with a 200, which is how this endpoint has always behaved.
This is its own path rather than an `action` on the report resource because it carries its own permission: it is available to roles that may send a report without being allowed to edit it.




## OpenAPI

````yaml /openapi/findity-admin-api.json put /organizations/{organizationId}/reports/{reportId}/send
openapi: 3.1.0
info:
  title: Findity Admin API
  description: Findity Admin API
  version: 1.0.0
servers:
  - url: https://stage-api.findity.com/api/v1/admin
  - url: https://api.findity.com/api/v1/admin
security:
  - bearerAuth: []
paths:
  /organizations/{organizationId}/reports/{reportId}/send:
    put:
      tags:
        - Expense Reports
      summary: Send an expense report
      description: >
        Sends a single expense report to its recipient. Validation problems do
        not refuse the send, they come back as warnings with a 200, which is how
        this endpoint has always behaved.

        This is its own path rather than an `action` on the report resource
        because it carries its own permission: it is available to roles that may
        send a report without being allowed to edit it.
      operationId: sendOrganizationExpenseReport
      parameters:
        - name: organizationId
          in: path
          required: true
          description: >-
            The unique identifier of the organization. String, UUID format
            (32-character hexadecimal). Required.
          schema:
            $ref: '#/components/schemas/Uuid'
            example: 05b8daba9ba14a49846fe77883248cf0
        - $ref: '#/components/parameters/expenseReportId'
        - name: lang
          in: query
          required: false
          description: >
            Locale the warnings in the response are translated to. String,
            language variant such as sv_SE. Optional, the request locale is used
            when omitted.
          schema:
            type: string
          example: sv_SE
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendExpenseReport'
            examples:
              plainSend:
                summary: Send the report
                value:
                  skipAttestation: false
              resend:
                summary: Resend for attestation with a message
                value:
                  skipAttestation: false
                  action: resend-with-approval
                  messageText: Please have another look at the receipts
      responses:
        '200':
          description: The report was sent, possibly with validation warnings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendExpenseReportResult'
              examples:
                success:
                  value:
                    result: success
                    warnings: []
                warnings:
                  value:
                    result: warnings
                    warnings:
                      - The report has an expense without a receipt
        '400':
          description: The request body could not be parsed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Error'
              example:
                result: error
                code: INVALID_JSON_BODY
                description: Failed to parse json body
        '403':
          description: The caller may not edit this organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/403Error'
              example:
                result: error
                description: Not allowed
        '404':
          description: The organization or the expense report was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Error'
              examples:
                organizationNotFound:
                  value:
                    result: error
                    code: ORGANIZATION_NOT_FOUND
                    description: Organization not found
                expenseReportNotFound:
                  value:
                    result: error
                    code: EXPENSE_REPORT_NOT_FOUND
                    description: Expense report not found
components:
  schemas:
    Uuid:
      type: string
      pattern: ^[0-9a-fA-F]{32}$
      description: UUID without dashes (32-character hex string)
    SendExpenseReport:
      type: object
      description: Request body for sending a single expense report.
      required: []
      properties:
        skipAttestation:
          type: boolean
          description: >-
            Set to true to send the report without attestation. Boolean.
            Optional, defaults to false.
        action:
          type: string
          description: >
            Which flavour of send this is. String, enum. Accepted values:
            resend, resend-with-approval, resend-without-approval,
            return-report-to-user, forward-without-approval. Optional, omit it
            for a plain send.
          enum:
            - resend
            - resend-with-approval
            - resend-without-approval
            - return-report-to-user
            - forward-without-approval
        messageText:
          type: string
          description: >
            Message to include with the report, used by the resend and return
            flavours. String, no maximum length is enforced. Optional.
    SendExpenseReportResult:
      type: object
      description: >
        Result of sending a single expense report. Validation problems are
        reported as warnings rather than refusing the send, which is how the
        endpoint has always behaved.
      properties:
        result:
          type: string
          description: 'String, enum. Accepted values: success, warnings.'
          enum:
            - success
            - warnings
        warnings:
          type: array
          description: >-
            Translated validation warnings the send produced. Array of strings,
            empty on a clean send.
          items:
            type: string
    400Error:
      type: object
      properties:
        result:
          type: string
        code:
          type: string
        description:
          type: string
    403Error:
      type: object
      properties:
        result:
          type: string
        description:
          type: string
      example:
        result: error
        description: Not allowed
    404Error:
      type: object
      properties:
        result:
          type: string
        code:
          type: string
        description:
          type: string
      example:
        result: error
        code: ORGANIZATION_NOT_FOUND
        description: 'Failed to get organization for id: {orgId}'
  parameters:
    expenseReportId:
      in: path
      name: reportId
      required: true
      description: The id of the expense report to retrieve
      schema:
        $ref: '#/components/schemas/Uuid'
      example: f328e47d595c40ad80f27f52626c5b92
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````