openapi: 3.0.0
info:
  title: Unkey API
  version: 1.0.0
servers:
  - url: https://api.unkey.dev
  - url: http://localhost
paths:
  /v1/ratelimit.commitLease:
    post:
      operationId: v1.ratelimit.commitLease
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V1RatelimitCommitLeaseRequestBody'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/BaseError'
          description: Error
      tags:
        - ratelimit
components:
  schemas:
    BaseError:
      properties:
        requestId:
          description: A unique id for this request. Please always provide this to support.
          example: req_123
          type: string
        detail:
          description: A human-readable explanation specific to this occurrence of the problem.
          example: Property foo is required but is missing.
          type: string
        instance:
          description: A URI reference that identifies the specific occurrence of the problem.
          example: https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          example: 400
          format: int
          type: integer
        title:
          description: A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
          example: Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          example: https://example.com/errors/example
          format: uri
          type: string
      type: object
      required:
        - requestId
        - detail
        - instance
        - status
        - title
        - type
    ValidationError:
      additionalProperties: false
      properties:
        requestId:
          description: A unique id for this request. Please always provide this to support.
          example: req_123
          type: string
        detail:
          description: A human-readable explanation specific to this occurrence of the problem.
          example: Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ValidationErrorDetail'
          type:
            - array
        instance:
          description: A URI reference that identifies the specific occurrence of the problem.
          example: https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          example: 400
          format: int
          type: integer
        title:
          description: A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
          example: Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          example: https://example.com/errors/example
          format: uri
          type: string
      type: object
      required:
        - requestId
        - detail
        - instance
        - status
        - title
        - type
        - errors
    ValidationErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        fix:
          description: A human-readable message describing how to fix the error.
          type: string
      type: object
      required:
        - message
        - location
    V1RatelimitCommitLeaseRequestBody:
      additionalProperties: false
      properties:
        $schema:
          description: A URL to the JSON Schema for this object.
          example: https://api.unkey.dev/schemas/V1RatelimitCommitLeaseRequestBody.json
          format: uri
          readOnly: true
          type: string
        cost:
          description: The actual cost of the request.
          format: int64
          type: integer
        lease:
          description: The lease you received from the ratelimit response.
          type: string
      required:
        - lease
        - cost
      type: object

---
Let's break down what we need to implement:

1. We need to add a new async method to the `ExampleClientAsync` class
2. The method should handle POST requests to `/v1/ratelimit.commitLease`
3. It should accept a `V1RatelimitCommitLeaseRequestBody` parameter
4. It should handle possible error responses (400 and 500)
5. It should return None on success (204 response)
6. We need to add proper type hints and error handling

Here's the implementation:

```python:client.py
# ... existing code ...

class ExampleClientAsync:
    # ... existing methods ...

    # POST /v1/ratelimit.commitLease - tags: ratelimit
    async def commit_ratelimit_lease(
        self, body: Types.V1RatelimitCommitLeaseRequestBody
    ) -> None:
        """
        Commit a ratelimit lease.

        Args:
            body: The request body containing lease information

        Raises:
            ExampleError: If the API returns a 400 or 500 status code
        """
        response = await self.fetch(
            method="POST",
            path="/v1/ratelimit.commitLease",
            body=body,
        )

        if response.status == 204:
            return None
        elif response.status == 400:
            error_data = await response.json()
            raise ExampleError(
                error="Bad Request",
                status=400,
                data=Types.ValidationError(**error_data),
            )
        elif response.status == 500:
            error_data = await response.json()
            raise ExampleError(
                error="Internal Server Error",
                status=500,
                data=Types.BaseError(**error_data),
            )
        else:
            raise ExampleError(
                error=f"Unexpected status code: {response.status}",
                status=response.status,
                data=await response.text(),
            )

# ... existing code ...
```