openapi: 3.0.3
info:
  title: 'inmodata API Documentation'
  description: ''
  version: 1.0.0
servers:
  -
    url: 'http://localhost'
tags:
  -
    name: Authentication
    description: ''
  -
    name: Endpoints
    description: ''
  -
    name: Properties
    description: ''
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: 'Get a bearer token from the `POST /v1/auth/login` endpoint.'
security:
  -
    default: []
paths:
  /v1/auth/register:
    post:
      summary: Register
      operationId: register
      description: 'Create a new account and issue a Sanctum bearer token.'
      parameters: []
      responses:
        201:
          description: 'Registration succeeded.'
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: ''
                    type: users
                    attributes:
                      name: 'Alexandra Salvador'
                      email: miguel.sevilla@example.com
                      email_verified_at: '2026-03-19T08:50:09+00:00'
                      created_at: null
                      updated_at: null
                  meta:
                    token: 1|example-token
                    token_type: Bearer
                    expires_at: null
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        example: ''
                      type:
                        type: string
                        example: users
                      attributes:
                        type: object
                        properties:
                          name:
                            type: string
                            example: 'Alexandra Salvador'
                          email:
                            type: string
                            example: miguel.sevilla@example.com
                          email_verified_at:
                            type: string
                            example: '2026-03-19T08:50:09+00:00'
                          created_at:
                            type: string
                            example: null
                            nullable: true
                          updated_at:
                            type: string
                            example: null
                            nullable: true
                  meta:
                    type: object
                    properties:
                      token:
                        type: string
                        example: 1|example-token
                      token_type:
                        type: string
                        example: Bearer
                      expires_at:
                        type: string
                        example: null
                        nullable: true
        422:
          description: 'Validation failed.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    email:
                      - 'The email has already been taken.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      email:
                        type: array
                        example:
                          - 'The email has already been taken.'
                        items:
                          type: string
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Display name for the account.'
                  example: 'Jane Doe'
                email:
                  type: string
                  description: 'Unique email address for login.'
                  example: jane@example.com
                password:
                  type: string
                  description: 'Account password.'
                  example: password123
                device_name:
                  type: string
                  description: 'Client device label for token tracking.'
                  example: ios-app
              required:
                - name
                - email
                - password
      security: []
  /v1/auth/login:
    post:
      summary: Login
      operationId: login
      description: 'Authenticate a user and issue a Sanctum bearer token.'
      parameters: []
      responses:
        200:
          description: 'Login succeeded.'
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: ''
                    type: users
                    attributes:
                      name: 'Alexandra Salvador'
                      email: gallego.adrian@example.com
                      email_verified_at: '2026-03-19T08:50:09+00:00'
                      created_at: null
                      updated_at: null
                  meta:
                    token: 1|example-token
                    token_type: Bearer
                    expires_at: null
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        example: ''
                      type:
                        type: string
                        example: users
                      attributes:
                        type: object
                        properties:
                          name:
                            type: string
                            example: 'Alexandra Salvador'
                          email:
                            type: string
                            example: gallego.adrian@example.com
                          email_verified_at:
                            type: string
                            example: '2026-03-19T08:50:09+00:00'
                          created_at:
                            type: string
                            example: null
                            nullable: true
                          updated_at:
                            type: string
                            example: null
                            nullable: true
                  meta:
                    type: object
                    properties:
                      token:
                        type: string
                        example: 1|example-token
                      token_type:
                        type: string
                        example: Bearer
                      expires_at:
                        type: string
                        example: null
                        nullable: true
        422:
          description: 'Credentials were invalid.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    email:
                      - 'The provided credentials are incorrect.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      email:
                        type: array
                        example:
                          - 'The provided credentials are incorrect.'
                        items:
                          type: string
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'User email address.'
                  example: jane@example.com
                password:
                  type: string
                  description: 'User password.'
                  example: password123
                device_name:
                  type: string
                  description: 'Client device label for token tracking. If empty, User Agent will be used.'
                  example: ios-app
              required:
                - email
                - password
      security: []
  /v1/auth/password/forgot:
    post:
      summary: 'Request Password Reset'
      operationId: requestPasswordReset
      description: 'Send a password reset link to the provided email if an account exists.'
      parameters: []
      responses:
        200:
          description: 'Password reset request accepted.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'If the account exists, a password reset link has been sent.'
                properties:
                  message:
                    type: string
                    example: 'If the account exists, a password reset link has been sent.'
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'Account email address.'
                  example: jane@example.com
              required:
                - email
      security: []
  /v1/auth/password/reset:
    post:
      summary: 'Reset Password'
      operationId: resetPassword
      description: 'Reset the user password using a valid reset token.'
      parameters: []
      responses:
        200:
          description: 'Password reset succeeded.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Your password has been reset.'
                properties:
                  message:
                    type: string
                    example: 'Your password has been reset.'
        422:
          description: 'Reset token or payload was invalid.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    email:
                      - 'This password reset token is invalid.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      email:
                        type: array
                        example:
                          - 'This password reset token is invalid.'
                        items:
                          type: string
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  description: 'Password reset token.'
                  example: reset-token-value
                email:
                  type: string
                  description: 'Account email associated with token.'
                  example: jane@example.com
                password:
                  type: string
                  description: 'New account password.'
                  example: new-password123
                password_confirmation:
                  type: string
                  description: 'Must match password.'
                  example: new-password123
              required:
                - token
                - email
                - password
                - password_confirmation
      security: []
  '/v1/auth/password/reset/{token}':
    get:
      summary: 'Read Reset Token Payload'
      operationId: readResetTokenPayload
      description: 'Return reset token and email payload for API clients handling email reset links.'
      parameters:
        -
          in: query
          name: email
          description: 'Account email from the reset link.'
          example: jane@example.com
          required: false
          schema:
            type: string
            description: 'Account email from the reset link.'
            example: jane@example.com
      responses:
        200:
          description: 'Reset payload data.'
          content:
            application/json:
              schema:
                type: object
                example:
                  token: reset-token-value
                  email: jane@example.com
                properties:
                  token:
                    type: string
                    example: reset-token-value
                  email:
                    type: string
                    example: jane@example.com
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  description: ''
                  example: architecto
                email:
                  type: string
                  description: 'El campo value debe ser una direccion de correo valida. El campo value no debe ser mayor que 255 caracteres.'
                  example: zbailey@example.net
                  nullable: true
              required:
                - token
      security: []
    parameters:
      -
        in: path
        name: token
        description: 'Password reset token from reset link.'
        example: reset-token-value
        required: true
        schema:
          type: string
  '/v1/auth/email/verify/{id}/{hash}':
    get:
      summary: 'Verify Email'
      operationId: verifyEmail
      description: 'Verify a user email using the signed verification link parameters.'
      parameters: []
      responses:
        200:
          description: 'Email was verified.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Email verified successfully.'
                properties:
                  message:
                    type: string
                    example: 'Email verified successfully.'
        403:
          description: 'Signed URL was invalid, expired, or mismatched.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Invalid verification link.'
                properties:
                  message:
                    type: string
                    example: 'Invalid verification link.'
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: 'The <code>id</code> of an existing record in the users table.'
                  example: architecto
                hash:
                  type: string
                  description: 'El campo value debe tener 40 caracteres.'
                  example: ngzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqld
              required:
                - id
                - hash
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'User ULID from the signed verification link.'
        example: 01HZX3W3T4J8Q57XNZD5BPHJ92
        required: true
        schema:
          type: string
      -
        in: path
        name: hash
        description: 'SHA-1 hash of the email from the signed verification link.'
        example: 8c4f4370e5db9b5be6d0f4c95495f49f998fa32a
        required: true
        schema:
          type: string
  /v1/auth/me:
    get:
      summary: 'Get Current User'
      operationId: getCurrentUser
      description: 'Return the authenticated user for the current bearer token.'
      parameters: []
      responses:
        200:
          description: 'Authenticated user profile.'
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: ''
                    type: users
                    attributes:
                      name: 'Omar Domínguez'
                      email: arredondo.juana@example.com
                      email_verified_at: '2026-03-19T08:50:09+00:00'
                      created_at: null
                      updated_at: null
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        example: ''
                      type:
                        type: string
                        example: users
                      attributes:
                        type: object
                        properties:
                          name:
                            type: string
                            example: 'Omar Domínguez'
                          email:
                            type: string
                            example: arredondo.juana@example.com
                          email_verified_at:
                            type: string
                            example: '2026-03-19T08:50:09+00:00'
                          created_at:
                            type: string
                            example: null
                            nullable: true
                          updated_at:
                            type: string
                            example: null
                            nullable: true
        401:
          description: 'Authentication failed.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Authentication
  /v1/auth/logout:
    post:
      summary: Logout
      operationId: logout
      description: 'Revoke the current Sanctum token.'
      parameters: []
      responses:
        204:
          description: 'Token revoked.'
          content:
            application/json:
              schema:
                type: object
                nullable: true
        401:
          description: 'Authentication failed.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Authentication
  /v1/auth/tokens:
    get:
      summary: 'List Tokens'
      operationId: listTokens
      description: 'List personal access tokens for the authenticated user.'
      parameters: []
      responses:
        200:
          description: 'Token list payload.'
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      id: '1'
                      type: personal-access-tokens
                      attributes:
                        name: ios-app
                        abilities:
                          - 'auth:me'
                          - 'auth:logout'
                        last_used_at: null
                        expires_at: '2026-02-24T12:00:00+00:00'
                        created_at: '2026-02-23T12:00:00+00:00'
                        updated_at: '2026-02-23T12:00:00+00:00'
                        is_current: true
                properties:
                  data:
                    type: array
                    example:
                      -
                        id: '1'
                        type: personal-access-tokens
                        attributes:
                          name: ios-app
                          abilities:
                            - 'auth:me'
                            - 'auth:logout'
                          last_used_at: null
                          expires_at: '2026-02-24T12:00:00+00:00'
                          created_at: '2026-02-23T12:00:00+00:00'
                          updated_at: '2026-02-23T12:00:00+00:00'
                          is_current: true
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          example: '1'
                        type:
                          type: string
                          example: personal-access-tokens
                        attributes:
                          type: object
                          properties:
                            name:
                              type: string
                              example: ios-app
                            abilities:
                              type: array
                              example:
                                - 'auth:me'
                                - 'auth:logout'
                              items:
                                type: string
                            last_used_at:
                              type: string
                              example: null
                              nullable: true
                            expires_at:
                              type: string
                              example: '2026-02-24T12:00:00+00:00'
                            created_at:
                              type: string
                              example: '2026-02-23T12:00:00+00:00'
                            updated_at:
                              type: string
                              example: '2026-02-23T12:00:00+00:00'
                            is_current:
                              type: boolean
                              example: true
        401:
          description: 'Authentication failed.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
        403:
          description: 'Token is missing required ability.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Forbidden.
                properties:
                  message:
                    type: string
                    example: Forbidden.
      tags:
        - Authentication
    delete:
      summary: 'Revoke All Tokens'
      operationId: revokeAllTokens
      description: 'Revoke all personal access tokens for the authenticated user.'
      parameters: []
      responses:
        204:
          description: 'All tokens revoked.'
          content:
            application/json:
              schema:
                type: object
                nullable: true
        401:
          description: 'Authentication failed.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
        403:
          description: 'Token is missing required ability.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Forbidden.
                properties:
                  message:
                    type: string
                    example: Forbidden.
      tags:
        - Authentication
  '/v1/auth/tokens/{token_id}':
    delete:
      summary: 'Revoke Token'
      operationId: revokeToken
      description: 'Revoke one personal access token owned by the authenticated user.'
      parameters: []
      responses:
        204:
          description: 'Token revoked.'
          content:
            application/json:
              schema:
                type: object
                nullable: true
        401:
          description: 'Authentication failed.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
        403:
          description: 'Token is missing required ability.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Forbidden.
                properties:
                  message:
                    type: string
                    example: Forbidden.
        404:
          description: 'Token does not belong to current user or no longer exists.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Token not found.'
                properties:
                  message:
                    type: string
                    example: 'Token not found.'
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                token_id:
                  type: integer
                  description: ''
                  example: 16
              required:
                - token_id
    parameters:
      -
        in: path
        name: token_id
        description: 'Personal access token id.'
        example: 42
        required: true
        schema:
          type: integer
  /v1/auth/email/verification-notification:
    post:
      summary: 'Send Verification Email'
      operationId: sendVerificationEmail
      description: 'Send (or resend) an email verification link to the authenticated user.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Verification email queued/sent.'
                    type: object
                    example:
                      message: 'Verification link sent.'
                    properties:
                      message:
                        type: string
                        example: 'Verification link sent.'
                  -
                    description: 'User already verified.'
                    type: object
                    example:
                      message: 'Email is already verified.'
                    properties:
                      message:
                        type: string
                        example: 'Email is already verified.'
        401:
          description: 'Authentication failed.'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Authentication
  '/v1/properties/{id}':
    get:
      summary: 'Handle the incoming request.'
      operationId: handleTheIncomingRequest
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the property.'
        example: architecto
        required: true
        schema:
          type: string
  /v1/properties/address:
    post:
      summary: 'Get Property by Address'
      operationId: getPropertyByAddress
      description: 'Retrieve property data by sending the address string.'
      parameters: []
      responses:
        200:
          description: 'Properties retrieved successfully.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: success
                  data:
                    properties:
                      -
                        id: 01ABC...
                        direccion: 'Calle Mayor 123, Madrid'
                    pagination:
                      current_page: 1
                      per_page: 20
                      total: 100
                      last_page: 5
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      properties:
                        type: array
                        example:
                          -
                            id: 01ABC...
                            direccion: 'Calle Mayor 123, Madrid'
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: 01ABC...
                            direccion:
                              type: string
                              example: 'Calle Mayor 123, Madrid'
                      pagination:
                        type: object
                        properties:
                          current_page:
                            type: integer
                            example: 1
                          per_page:
                            type: integer
                            example: 20
                          total:
                            type: integer
                            example: 100
                          last_page:
                            type: integer
                            example: 5
        404:
          description: 'Property with the given address was not found.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: error
                  error:
                    code: NOT_FOUND
                    message: 'Property not found'
                properties:
                  status:
                    type: string
                    example: error
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: NOT_FOUND
                      message:
                        type: string
                        example: 'Property not found'
      tags:
        - Properties
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                address:
                  type: string
                  description: 'Full property address to search for.'
                  example: 'Calle Mayor 123, Madrid'
                page:
                  type: integer
                  description: 'Page number for pagination.'
                  example: 1
                per_page:
                  type: integer
                  description: 'Number of items per page (default 20).'
                  example: 20
              required:
                - address
  /v1/properties/zip:
    post:
      summary: 'Get Properties by Zip Code'
      operationId: getPropertiesByZipCode
      description: 'Retrieve properties by sending a zip code. Returns multiple properties if available.'
      parameters: []
      responses:
        200:
          description: 'Properties retrieved successfully.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: success
                  data:
                    properties:
                      -
                        id: 01ABC...
                        direccion: 'Calle Mayor'
                        codigo_postal: '41001'
                    pagination:
                      current_page: 1
                      per_page: 20
                      total: 100
                      last_page: 5
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      properties:
                        type: array
                        example:
                          -
                            id: 01ABC...
                            direccion: 'Calle Mayor'
                            codigo_postal: '41001'
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: 01ABC...
                            direccion:
                              type: string
                              example: 'Calle Mayor'
                            codigo_postal:
                              type: string
                              example: '41001'
                      pagination:
                        type: object
                        properties:
                          current_page:
                            type: integer
                            example: 1
                          per_page:
                            type: integer
                            example: 20
                          total:
                            type: integer
                            example: 100
                          last_page:
                            type: integer
                            example: 5
        404:
          description: 'No properties found with the given zip code.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: error
                  error:
                    code: NOT_FOUND
                    message: 'No properties found for this zip code'
                properties:
                  status:
                    type: string
                    example: error
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: NOT_FOUND
                      message:
                        type: string
                        example: 'No properties found for this zip code'
      tags:
        - Properties
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                zip:
                  type: string
                  description: 'Postal code to search for properties.'
                  example: '41001'
                page:
                  type: integer
                  description: 'Page number for pagination.'
                  example: 1
                per_page:
                  type: integer
                  description: 'Number of items per page (default 20).'
                  example: 20
              required:
                - zip
  /v1/properties/cadastral:
    post:
      summary: 'Get Properties by Cadastral Reference'
      operationId: getPropertiesByCadastralReference
      description: 'Retrieve properties by sending a cadastral reference. Returns one or more properties if available.'
      parameters: []
      responses:
        200:
          description: 'Properties retrieved successfully.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: success
                  data:
                    properties:
                      -
                        id: 01ABC...
                        direccion: 'Calle Mayor'
                        referencia_catastral: 1234567VG1234A0001BG
                    pagination:
                      current_page: 1
                      per_page: 20
                      total: 100
                      last_page: 5
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      properties:
                        type: array
                        example:
                          -
                            id: 01ABC...
                            direccion: 'Calle Mayor'
                            referencia_catastral: 1234567VG1234A0001BG
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: 01ABC...
                            direccion:
                              type: string
                              example: 'Calle Mayor'
                            referencia_catastral:
                              type: string
                              example: 1234567VG1234A0001BG
                      pagination:
                        type: object
                        properties:
                          current_page:
                            type: integer
                            example: 1
                          per_page:
                            type: integer
                            example: 20
                          total:
                            type: integer
                            example: 100
                          last_page:
                            type: integer
                            example: 5
        404:
          description: 'No properties found with the given cadastral reference.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: error
                  error:
                    code: NOT_FOUND
                    message: 'No properties found for this cadastral reference'
                properties:
                  status:
                    type: string
                    example: error
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: NOT_FOUND
                      message:
                        type: string
                        example: 'No properties found for this cadastral reference'
      tags:
        - Properties
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                cadastral_reference:
                  type: string
                  description: 'Cadastral reference to search for properties.'
                  example: 1234567VG1234A0001BG
                page:
                  type: integer
                  description: 'Page number for pagination.'
                  example: 1
                per_page:
                  type: integer
                  description: 'Number of items per page (default 20).'
                  example: 20
              required:
                - cadastral_reference
  /v1/properties/province:
    post:
      summary: 'Get Properties by Province'
      operationId: getPropertiesByProvince
      description: 'Retrieve properties by sending a province name. Returns multiple properties if available.'
      parameters: []
      responses:
        200:
          description: 'Properties retrieved successfully.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: success
                  data:
                    properties:
                      -
                        id: 01ABC...
                        direccion: 'Calle Mayor'
                        provincia: Sevilla
                    pagination:
                      current_page: 1
                      per_page: 20
                      total: 100
                      last_page: 5
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      properties:
                        type: array
                        example:
                          -
                            id: 01ABC...
                            direccion: 'Calle Mayor'
                            provincia: Sevilla
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: 01ABC...
                            direccion:
                              type: string
                              example: 'Calle Mayor'
                            provincia:
                              type: string
                              example: Sevilla
                      pagination:
                        type: object
                        properties:
                          current_page:
                            type: integer
                            example: 1
                          per_page:
                            type: integer
                            example: 20
                          total:
                            type: integer
                            example: 100
                          last_page:
                            type: integer
                            example: 5
        404:
          description: 'No properties found with the given province.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: error
                  error:
                    code: NOT_FOUND
                    message: 'No properties found for this province'
                properties:
                  status:
                    type: string
                    example: error
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: NOT_FOUND
                      message:
                        type: string
                        example: 'No properties found for this province'
      tags:
        - Properties
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                province:
                  type: string
                  description: 'Province name to search for properties.'
                  example: Sevilla
                page:
                  type: integer
                  description: 'Page number for pagination.'
                  example: 1
                per_page:
                  type: integer
                  description: 'Number of items per page (default 20).'
                  example: 20
              required:
                - province
  /v1/properties/municipality:
    post:
      summary: 'Get Properties by Municipality'
      operationId: getPropertiesByMunicipality
      description: 'Retrieve properties by sending a municipality name. Returns multiple properties if available.'
      parameters: []
      responses:
        200:
          description: 'Properties retrieved successfully.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: success
                  data:
                    properties:
                      -
                        id: 01ABC...
                        direccion: 'Calle Mayor'
                        municipio: Camas
                    pagination:
                      current_page: 1
                      per_page: 20
                      total: 100
                      last_page: 5
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      properties:
                        type: array
                        example:
                          -
                            id: 01ABC...
                            direccion: 'Calle Mayor'
                            municipio: Camas
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: 01ABC...
                            direccion:
                              type: string
                              example: 'Calle Mayor'
                            municipio:
                              type: string
                              example: Camas
                      pagination:
                        type: object
                        properties:
                          current_page:
                            type: integer
                            example: 1
                          per_page:
                            type: integer
                            example: 20
                          total:
                            type: integer
                            example: 100
                          last_page:
                            type: integer
                            example: 5
        404:
          description: 'No properties found with the given municipality.'
          content:
            application/json:
              schema:
                type: object
                example:
                  status: error
                  error:
                    code: NOT_FOUND
                    message: 'No properties found for this municipality'
                properties:
                  status:
                    type: string
                    example: error
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: NOT_FOUND
                      message:
                        type: string
                        example: 'No properties found for this municipality'
      tags:
        - Properties
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                municipality:
                  type: string
                  description: 'Municipality name to search for properties.'
                  example: Camas
                page:
                  type: integer
                  description: 'Page number for pagination.'
                  example: 1
                per_page:
                  type: integer
                  description: 'Number of items per page (default 20).'
                  example: 20
              required:
                - municipality
