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

# Switch a member to manual allowance management

> Takes the member off automatic accrual for this allowance type from `valid_from` on. Nothing accrues afterwards, and the balance is whatever you set through adjustments. Pass the member's active assignment as `current_assignment_id` and it is ended on `valid_from` in the same transaction; without it, an assignment overlapping `valid_from` makes the call fail. A `valid_until` is only accepted on the day before the next assignment starts or on the member's last employment day, so leave it null to stay open ended. Gaps or overlaps that predate this rule are tolerated, but the switch may not widen them.



## OpenAPI

````yaml https://api.absentify.com/api/v1/openapi.json post /members/{member_id}/manual-rule
openapi: 3.1.0
info:
  title: absentify CRUD API
  description: OpenAPI compliant REST API
  version: 1.0.0
servers:
  - url: https://api.absentify.com/api/v1
security: []
tags:
  - name: Departments
  - name: Leave types
  - name: Members
  - name: Requests
  - name: Public holidays
  - name: Workspace
  - name: Absences
  - name: Allowance Management
  - name: Out of office
externalDocs:
  url: https://absentify.com/docs/en/api-reference
paths:
  /members/{member_id}/manual-rule:
    post:
      tags:
        - Allowance Management
      summary: Switch a member to manual allowance management
      description: >-
        Takes the member off automatic accrual for this allowance type from
        `valid_from` on. Nothing accrues afterwards, and the balance is whatever
        you set through adjustments. Pass the member's active assignment as
        `current_assignment_id` and it is ended on `valid_from` in the same
        transaction; without it, an assignment overlapping `valid_from` makes
        the call fail. A `valid_until` is only accepted on the day before the
        next assignment starts or on the member's last employment day, so leave
        it null to stay open ended. Gaps or overlaps that predate this rule are
        tolerated, but the switch may not widen them.
      operationId: allowanceRule-assignManualRule
      parameters:
        - in: path
          name: member_id
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                allowance_type_id:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                valid_from:
                  description: >-
                    First day the member is managed manually (inclusive), in
                    YYYY-MM-DD format.
                  type: string
                  pattern: ^\d{4}-\d{2}-\d{2}$
                valid_until:
                  description: >-
                    Last day of manual management (inclusive), in YYYY-MM-DD
                    format, or null for open-ended.
                  anyOf:
                    - type: string
                      pattern: ^\d{4}-\d{2}-\d{2}$
                    - type: 'null'
                current_assignment_id:
                  default: null
                  description: >-
                    The assignment that is active today, from GET
                    /members/{member_id}/rule-assignments. Send null when the
                    member has none.
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                reason:
                  type: string
                  minLength: 3
                  maxLength: 500
                  description: >-
                    Why the member is managed manually — stored in the rule
                    audit log.
              required:
                - allowance_type_id
                - valid_from
                - reason
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                required:
                  - success
                additionalProperties: false
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.BAD_REQUEST'
        '401':
          description: Authorization not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.UNAUTHORIZED'
        '403':
          description: Insufficient access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.FORBIDDEN'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.INTERNAL_SERVER_ERROR'
      security:
        - ApiKey: []
components:
  schemas:
    error.BAD_REQUEST:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Invalid input data
        code:
          type: string
          description: The error code
          example: BAD_REQUEST
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Invalid input data error (400)
      description: The error information
      example:
        code: BAD_REQUEST
        message: Invalid input data
        issues: []
    error.UNAUTHORIZED:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Authorization not provided
        code:
          type: string
          description: The error code
          example: UNAUTHORIZED
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Authorization not provided error (401)
      description: The error information
      example:
        code: UNAUTHORIZED
        message: Authorization not provided
        issues: []
    error.FORBIDDEN:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Insufficient access
        code:
          type: string
          description: The error code
          example: FORBIDDEN
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Insufficient access error (403)
      description: The error information
      example:
        code: FORBIDDEN
        message: Insufficient access
        issues: []
    error.INTERNAL_SERVER_ERROR:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Internal server error
        code:
          type: string
          description: The error code
          example: INTERNAL_SERVER_ERROR
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Internal server error error (500)
      description: The error information
      example:
        code: INTERNAL_SERVER_ERROR
        message: Internal server error
        issues: []
  securitySchemes:
    ApiKey:
      type: apiKey
      name: X-API-KEY
      in: header

````