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

# Post apiv1verificationproperty proofs



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/verification/property-proofs
openapi: 3.1.0
info:
  contact:
    email: api@nkama.ga
    name: NKAMA Engineering
  description: |-
    REST API for the NKAMA property rental and management platform (Gabon).

    All amounts are in XAF minor units and all timestamps are UTC (ISO-8601).
    Every request must carry a bearer access token; data is isolated per
    organization via the token's `org_id` claim, so a caller only ever sees
    their own organization's resources.
  license:
    name: Proprietary
  title: NKAMA API
  version: v1
servers:
  - description: Sandbox
    url: https://sandbox.api.nkama.ga
  - description: Production
    url: https://api.nkama.ga
  - description: Local development
    url: http://localhost:8080
security:
  - bearer-jwt: []
tags:
  - description: >-
      Authenticated self-service for the signed-in user, including changing the
      phone number (the login identifier) after re-verifying the new number by
      OTP.
    name: Account
  - description: >-
      Read generated lease contracts and invoice documents, fetch short-lived
      download URLs and record signatures. Documents are produced automatically
      from booking and billing events, so there is no create endpoint.
    name: Documents
  - description: >-
      Vendor callbacks. Not for client use: authenticated by a shared secret
      and/or an HMAC-SHA256 signature configured with the vendor, not a bearer
      token.
    name: Webhooks
  - description: >-
      Public, pre-authentication phone-first sign-up: request an OTP for a phone
      number, verify it for a short-lived ticket, then redeem the ticket with a
      profile to create the account. No bearer token — the caller has no account
      yet.
    name: Registration
  - description: >-
      Authenticated verification of the caller's on-file number: the code is
      always sent to the number the mirror holds for the caller, never one from
      the request, so a caller can only verify their own number.
    name: Phone verification
  - description: >-
      Public, pre-authentication forgotten-password reset: request an OTP to a
      registered number, then submit the code with a new password. The request
      response is uniform whether or not the number has an account, so it never
      reveals which numbers are registered.
    name: Account recovery
  - description: >-
      Currently-required Terms of Service and Privacy Policy versions to display
      and accept at sign-up.
    name: Legal
paths:
  /api/v1/verification/property-proofs:
    post:
      tags:
        - property-proof-controller
      operationId: open
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenPropertyProofRequest'
        required: true
      responses:
        '201':
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/VerificationResponse'
          description: Created
components:
  schemas:
    OpenPropertyProofRequest:
      properties:
        proofType:
          enum:
            - OWNERSHIP
            - MANDATE
          type: string
        propertyId:
          format: uuid
          type: string
      required:
        - proofType
        - propertyId
      type: object
    VerificationResponse:
      properties:
        assignedTo:
          type: string
        createdAt:
          format: date-time
          type: string
        documents:
          items:
            $ref: '#/components/schemas/DocumentResponse'
          type: array
        id:
          format: uuid
          type: string
        kind:
          enum:
            - OWNER_KYC
            - PROPERTY_PROOF
          type: string
        orgId:
          format: uuid
          type: string
        proofType:
          enum:
            - OWNERSHIP
            - MANDATE
          type: string
        propertyId:
          format: uuid
          type: string
        reviewNote:
          type: string
        reviewedAt:
          format: date-time
          type: string
        reviewedBy:
          type: string
        status:
          enum:
            - DRAFT
            - SUBMITTED
            - UNDER_REVIEW
            - MORE_INFO_REQUESTED
            - APPROVED
            - REJECTED
            - REVOKED
          type: string
        subjectUserId:
          format: uuid
          type: string
        submittedAt:
          format: date-time
          type: string
      type: object
    DocumentResponse:
      properties:
        certificateRef:
          type: string
        certifiedOn:
          format: date
          type: string
        certifyingAuthority:
          enum:
            - POLICE
            - MAIRIE
            - NOTARY
            - NONE
          type: string
        documentType:
          enum:
            - NATIONAL_ID
            - PASSPORT
            - RESIDENCE_PERMIT
            - DRIVER_LICENSE
          type: string
        expiresOn:
          format: date
          type: string
        id:
          format: uuid
          type: string
        mediaObjectId:
          format: uuid
          type: string
        role:
          enum:
            - SELF_ID
            - PROOF_OF_OWNERSHIP
            - ATTESTATION
            - OWNER_MANDATE
            - OWNER_ID
            - OTHER
          type: string
      type: object
  securitySchemes:
    bearer-jwt:
      bearerFormat: JWT
      description: >-
        Bearer access token (JWT) issued by Keycloak or the sandbox token
        endpoint.
      scheme: bearer
      type: http

````