openapi: 3.0.3
info:
  title: 'NGR API Documentation'
  description: 'Welcome to the API documentation for the NGR app, powered by Laravel PHP.'
  version: 1.0.0
servers:
  -
    url: 'https://api.ngr.ltd'
paths:
  /api/v1/auth/login:
    post:
      summary: Login
      operationId: login
      description: 'Log a user in by social auth (0AUTH 2) or default form data.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: business
                    id: a9531032-ff42-4fa6-881d-8cfed283c032
                    attributes:
                      email: rowan.gulgowski@example.com
                      firstName: Nick
                      lastName: Cruickshank
                      otherName: null
                      emailVerifiedAt: '2024-11-08T20:40:49.000000Z'
                      accountType: business
                      phone1: +1.323.526.6748
                      phone2: null
                      greet: 'Hello Rowan.gulgowski'
                      gender: null
                      avatar: 'https://source.boringavatars.com/beam/120/rowan.gulgowski?colors=264653,2a9d8f,e9c46a,f4a261,e76f51,FD6C6B,2CFF6D8C,2CFF3A80,2C3E2E6D,2C2A1D5D'
                      lastLogin: null
                      createdAt: '2024-11-08T20:40:49.000000Z'
                    relationships: []
                    links:
                      self: 'http://api.ngr.ltd/api/v1/users/a9531032-ff42-4fa6-881d-8cfed283c032'
                  success: 'true'
                  message: 'Welcome back to NGR!'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: business
                      id:
                        type: string
                        example: a9531032-ff42-4fa6-881d-8cfed283c032
                      attributes:
                        type: object
                        properties:
                          email:
                            type: string
                            example: rowan.gulgowski@example.com
                          firstName:
                            type: string
                            example: Nick
                          lastName:
                            type: string
                            example: Cruickshank
                          otherName:
                            type: string
                            example: null
                          emailVerifiedAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                          accountType:
                            type: string
                            example: business
                          phone1:
                            type: string
                            example: +1.323.526.6748
                          phone2:
                            type: string
                            example: null
                          greet:
                            type: string
                            example: 'Hello Rowan.gulgowski'
                          gender:
                            type: string
                            example: null
                          avatar:
                            type: string
                            example: 'https://source.boringavatars.com/beam/120/rowan.gulgowski?colors=264653,2a9d8f,e9c46a,f4a261,e76f51,FD6C6B,2CFF6D8C,2CFF3A80,2C3E2E6D,2C2A1D5D'
                          lastLogin:
                            type: string
                            example: null
                          createdAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                      relationships:
                        type: array
                        example: []
                      links:
                        type: object
                        properties:
                          self:
                            type: string
                            example: 'http://api.ngr.ltd/api/v1/users/a9531032-ff42-4fa6-881d-8cfed283c032'
                  success:
                    type: string
                    example: 'true'
                  message:
                    type: string
                    example: 'Welcome back to NGR!'
        401:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Account does not exist'
                    type: object
                    example:
                      success: false
                      message: 'You do not have an account, please sign up instead.'
                      data: []
                    properties:
                      success:
                        type: boolean
                        example: false
                      message:
                        type: string
                        example: 'You do not have an account, please sign up instead.'
                      data:
                        type: array
                        example: []
                  -
                    description: 'Invalid credentials'
                    type: object
                    example:
                      success: true
                      message: 'Invalid credentials.'
                      data: []
                    properties:
                      success:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Invalid credentials.'
                      data:
                        type: array
                        example: []
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'Email address of the user. Must be a valid email address.'
                  example: test@ngr.ltd
                password:
                  type: string
                  description: 'Password of the user if mode is default.'
                  example: password
                mode:
                  type: string
                  description: 'The mode of the authentication.'
                  example: default
                  enum:
                    - default
                    - social
              required:
                - email
                - mode
      security: []
  /api/v1/auth/register:
    post:
      summary: 'Sign up'
      operationId: signUp
      description: 'Create an account for a user by social auth (0AUTH 2) or default form data.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: business
                    id: c3c50e2f-aa40-4828-bde2-ae57e1d1417c
                    attributes:
                      email: ashly64@example.com
                      firstName: Adriel
                      lastName: Romaguera
                      otherName: null
                      emailVerifiedAt: '2024-11-08T20:40:49.000000Z'
                      accountType: business
                      phone1: 918.832.7196
                      phone2: null
                      greet: 'Hello Ashly64'
                      gender: null
                      avatar: 'https://source.boringavatars.com/beam/120/ashly64?colors=264653,2a9d8f,e9c46a,f4a261,e76f51,FD6C6B,2CFF6D8C,2CFF3A80,2C3E2E6D,2C2A1D5D'
                      lastLogin: null
                      createdAt: '2024-11-08T20:40:49.000000Z'
                    relationships: []
                    links:
                      self: 'http://api.ngr.ltd/api/v1/users/c3c50e2f-aa40-4828-bde2-ae57e1d1417c'
                  success: 'true'
                  message: 'Welcome to NGR!'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: business
                      id:
                        type: string
                        example: c3c50e2f-aa40-4828-bde2-ae57e1d1417c
                      attributes:
                        type: object
                        properties:
                          email:
                            type: string
                            example: ashly64@example.com
                          firstName:
                            type: string
                            example: Adriel
                          lastName:
                            type: string
                            example: Romaguera
                          otherName:
                            type: string
                            example: null
                          emailVerifiedAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                          accountType:
                            type: string
                            example: business
                          phone1:
                            type: string
                            example: 918.832.7196
                          phone2:
                            type: string
                            example: null
                          greet:
                            type: string
                            example: 'Hello Ashly64'
                          gender:
                            type: string
                            example: null
                          avatar:
                            type: string
                            example: 'https://source.boringavatars.com/beam/120/ashly64?colors=264653,2a9d8f,e9c46a,f4a261,e76f51,FD6C6B,2CFF6D8C,2CFF3A80,2C3E2E6D,2C2A1D5D'
                          lastLogin:
                            type: string
                            example: null
                          createdAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                      relationships:
                        type: array
                        example: []
                      links:
                        type: object
                        properties:
                          self:
                            type: string
                            example: 'http://api.ngr.ltd/api/v1/users/c3c50e2f-aa40-4828-bde2-ae57e1d1417c'
                  success:
                    type: string
                    example: 'true'
                  message:
                    type: string
                    example: 'Welcome to NGR!'
        409:
          description: 'Account already exist'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: false
                  message: 'You already have an account, please log in instead.'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'You already have an account, please log in instead.'
                  data:
                    type: array
                    example: []
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'The name of the business if its a business account. This field is required when <code>type</code> is <code>business</code>. Must not be greater than 100 characters.'
                  example: '3d7 Technologies'
                description:
                  type: string
                  description: 'The business description. This field is required when <code>type</code> is <code>business</code>. Must be at least 5 characters. Must not be greater than 100 characters.'
                  example: 'This business is my escape from poverty.'
                category:
                  type: integer
                  description: 'The category of the business if its a business account. This field is required when <code>type</code> is <code>business</code>.'
                  example: 1
                location:
                  type: integer
                  description: 'LGA of the business if its a business account. This field is required when <code>type</code> is <code>business</code>.'
                  example: 1
                phone:
                  type: string
                  description: 'Phone number of the business if its a business account. This field is required when <code>type</code> is <code>business</code>. Must be at least 5 characters. Must not be greater than 16 characters.'
                  example: '+2348123267184'
                mode:
                  type: string
                  description: 'The mode of the authentication.'
                  example: default
                  enum:
                    - default
                    - social
                type:
                  type: string
                  description: 'The type of the account to create.'
                  example: business
                  enum:
                    - business
                    - regular
                    - superadmin
                email:
                  type: string
                  description: 'Email address of the new user. Must be a valid email address.'
                  example: test@ngr.ltd
                password:
                  type: string
                  description: 'The password of the user if mode is default. This field is required when <code>mode</code> is <code>default</code>.'
                  example: password
              required:
                - mode
                - type
                - email
      security: []
  /api/v1/auth/forgot-password:
    post:
      summary: 'Recover account'
      operationId: recoverAccount
      description: "Recover a user's account whose password, they have forgotten."
      parameters: []
      responses:
        200:
          description: 'Reset email sent'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  message: 'We have emailed your password reset link!'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'We have emailed your password reset link!'
                  data:
                    type: array
                    example: []
        422:
          description: 'Invalid email'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: false
                  message: 'Problems encountered with the data provided. Please contact support if issue persists.'
                  data:
                    - "We can't find a user with that email address."
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Problems encountered with the data provided. Please contact support if issue persists.'
                  data:
                    type: array
                    example:
                      - "We can't find a user with that email address."
                    items:
                      type: string
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'Email address of the user account to recover. Must be a valid email address.'
                  example: test@ngr.ltd
              required:
                - email
      security: []
  '/api/v1/auth/reset-password/{token}':
    post:
      summary: 'Reset password'
      operationId: resetPassword
      description: "Reset a user's password."
      parameters: []
      responses:
        200:
          description: 'Password reset'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  message: 'We have reset your password. Go ahead to login with your new password.'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'We have reset your password. Go ahead to login with your new password.'
                  data:
                    type: array
                    example: []
        500:
          description: 'Invalid password token'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: false
                  message: 'We could not reset your password. Please contact support if issue persists.'
                  data:
                    - 'This password reset token is invalid.'
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'We could not reset your password. Please contact support if issue persists.'
                  data:
                    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: 'The request token.'
                  example: 91d592b62e94e6cae3919b237731143721d62f565f533413a39410fddbf40639
                email:
                  type: string
                  description: 'The user email. Must be a valid email address.'
                  example: test@ngr.ltd
                password:
                  type: string
                  description: 'The new, validated password.'
                  example: secret
              required:
                - token
                - email
                - password
      security: []
    parameters:
      -
        in: path
        name: token
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/auth/email/verify/{id}':
    get:
      summary: 'Verify account'
      operationId: verifyAccount
      description: 'Verify a new user account - This route is public to the API. You do not need it for anything on your integration.'
      parameters:
        -
          in: query
          name: expires
          description: 'The expiry timestamp of the link.'
          example: '1717860802'
          required: true
          schema:
            type: string
            description: 'The expiry timestamp of the link.'
            example: '1717860802'
        -
          in: query
          name: hash
          description: 'The unique hash for the link.'
          example: 1945cf792d5e32083db670cbba718af3384c8f06
          required: true
          schema:
            type: string
            description: 'The unique hash for the link.'
            example: 1945cf792d5e32083db670cbba718af3384c8f06
        -
          in: query
          name: signature
          description: 'The unique signature of the link.'
          example: da248ac0c9dc522dd49e4cfaf10ff662b1c770dcf2a22f7fd8f6023cae573a81
          required: true
          schema:
            type: string
            description: 'The unique signature of the link.'
            example: da248ac0c9dc522dd49e4cfaf10ff662b1c770dcf2a22f7fd8f6023cae573a81
      responses:
        302:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "<!DOCTYPE html>\n<html>\n    <head>\n        <meta charset=\"UTF-8\" />\n        <meta http-equiv=\"refresh\" content=\"0;url='https://ngr.ltd/verification?verified=false'\" />\n\n        <title>Redirecting to https://ngr.ltd/verification?verified=false</title>\n    </head>\n    <body>\n        Redirecting to <a href=\"https://ngr.ltd/verification?verified=false\">https://ngr.ltd/verification?verified=false</a>.\n    </body>\n</html>"
      tags:
        - Authentication
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'ID of the user.'
        example: 10
        required: true
        schema:
          type: integer
  /api/v1/auth/email/resend:
    get:
      summary: 'Resend verification email'
      operationId: resendVerificationEmail
      description: 'Resend the email to verify a new user account.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Sorry, your account is already verified'
                    type: object
                    example:
                      success: true
                      message: 'Sorry, your account is already verified.'
                      data: []
                    properties:
                      success:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Sorry, your account is already verified.'
                      data:
                        type: array
                        example: []
                  -
                    description: 'Verification link sent'
                    type: object
                    example:
                      success: true
                      message: 'A new verification link has been sent to your email address.'
                      data: []
                    properties:
                      success:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'A new verification link has been sent to your email address.'
                      data:
                        type: array
                        example: []
      tags:
        - Authentication
  /api/v1/auth/logout:
    post:
      summary: Logout
      operationId: logout
      description: 'Log a user out of the application.'
      parameters: []
      responses:
        200:
          description: 'Logout successful'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  message: 'Logout successful.'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Logout successful.'
                  data:
                    type: array
                    example: []
      tags:
        - Authentication
  /api/v1/businesses:
    get:
      summary: 'List businesses'
      operationId: listBusinesses
      description: 'Gets a list of all businesses.'
      parameters:
        -
          in: query
          name: page
          description: 'The page to view.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page to view.'
            example: 1
        -
          in: query
          name: filters
          description: 'Fields to filter by'
          example: []
          required: false
          schema:
            type: object
            description: 'Fields to filter by'
            example: []
            properties: {  }
        -
          in: query
          name: filters.name
          description: 'Filter by business name.'
          example: 3d7
          required: false
          schema:
            type: string
            description: 'Filter by business name.'
            example: 3d7
        -
          in: query
          name: filters.category
          description: 'Filter by the category of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: '1'
          required: false
          schema:
            type: string
            description: 'Filter by the category of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: '1'
        -
          in: query
          name: filters.lga
          description: 'Filter by the lga of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: '1'
          required: false
          schema:
            type: string
            description: 'Filter by the lga of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: '1'
        -
          in: query
          name: filters.state
          description: 'Filter by the state to filter the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: '1'
          required: false
          schema:
            type: string
            description: 'Filter by the state to filter the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: '1'
        -
          in: query
          name: filters.country
          description: 'Filter by the country of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: 161
          required: false
          schema:
            type: integer
            description: 'Filter by the country of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: 161
        -
          in: query
          name: filters.createdAt
          description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
          example: 15-06-2024
          required: false
          schema:
            type: string
            description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
            example: 15-06-2024
        -
          in: query
          name: filters.updatedAt
          description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
          example: 15-06-2024
          required: false
          schema:
            type: string
            description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
            example: 15-06-2024
        -
          in: query
          name: include
          description: 'The optional parameters to load optional data (owner and socials. eg owner,socials).'
          example: owner
          required: false
          schema:
            type: string
            description: 'The optional parameters to load optional data (owner and socials. eg owner,socials).'
            example: owner
        -
          in: query
          name: sort
          description: 'The property to sort the businesses by (can be comma-separated for multiple values. (- means descending) eg -businessName,createdAt).'
          example: '-businessName'
          required: false
          schema:
            type: string
            description: 'The property to sort the businesses by (can be comma-separated for multiple values. (- means descending) eg -businessName,createdAt).'
            example: '-businessName'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: business
                    id: 4a7b65d8-0755-4f66-9b13-30bb608ed61b
                    attributes:
                      businessName: "Rempel, Gulgowski and O'Kon"
                      category: Construction
                      location: 'Agatu, Benue State'
                      description: null
                      logo: null
                    includes: []
                    links:
                      self: 'http://api.ngr.ltd/api/v1/businesses/4a7b65d8-0755-4f66-9b13-30bb608ed61b'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: business
                      id:
                        type: string
                        example: 4a7b65d8-0755-4f66-9b13-30bb608ed61b
                      attributes:
                        type: object
                        properties:
                          businessName:
                            type: string
                            example: "Rempel, Gulgowski and O'Kon"
                          category:
                            type: string
                            example: Construction
                          location:
                            type: string
                            example: 'Agatu, Benue State'
                          description:
                            type: string
                            example: null
                          logo:
                            type: string
                            example: null
                      includes:
                        type: array
                        example: []
                      links:
                        type: object
                        properties:
                          self:
                            type: string
                            example: 'http://api.ngr.ltd/api/v1/businesses/4a7b65d8-0755-4f66-9b13-30bb608ed61b'
      tags:
        - Businesses
      security: []
  '/api/v1/businesses/{business_uuid}':
    get:
      summary: 'Fetch business'
      operationId: fetchBusiness
      description: 'Gets the details of a specified business.'
      parameters:
        -
          in: query
          name: include
          description: 'The optional parameters to load optional data (owner and socials).'
          example: 'owner,socials'
          required: false
          schema:
            type: string
            description: 'The optional parameters to load optional data (owner and socials).'
            example: 'owner,socials'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: business
                    id: 52ccd444-5b20-4a98-8d48-900f86dd9a86
                    attributes:
                      businessName: 'Haag and Sons'
                      category: Construction
                      location: 'Esit Eket, Akwa Ibom State'
                      description: null
                      logo: null
                      country: Nigeria
                      state: 'Akwa Ibom State'
                      lga: 'Esit Eket'
                      createdAt: '2024-11-08T20:40:49.000000Z'
                      updatedAt: '2024-11-08T20:40:49.000000Z'
                    includes: []
                    links:
                      self: 'http://api.ngr.ltd/api/v1/businesses/52ccd444-5b20-4a98-8d48-900f86dd9a86'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: business
                      id:
                        type: string
                        example: 52ccd444-5b20-4a98-8d48-900f86dd9a86
                      attributes:
                        type: object
                        properties:
                          businessName:
                            type: string
                            example: 'Haag and Sons'
                          category:
                            type: string
                            example: Construction
                          location:
                            type: string
                            example: 'Esit Eket, Akwa Ibom State'
                          description:
                            type: string
                            example: null
                          logo:
                            type: string
                            example: null
                          country:
                            type: string
                            example: Nigeria
                          state:
                            type: string
                            example: 'Akwa Ibom State'
                          lga:
                            type: string
                            example: 'Esit Eket'
                          createdAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                          updatedAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                      includes:
                        type: array
                        example: []
                      links:
                        type: object
                        properties:
                          self:
                            type: string
                            example: 'http://api.ngr.ltd/api/v1/businesses/52ccd444-5b20-4a98-8d48-900f86dd9a86'
      tags:
        - Businesses
      security: []
    parameters:
      -
        in: path
        name: business_uuid
        description: 'The UUID of the business.'
        example: 85573106-63da-46fa-9434-3bd87e3cd7f4
        required: true
        schema:
          type: string
  /api/v1/categories:
    get:
      summary: 'List categories'
      operationId: listCategories
      description: 'Gets a list of all categories.'
      parameters:
        -
          in: query
          name: page
          description: 'The page to view.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page to view.'
            example: 1
        -
          in: query
          name: paginate
          description: 'The total to show per page (use a high number to get all).'
          example: 130
          required: false
          schema:
            type: integer
            description: 'The total to show per page (use a high number to get all).'
            example: 130
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: category
                    id: 25
                    attributes:
                      name: 'Adipisci quidem nostrum qui commodi incidunt iure.'
                      slug: adipisci-quidem-nostrum-qui-commodi-incidunt-iure
                      parent: null
                      icon: null
                    relationships:
                      businesses:
                        data: []
                    includes: []
                    links:
                      -
                        self: 'http://api.ngr.ltd/api/v1/categories/916348d4-3c13-4e15-b66e-6363b01cc906'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: category
                      id:
                        type: integer
                        example: 25
                      attributes:
                        type: object
                        properties:
                          name:
                            type: string
                            example: 'Adipisci quidem nostrum qui commodi incidunt iure.'
                          slug:
                            type: string
                            example: adipisci-quidem-nostrum-qui-commodi-incidunt-iure
                          parent:
                            type: string
                            example: null
                          icon:
                            type: string
                            example: null
                      relationships:
                        type: object
                        properties:
                          businesses:
                            type: object
                            properties:
                              data:
                                type: array
                                example: []
                      includes:
                        type: array
                        example: []
                      links:
                        type: array
                        example:
                          -
                            self: 'http://api.ngr.ltd/api/v1/categories/916348d4-3c13-4e15-b66e-6363b01cc906'
                        items:
                          type: object
                          properties:
                            self:
                              type: string
                              example: 'http://api.ngr.ltd/api/v1/categories/916348d4-3c13-4e15-b66e-6363b01cc906'
      tags:
        - Categories
      security: []
  '/api/v1/categories/{category_uuid}':
    get:
      summary: 'Fetch category'
      operationId: fetchCategory
      description: 'Gets the details of a specified category.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: category
                    id: 26
                    attributes:
                      name: 'Modi ipsum nostrum omnis autem et.'
                      slug: modi-ipsum-nostrum-omnis-autem-et
                      parent: null
                      icon: null
                    relationships:
                      businesses:
                        data:
                          -
                            type: business
                            id: e98ace9e-d374-478b-a91c-fd993ea12141
                            attributes:
                              businessName: 'Feeney, Leffler and Glover'
                              category: 'Modi ipsum nostrum omnis autem et.'
                              location: 'Kibiya, Kano State'
                              description: null
                              logo: null
                            includes: []
                            links:
                              self: 'http://api.ngr.ltd/api/v1/businesses/e98ace9e-d374-478b-a91c-fd993ea12141'
                    includes: []
                    links:
                      -
                        self: 'http://api.ngr.ltd/api/v1/categories/e7d3aef1-19d8-42da-b4ef-36c2ec747364'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: category
                      id:
                        type: integer
                        example: 26
                      attributes:
                        type: object
                        properties:
                          name:
                            type: string
                            example: 'Modi ipsum nostrum omnis autem et.'
                          slug:
                            type: string
                            example: modi-ipsum-nostrum-omnis-autem-et
                          parent:
                            type: string
                            example: null
                          icon:
                            type: string
                            example: null
                      relationships:
                        type: object
                        properties:
                          businesses:
                            type: object
                            properties:
                              data:
                                type: array
                                example:
                                  -
                                    type: business
                                    id: e98ace9e-d374-478b-a91c-fd993ea12141
                                    attributes:
                                      businessName: 'Feeney, Leffler and Glover'
                                      category: 'Modi ipsum nostrum omnis autem et.'
                                      location: 'Kibiya, Kano State'
                                      description: null
                                      logo: null
                                    includes: []
                                    links:
                                      self: 'http://api.ngr.ltd/api/v1/businesses/e98ace9e-d374-478b-a91c-fd993ea12141'
                                items:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      example: business
                                    id:
                                      type: string
                                      example: e98ace9e-d374-478b-a91c-fd993ea12141
                                    attributes:
                                      type: object
                                      properties: { businessName: { type: string, example: 'Feeney, Leffler and Glover' }, category: { type: string, example: 'Modi ipsum nostrum omnis autem et.' }, location: { type: string, example: 'Kibiya, Kano State' }, description: { type: string, example: null }, logo: { type: string, example: null } }
                                    includes:
                                      type: array
                                      example: []
                                    links:
                                      type: object
                                      properties: { self: { type: string, example: 'http://api.ngr.ltd/api/v1/businesses/e98ace9e-d374-478b-a91c-fd993ea12141' } }
                      includes:
                        type: array
                        example: []
                      links:
                        type: array
                        example:
                          -
                            self: 'http://api.ngr.ltd/api/v1/categories/e7d3aef1-19d8-42da-b4ef-36c2ec747364'
                        items:
                          type: object
                          properties:
                            self:
                              type: string
                              example: 'http://api.ngr.ltd/api/v1/categories/e7d3aef1-19d8-42da-b4ef-36c2ec747364'
      tags:
        - Categories
      security: []
    parameters:
      -
        in: path
        name: category_uuid
        description: 'The UUID of the category.'
        example: 85573106-63da-46fa-9434-3bd87e3cd7f4
        required: true
        schema:
          type: string
  /api/v1/location:
    get:
      summary: 'Get all locations'
      operationId: getAllLocations
      description: 'Gets a list of all locations.'
      parameters:
        -
          in: query
          name: page
          description: 'The page to view.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page to view.'
            example: 1
        -
          in: query
          name: paginate
          description: 'The total to show per page (use a high number to get all).'
          example: 775
          required: false
          schema:
            type: integer
            description: 'The total to show per page (use a high number to get all).'
            example: 775
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: state
                    id: 1
                    attributes:
                      name: 'Abia State'
                      country: Nigeria
                    relationships:
                      localGovernmentAreas:
                        -
                          type: lga
                          id: 1
                          attributes:
                            name: 'Aba North'
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 2
                          attributes:
                            name: 'Aba South'
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 3
                          attributes:
                            name: Arochukwu
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 4
                          attributes:
                            name: Bende
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 5
                          attributes:
                            name: Ikwuano
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 6
                          attributes:
                            name: 'Isiala Ngwa North'
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 7
                          attributes:
                            name: 'Isiala Ngwa South'
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 8
                          attributes:
                            name: Isuikwuato
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 9
                          attributes:
                            name: 'Obi Ngwa'
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 10
                          attributes:
                            name: Ohafia
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 11
                          attributes:
                            name: Osisioma
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 12
                          attributes:
                            name: Ugwunagbo
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 13
                          attributes:
                            name: 'Ukwa East'
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 14
                          attributes:
                            name: 'Ukwa West'
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 15
                          attributes:
                            name: Umu-Nneochi
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 16
                          attributes:
                            name: 'Umuahia North'
                            state: 'Abia State'
                          links: []
                        -
                          type: lga
                          id: 17
                          attributes:
                            name: 'Umuahia South'
                            state: 'Abia State'
                          links: []
                    links: []
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: state
                      id:
                        type: integer
                        example: 1
                      attributes:
                        type: object
                        properties:
                          name:
                            type: string
                            example: 'Abia State'
                          country:
                            type: string
                            example: Nigeria
                      relationships:
                        type: object
                        properties:
                          localGovernmentAreas:
                            type: array
                            example:
                              -
                                type: lga
                                id: 1
                                attributes:
                                  name: 'Aba North'
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 2
                                attributes:
                                  name: 'Aba South'
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 3
                                attributes:
                                  name: Arochukwu
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 4
                                attributes:
                                  name: Bende
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 5
                                attributes:
                                  name: Ikwuano
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 6
                                attributes:
                                  name: 'Isiala Ngwa North'
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 7
                                attributes:
                                  name: 'Isiala Ngwa South'
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 8
                                attributes:
                                  name: Isuikwuato
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 9
                                attributes:
                                  name: 'Obi Ngwa'
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 10
                                attributes:
                                  name: Ohafia
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 11
                                attributes:
                                  name: Osisioma
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 12
                                attributes:
                                  name: Ugwunagbo
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 13
                                attributes:
                                  name: 'Ukwa East'
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 14
                                attributes:
                                  name: 'Ukwa West'
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 15
                                attributes:
                                  name: Umu-Nneochi
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 16
                                attributes:
                                  name: 'Umuahia North'
                                  state: 'Abia State'
                                links: []
                              -
                                type: lga
                                id: 17
                                attributes:
                                  name: 'Umuahia South'
                                  state: 'Abia State'
                                links: []
                            items:
                              type: object
                              properties:
                                type:
                                  type: string
                                  example: lga
                                id:
                                  type: integer
                                  example: 1
                                attributes:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                      example: 'Aba North'
                                    state:
                                      type: string
                                      example: 'Abia State'
                                links:
                                  type: array
                                  example: []
                      links:
                        type: array
                        example: []
      tags:
        - Location
      security: []
  /api/v1/templates:
    get:
      summary: 'List templates'
      operationId: listTemplates
      description: 'Gets a list of all templates.'
      parameters:
        -
          in: query
          name: page
          description: 'The page to view.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page to view.'
            example: 1
        -
          in: query
          name: paginate
          description: 'The total to show per page (use a high number to get all).'
          example: 130
          required: false
          schema:
            type: integer
            description: 'The total to show per page (use a high number to get all).'
            example: 130
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: template
                    id: 0c3528b1-423d-436b-b239-7f90619dab0d
                    attributes:
                      name: 'Aron Ledner'
                      thumbnail: 'C:\Users\victo\AppData\Local\Temp\fak466A.tmp'
                    relationships:
                      build:
                        data:
                          type: website
                          id: b16b34c1-cfee-45ff-84f4-3019445e574b
                          attributes:
                            meta:
                              id: b16b34c1-cfee-45ff-84f4-3019445e574b
                              template: 0c3528b1-423d-436b-b239-7f90619dab0d
                              status: draft
                              domainUrl: '-OCYEd.ngr.ltd'
                              thumbnail: ''
                          includes: []
                          relationships: []
                      categories:
                        data: []
                    includes: []
                    links:
                      -
                        self: 'http://api.ngr.ltd/api/v1/templates/83'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: template
                      id:
                        type: string
                        example: 0c3528b1-423d-436b-b239-7f90619dab0d
                      attributes:
                        type: object
                        properties:
                          name:
                            type: string
                            example: 'Aron Ledner'
                          thumbnail:
                            type: string
                            example: 'C:\Users\victo\AppData\Local\Temp\fak466A.tmp'
                      relationships:
                        type: object
                        properties:
                          build:
                            type: object
                            properties:
                              data:
                                type: object
                                properties:
                                  type:
                                    type: string
                                    example: website
                                  id:
                                    type: string
                                    example: b16b34c1-cfee-45ff-84f4-3019445e574b
                                  attributes:
                                    type: object
                                    properties:
                                      meta: { type: object, properties: { id: { type: string, example: b16b34c1-cfee-45ff-84f4-3019445e574b }, template: { type: string, example: 0c3528b1-423d-436b-b239-7f90619dab0d }, status: { type: string, example: draft }, domainUrl: { type: string, example: '-OCYEd.ngr.ltd' }, thumbnail: { type: string, example: '' } } }
                                  includes:
                                    type: array
                                    example: []
                                  relationships:
                                    type: array
                                    example: []
                          categories:
                            type: object
                            properties:
                              data:
                                type: array
                                example: []
                      includes:
                        type: array
                        example: []
                      links:
                        type: array
                        example:
                          -
                            self: 'http://api.ngr.ltd/api/v1/templates/83'
                        items:
                          type: object
                          properties:
                            self:
                              type: string
                              example: 'http://api.ngr.ltd/api/v1/templates/83'
      tags:
        - Templates
      security: []
  '/api/v1/templates/{template_id}':
    get:
      summary: 'Fetch template'
      operationId: fetchTemplate
      description: 'Gets the details of a specified template.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: template
                    id: 09d683e2-a437-4e4e-ab0f-b442864a4a69
                    attributes:
                      name: 'Mrs. Donna Kessler DDS'
                      thumbnail: 'C:\Users\victo\AppData\Local\Temp\fak46B9.tmp'
                    relationships:
                      build:
                        data:
                          type: website
                          id: 94f2e0e5-0292-4177-acac-eb764d13493e
                          attributes:
                            meta:
                              id: 94f2e0e5-0292-4177-acac-eb764d13493e
                              template: 09d683e2-a437-4e4e-ab0f-b442864a4a69
                              status: draft
                              domainUrl: '-JvQtc.ngr.ltd'
                              thumbnail: ''
                          includes: []
                          relationships: []
                      categories:
                        data:
                          -
                            type: category
                            id: 27
                            attributes:
                              name: 'Rerum voluptas ab maxime qui rerum sed.'
                              slug: rerum-voluptas-ab-maxime-qui-rerum-sed
                              parent: null
                              icon: null
                            relationships:
                              businesses:
                                data: []
                            includes: []
                            links:
                              -
                                self: 'http://api.ngr.ltd/api/v1/categories/2c1d0366-c70a-4213-9037-34f91c3c4d1c'
                    includes: []
                    links:
                      -
                        self: 'http://api.ngr.ltd/api/v1/templates/84'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: template
                      id:
                        type: string
                        example: 09d683e2-a437-4e4e-ab0f-b442864a4a69
                      attributes:
                        type: object
                        properties:
                          name:
                            type: string
                            example: 'Mrs. Donna Kessler DDS'
                          thumbnail:
                            type: string
                            example: 'C:\Users\victo\AppData\Local\Temp\fak46B9.tmp'
                      relationships:
                        type: object
                        properties:
                          build:
                            type: object
                            properties:
                              data:
                                type: object
                                properties:
                                  type:
                                    type: string
                                    example: website
                                  id:
                                    type: string
                                    example: 94f2e0e5-0292-4177-acac-eb764d13493e
                                  attributes:
                                    type: object
                                    properties:
                                      meta: { type: object, properties: { id: { type: string, example: 94f2e0e5-0292-4177-acac-eb764d13493e }, template: { type: string, example: 09d683e2-a437-4e4e-ab0f-b442864a4a69 }, status: { type: string, example: draft }, domainUrl: { type: string, example: '-JvQtc.ngr.ltd' }, thumbnail: { type: string, example: '' } } }
                                  includes:
                                    type: array
                                    example: []
                                  relationships:
                                    type: array
                                    example: []
                          categories:
                            type: object
                            properties:
                              data:
                                type: array
                                example:
                                  -
                                    type: category
                                    id: 27
                                    attributes:
                                      name: 'Rerum voluptas ab maxime qui rerum sed.'
                                      slug: rerum-voluptas-ab-maxime-qui-rerum-sed
                                      parent: null
                                      icon: null
                                    relationships:
                                      businesses: { data: [] }
                                    includes: []
                                    links:
                                      - { self: 'http://api.ngr.ltd/api/v1/categories/2c1d0366-c70a-4213-9037-34f91c3c4d1c' }
                                items:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      example: category
                                    id:
                                      type: integer
                                      example: 27
                                    attributes:
                                      type: object
                                      properties: { name: { type: string, example: 'Rerum voluptas ab maxime qui rerum sed.' }, slug: { type: string, example: rerum-voluptas-ab-maxime-qui-rerum-sed }, parent: { type: string, example: null }, icon: { type: string, example: null } }
                                    relationships:
                                      type: object
                                      properties: { businesses: { type: object, properties: { data: { type: array, example: [] } } } }
                                    includes:
                                      type: array
                                      example: []
                                    links:
                                      type: array
                                      example: [{ self: 'http://api.ngr.ltd/api/v1/categories/2c1d0366-c70a-4213-9037-34f91c3c4d1c' }]
                                      items: { type: object, properties: { self: { type: string, example: 'http://api.ngr.ltd/api/v1/categories/2c1d0366-c70a-4213-9037-34f91c3c4d1c' } } }
                      includes:
                        type: array
                        example: []
                      links:
                        type: array
                        example:
                          -
                            self: 'http://api.ngr.ltd/api/v1/templates/84'
                        items:
                          type: object
                          properties:
                            self:
                              type: string
                              example: 'http://api.ngr.ltd/api/v1/templates/84'
      tags:
        - Templates
      security: []
    parameters:
      -
        in: path
        name: template_id
        description: 'The ID of the template.'
        example: 1
        required: true
        schema:
          type: integer
      -
        in: path
        name: id
        description: 'The ID of the template.'
        example: 1
        required: true
        schema:
          type: integer
  /api/v1/users:
    get:
      summary: 'List users'
      operationId: listUsers
      description: 'Gets a list of all users.'
      parameters:
        -
          in: query
          name: page
          description: 'The page to view.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page to view.'
            example: 1
        -
          in: query
          name: paginate
          description: 'The total to show per page (use a high number to get all).'
          example: 130
          required: false
          schema:
            type: integer
            description: 'The total to show per page (use a high number to get all).'
            example: 130
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: business
                    id: f8ea59a1-1485-4508-aba5-7405e08ae5aa
                    attributes:
                      email: modesta58@example.net
                      firstName: Manuel
                      lastName: Hamill
                      otherName: null
                      emailVerifiedAt: '2024-11-08T20:40:49.000000Z'
                    relationships: []
                    links:
                      self: 'http://api.ngr.ltd/api/v1/users/f8ea59a1-1485-4508-aba5-7405e08ae5aa'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: business
                      id:
                        type: string
                        example: f8ea59a1-1485-4508-aba5-7405e08ae5aa
                      attributes:
                        type: object
                        properties:
                          email:
                            type: string
                            example: modesta58@example.net
                          firstName:
                            type: string
                            example: Manuel
                          lastName:
                            type: string
                            example: Hamill
                          otherName:
                            type: string
                            example: null
                          emailVerifiedAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                      relationships:
                        type: array
                        example: []
                      links:
                        type: object
                        properties:
                          self:
                            type: string
                            example: 'http://api.ngr.ltd/api/v1/users/f8ea59a1-1485-4508-aba5-7405e08ae5aa'
      tags:
        - Users
      security: []
  '/api/v1/users/{user_uuid}':
    get:
      summary: 'Fetch user'
      operationId: fetchUser
      description: 'Gets the details of a specified user.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: business
                    id: 0684f3d9-d38f-4163-a35c-ef53c96e2ab4
                    attributes:
                      email: carter.raleigh@example.com
                      firstName: Carolina
                      lastName: Balistreri
                      otherName: null
                      emailVerifiedAt: '2024-11-08T20:40:49.000000Z'
                      accountType: business
                      phone1: '+14198676281'
                      phone2: null
                      greet: 'Hello Carter.raleigh'
                      gender: null
                      avatar: 'https://source.boringavatars.com/beam/120/carter.raleigh?colors=264653,2a9d8f,e9c46a,f4a261,e76f51,FD6C6B,2CFF6D8C,2CFF3A80,2C3E2E6D,2C2A1D5D'
                      lastLogin: null
                      createdAt: '2024-11-08T20:40:49.000000Z'
                    relationships:
                      businesses:
                        data:
                          -
                            type: business
                            id: d5ec3f52-5a41-4a18-bd54-f1d05e996437
                            attributes:
                              businessName: 'Homenick, Schimmel and Glover'
                              category: 'Arts and Entertainment'
                              location: 'Agatu, Benue State'
                              description: null
                              logo: null
                            includes: []
                            links:
                              self: 'http://api.ngr.ltd/api/v1/businesses/d5ec3f52-5a41-4a18-bd54-f1d05e996437'
                    links:
                      self: 'http://api.ngr.ltd/api/v1/users/0684f3d9-d38f-4163-a35c-ef53c96e2ab4'
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: business
                      id:
                        type: string
                        example: 0684f3d9-d38f-4163-a35c-ef53c96e2ab4
                      attributes:
                        type: object
                        properties:
                          email:
                            type: string
                            example: carter.raleigh@example.com
                          firstName:
                            type: string
                            example: Carolina
                          lastName:
                            type: string
                            example: Balistreri
                          otherName:
                            type: string
                            example: null
                          emailVerifiedAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                          accountType:
                            type: string
                            example: business
                          phone1:
                            type: string
                            example: '+14198676281'
                          phone2:
                            type: string
                            example: null
                          greet:
                            type: string
                            example: 'Hello Carter.raleigh'
                          gender:
                            type: string
                            example: null
                          avatar:
                            type: string
                            example: 'https://source.boringavatars.com/beam/120/carter.raleigh?colors=264653,2a9d8f,e9c46a,f4a261,e76f51,FD6C6B,2CFF6D8C,2CFF3A80,2C3E2E6D,2C2A1D5D'
                          lastLogin:
                            type: string
                            example: null
                          createdAt:
                            type: string
                            example: '2024-11-08T20:40:49.000000Z'
                      relationships:
                        type: object
                        properties:
                          businesses:
                            type: object
                            properties:
                              data:
                                type: array
                                example:
                                  -
                                    type: business
                                    id: d5ec3f52-5a41-4a18-bd54-f1d05e996437
                                    attributes:
                                      businessName: 'Homenick, Schimmel and Glover'
                                      category: 'Arts and Entertainment'
                                      location: 'Agatu, Benue State'
                                      description: null
                                      logo: null
                                    includes: []
                                    links:
                                      self: 'http://api.ngr.ltd/api/v1/businesses/d5ec3f52-5a41-4a18-bd54-f1d05e996437'
                                items:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      example: business
                                    id:
                                      type: string
                                      example: d5ec3f52-5a41-4a18-bd54-f1d05e996437
                                    attributes:
                                      type: object
                                      properties: { businessName: { type: string, example: 'Homenick, Schimmel and Glover' }, category: { type: string, example: 'Arts and Entertainment' }, location: { type: string, example: 'Agatu, Benue State' }, description: { type: string, example: null }, logo: { type: string, example: null } }
                                    includes:
                                      type: array
                                      example: []
                                    links:
                                      type: object
                                      properties: { self: { type: string, example: 'http://api.ngr.ltd/api/v1/businesses/d5ec3f52-5a41-4a18-bd54-f1d05e996437' } }
                      links:
                        type: object
                        properties:
                          self:
                            type: string
                            example: 'http://api.ngr.ltd/api/v1/users/0684f3d9-d38f-4163-a35c-ef53c96e2ab4'
      tags:
        - Users
      security: []
    parameters:
      -
        in: path
        name: user_uuid
        description: 'The UUID of the user.'
        example: 85573106-63da-46fa-9434-3bd87e3cd7f4
        required: true
        schema:
          type: string
  /api/v1/users/profile:
    post:
      summary: 'Update profile'
      operationId: updateProfile
      description: "Updates the currently logged in user's profile."
      parameters: []
      responses:
        200:
          description: 'Profile updated'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  message: 'Profile updated.'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Profile updated.'
                  data:
                    type: array
                    example: []
      tags:
        - Users
      requestBody:
        required: false
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                firstName:
                  type: string
                  description: 'First name of the user. Must not be greater than 50 characters.'
                  example: John
                lastName:
                  type: string
                  description: 'Last name of the user. Must not be greater than 50 characters.'
                  example: Olu
                otherName:
                  type: string
                  description: 'Other name of the user. Must not be greater than 50 characters.'
                  example: Doe
                gender:
                  type: string
                  description: 'Gender of the user. Must not be greater than 50 characters.'
                  example: Male
                phone1:
                  type: string
                  description: 'Primary phone number of the user. Must not be greater than 50 characters.'
                  example: '+2348123156783'
                phone2:
                  type: string
                  description: 'Alternative phone number of the user. Must not be greater than 50 characters.'
                  example: '+2348123156783'
                address1:
                  type: string
                  description: 'Address of the user. Must not be greater than 50 characters.'
                  example: '56, Mike street, Lekki, Lagos'
                address2:
                  type: string
                  description: 'Country of the user. Must not be greater than 50 characters.'
                  example: Nigeria
                avatar:
                  type: string
                  format: binary
                  description: 'Their profile picture. Must be an image. Must not be greater than 10000 kilobytes.'
  /api/v1/users/password:
    put:
      summary: 'Change password'
      operationId: changePassword
      description: "Updates the currently logged in user's password."
      parameters: []
      responses:
        200:
          description: 'Password changed'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  message: 'Password changed.'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Password changed.'
                  data:
                    type: array
                    example: []
        409:
          description: 'Invalid current password'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: false
                  message: 'Invalid current password.'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Invalid current password.'
                  data:
                    type: array
                    example: []
      tags:
        - Users
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                currentPassword:
                  type: string
                  description: 'Current password of the user.'
                  example: password
                newPassword:
                  type: string
                  description: 'New password of the user.'
                  example: passwOrd
  '/api/v1/website/like/{website_uuid}':
    get:
      summary: 'Like a website'
      operationId: likeAWebsite
      description: "Adds a website to the currently logged in user's favorites."
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: false
                  message: 'Unauthenticated, Please login.'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthenticated, Please login.'
                  data:
                    type: array
                    example: []
      tags:
        - 'Website Management'
    parameters:
      -
        in: path
        name: website_uuid
        description: 'The UUID of the website to be liked.'
        example: 85573106-63da-46fa-9434-3bd87e3cd7f4
        required: true
        schema:
          type: string
  '/api/v1/website/unlike/{website_uuid}':
    get:
      summary: 'Unlike a website'
      operationId: unlikeAWebsite
      description: "Removes a website from the currently logged in user's favorites."
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  success: false
                  message: 'Unauthenticated, Please login.'
                  data: []
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthenticated, Please login.'
                  data:
                    type: array
                    example: []
      tags:
        - 'Website Management'
    parameters:
      -
        in: path
        name: website_uuid
        description: 'The UUID of the website to be unliked.'
        example: 85573106-63da-46fa-9434-3bd87e3cd7f4
        required: true
        schema:
          type: string
  /api/v1/website/my-favorites:
    get:
      summary: 'Get liked websites'
      operationId: getLikedWebsites
      description: 'Gets a list of all websites liked by the currently logged in user.'
      parameters:
        -
          in: query
          name: page
          description: 'The page to view.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page to view.'
            example: 1
        -
          in: query
          name: filters
          description: 'Fields to filter by'
          example: []
          required: false
          schema:
            type: object
            description: 'Fields to filter by'
            example: []
            properties: {  }
        -
          in: query
          name: filters.business
          description: 'Filter by the owners of the websites (can be comma-separated for multiple values. eg 1,2,3).'
          example: d311b28a-17d6-45f8-a05c-032a978d8ca0
          required: false
          schema:
            type: string
            description: 'Filter by the owners of the websites (can be comma-separated for multiple values. eg 1,2,3).'
            example: d311b28a-17d6-45f8-a05c-032a978d8ca0
        -
          in: query
          name: filters.lga
          description: 'Filter by the lga of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: '1'
          required: false
          schema:
            type: string
            description: 'Filter by the lga of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: '1'
        -
          in: query
          name: filters.state
          description: 'Filter by the state to filter the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: '1'
          required: false
          schema:
            type: string
            description: 'Filter by the state to filter the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: '1'
        -
          in: query
          name: filters.country
          description: 'Filter by the country of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: 161
          required: false
          schema:
            type: integer
            description: 'Filter by the country of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: 161
        -
          in: query
          name: filters.createdAt
          description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
          example: 15-06-2024
          required: false
          schema:
            type: string
            description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
            example: 15-06-2024
        -
          in: query
          name: filters.updatedAt
          description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
          example: 15-06-2024
          required: false
          schema:
            type: string
            description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
            example: 15-06-2024
        -
          in: query
          name: include
          description: 'The optional parameters to load optional data (business and owner. eg business,owner).'
          example: business
          required: false
          schema:
            type: string
            description: 'The optional parameters to load optional data (business and owner. eg business,owner).'
            example: business
        -
          in: query
          name: sort
          description: 'The property to sort the websites by (can be comma-separated for multiple values. (- means descending) eg -domainName,createdAt,publishedAt).'
          example: '-domainName'
          required: false
          schema:
            type: string
            description: 'The property to sort the websites by (can be comma-separated for multiple values. (- means descending) eg -domainName,createdAt,publishedAt).'
            example: '-domainName'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: website
                    id: 3751b90c-710e-4961-a4c6-1293f5d012ab
                    attributes:
                      meta:
                        id: 3751b90c-710e-4961-a4c6-1293f5d012ab
                        template: null
                        status: draft
                        domainUrl: '-8MDdB.ngr.ltd'
                        thumbnail: ''
                      navigation:
                        logo:
                          src: 'https://via.placeholder.com/640x480.png/00dd33?text=architecto'
                          alt: 'et animi quos'
                        links: []
                        cta:
                          label: 'Et fugiat.'
                          url: 'http://www.dach.com/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html'
                      hero:
                        title: 'omnis nostrum aut'
                        subtitle: 'adipisci quidem nostrum'
                        image:
                          src: 'https://via.placeholder.com/640x480.png/0077ff?text=qui'
                          alt: 'incidunt iure odit'
                        cta:
                          label: 'Et modi ipsum.'
                          url: 'http://www.predovic.biz/consequatur-aut-dolores-enim-non-facere-tempora.html'
                      services:
                        title: 'Voluptatem laboriosam praesentium.'
                        imageSrc: ''
                        imageAlt: null
                        description: 'Adipisci molestias fugit deleniti distinctio eum doloremque id.'
                        items: []
                      testimonials:
                        title: 'Libero aliquam veniam corporis.'
                        imageSrc: ''
                        imageAlt: null
                        description: 'Mollitia deleniti nemo.'
                        items: []
                      footer:
                        address: "633 Ward Dale\nNorth Eileen, AL 06985"
                        primaryPhone: 234-623-5439
                        secondaryPhone: '+1 (432) 789-7092'
                        email: garett.runolfsson@yahoo.com
                        columns: []
                        social:
                          facebook: null
                          instagram: null
                          linkedin: null
                          threads: null
                          tiktok: null
                          x: null
                    includes:
                      business: null
                    relationships: []
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: website
                      id:
                        type: string
                        example: 3751b90c-710e-4961-a4c6-1293f5d012ab
                      attributes:
                        type: object
                        properties:
                          meta:
                            type: object
                            properties:
                              id:
                                type: string
                                example: 3751b90c-710e-4961-a4c6-1293f5d012ab
                              template:
                                type: string
                                example: null
                              status:
                                type: string
                                example: draft
                              domainUrl:
                                type: string
                                example: '-8MDdB.ngr.ltd'
                              thumbnail:
                                type: string
                                example: ''
                          navigation:
                            type: object
                            properties:
                              logo:
                                type: object
                                properties:
                                  src:
                                    type: string
                                    example: 'https://via.placeholder.com/640x480.png/00dd33?text=architecto'
                                  alt:
                                    type: string
                                    example: 'et animi quos'
                              links:
                                type: array
                                example: []
                              cta:
                                type: object
                                properties:
                                  label:
                                    type: string
                                    example: 'Et fugiat.'
                                  url:
                                    type: string
                                    example: 'http://www.dach.com/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html'
                          hero:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'omnis nostrum aut'
                              subtitle:
                                type: string
                                example: 'adipisci quidem nostrum'
                              image:
                                type: object
                                properties:
                                  src:
                                    type: string
                                    example: 'https://via.placeholder.com/640x480.png/0077ff?text=qui'
                                  alt:
                                    type: string
                                    example: 'incidunt iure odit'
                              cta:
                                type: object
                                properties:
                                  label:
                                    type: string
                                    example: 'Et modi ipsum.'
                                  url:
                                    type: string
                                    example: 'http://www.predovic.biz/consequatur-aut-dolores-enim-non-facere-tempora.html'
                          services:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'Voluptatem laboriosam praesentium.'
                              imageSrc:
                                type: string
                                example: ''
                              imageAlt:
                                type: string
                                example: null
                              description:
                                type: string
                                example: 'Adipisci molestias fugit deleniti distinctio eum doloremque id.'
                              items:
                                type: array
                                example: []
                          testimonials:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'Libero aliquam veniam corporis.'
                              imageSrc:
                                type: string
                                example: ''
                              imageAlt:
                                type: string
                                example: null
                              description:
                                type: string
                                example: 'Mollitia deleniti nemo.'
                              items:
                                type: array
                                example: []
                          footer:
                            type: object
                            properties:
                              address:
                                type: string
                                example: "633 Ward Dale\nNorth Eileen, AL 06985"
                              primaryPhone:
                                type: string
                                example: 234-623-5439
                              secondaryPhone:
                                type: string
                                example: '+1 (432) 789-7092'
                              email:
                                type: string
                                example: garett.runolfsson@yahoo.com
                              columns:
                                type: array
                                example: []
                              social:
                                type: object
                                properties:
                                  facebook:
                                    type: string
                                    example: null
                                  instagram:
                                    type: string
                                    example: null
                                  linkedin:
                                    type: string
                                    example: null
                                  threads:
                                    type: string
                                    example: null
                                  tiktok:
                                    type: string
                                    example: null
                                  x:
                                    type: string
                                    example: null
                      includes:
                        type: object
                        properties:
                          business:
                            type: string
                            example: null
                      relationships:
                        type: array
                        example: []
      tags:
        - 'Website Management'
  '/api/v1/website/{uuid}':
    put:
      summary: 'Update a website'
      operationId: updateAWebsite
      description: 'Update the specified website in storage.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: website
                    id: a6deea3e-0993-420c-a687-f8c596c3ca0d
                    attributes:
                      meta:
                        id: a6deea3e-0993-420c-a687-f8c596c3ca0d
                        template: null
                        status: draft
                        domainUrl: '-VYa3P.ngr.ltd'
                        thumbnail: ''
                      navigation:
                        logo:
                          src: 'https://via.placeholder.com/640x480.png/003355?text=et'
                          alt: 'quos velit et'
                        links: []
                        cta:
                          label: 'Sunt nihil.'
                          url: 'http://www.dickens.com/deserunt-aut-ab-provident-perspiciatis-quo-omnis-nostrum'
                      hero:
                        title: 'aut adipisci quidem'
                        subtitle: 'nostrum qui commodi'
                        image:
                          src: 'https://via.placeholder.com/640x480.png/00ffee?text=incidunt'
                          alt: 'odit et et'
                        cta:
                          label: 'Ipsum nostrum omnis.'
                          url: 'http://mclaughlin.info/dolores-enim-non-facere-tempora'
                      services:
                        title: 'Voluptatem laboriosam praesentium.'
                        imageSrc: ''
                        imageAlt: null
                        description: 'Adipisci molestias fugit deleniti distinctio eum doloremque id.'
                        items: []
                      testimonials:
                        title: 'Libero aliquam veniam corporis.'
                        imageSrc: ''
                        imageAlt: null
                        description: 'Mollitia deleniti nemo.'
                        items: []
                      footer:
                        address: "633 Ward Dale\nNorth Eileen, AL 06985"
                        primaryPhone: 234-623-5439
                        secondaryPhone: '+1 (432) 789-7092'
                        email: garett.runolfsson@yahoo.com
                        columns: []
                        social:
                          facebook: null
                          instagram: null
                          linkedin: null
                          threads: null
                          tiktok: null
                          x: null
                    includes:
                      business: null
                    relationships: []
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: website
                      id:
                        type: string
                        example: a6deea3e-0993-420c-a687-f8c596c3ca0d
                      attributes:
                        type: object
                        properties:
                          meta:
                            type: object
                            properties:
                              id:
                                type: string
                                example: a6deea3e-0993-420c-a687-f8c596c3ca0d
                              template:
                                type: string
                                example: null
                              status:
                                type: string
                                example: draft
                              domainUrl:
                                type: string
                                example: '-VYa3P.ngr.ltd'
                              thumbnail:
                                type: string
                                example: ''
                          navigation:
                            type: object
                            properties:
                              logo:
                                type: object
                                properties:
                                  src:
                                    type: string
                                    example: 'https://via.placeholder.com/640x480.png/003355?text=et'
                                  alt:
                                    type: string
                                    example: 'quos velit et'
                              links:
                                type: array
                                example: []
                              cta:
                                type: object
                                properties:
                                  label:
                                    type: string
                                    example: 'Sunt nihil.'
                                  url:
                                    type: string
                                    example: 'http://www.dickens.com/deserunt-aut-ab-provident-perspiciatis-quo-omnis-nostrum'
                          hero:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'aut adipisci quidem'
                              subtitle:
                                type: string
                                example: 'nostrum qui commodi'
                              image:
                                type: object
                                properties:
                                  src:
                                    type: string
                                    example: 'https://via.placeholder.com/640x480.png/00ffee?text=incidunt'
                                  alt:
                                    type: string
                                    example: 'odit et et'
                              cta:
                                type: object
                                properties:
                                  label:
                                    type: string
                                    example: 'Ipsum nostrum omnis.'
                                  url:
                                    type: string
                                    example: 'http://mclaughlin.info/dolores-enim-non-facere-tempora'
                          services:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'Voluptatem laboriosam praesentium.'
                              imageSrc:
                                type: string
                                example: ''
                              imageAlt:
                                type: string
                                example: null
                              description:
                                type: string
                                example: 'Adipisci molestias fugit deleniti distinctio eum doloremque id.'
                              items:
                                type: array
                                example: []
                          testimonials:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'Libero aliquam veniam corporis.'
                              imageSrc:
                                type: string
                                example: ''
                              imageAlt:
                                type: string
                                example: null
                              description:
                                type: string
                                example: 'Mollitia deleniti nemo.'
                              items:
                                type: array
                                example: []
                          footer:
                            type: object
                            properties:
                              address:
                                type: string
                                example: "633 Ward Dale\nNorth Eileen, AL 06985"
                              primaryPhone:
                                type: string
                                example: 234-623-5439
                              secondaryPhone:
                                type: string
                                example: '+1 (432) 789-7092'
                              email:
                                type: string
                                example: garett.runolfsson@yahoo.com
                              columns:
                                type: array
                                example: []
                              social:
                                type: object
                                properties:
                                  facebook:
                                    type: string
                                    example: null
                                  instagram:
                                    type: string
                                    example: null
                                  linkedin:
                                    type: string
                                    example: null
                                  threads:
                                    type: string
                                    example: null
                                  tiktok:
                                    type: string
                                    example: null
                                  x:
                                    type: string
                                    example: null
                      includes:
                        type: object
                        properties:
                          business:
                            type: string
                            example: null
                      relationships:
                        type: array
                        example: []
      tags:
        - 'Website Management'
      requestBody:
        required: false
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                templateId:
                  type: string
                  description: 'The ID of the template to use for the website.'
                  example: bcde9570-e2e1-4153-b78c-8e37a112a0f8
                status:
                  type: string
                  description: 'Publish or unpublish the website.'
                  example: draft
                  enum:
                    - draft
                    - published
                thumbnail:
                  type: string
                  format: binary
                  description: 'Thumbnail of the website. Must be an image. Must not be greater than 5000 kilobytes.'
                navigation:
                  type: object
                  description: ''
                  example: null
                  properties:
                    logoSrc:
                      type: string
                      format: binary
                      description: 'URL of the logo image. Must be an image. Must not be greater than 5000 kilobytes.'
                    logoAlt:
                      type: string
                      description: 'Alt text for the logo image. Must not be greater than 255 characters.'
                      example: 'Company Logo'
                    ctaLabel:
                      type: string
                      description: 'Label for the Call-To-Action button. Must not be greater than 50 characters.'
                      example: 'Get Started'
                    ctaUrl:
                      type: string
                      description: 'URL that the Call-To-Action button points to.'
                      example: /get-started
                hero:
                  type: object
                  description: ''
                  example: null
                  properties:
                    title:
                      type: string
                      description: 'The main title text for the hero section. Must not be greater than 255 characters.'
                      example: 'Welcome to Our Website'
                    subtitle:
                      type: string
                      description: 'The subtitle text for the hero section. Must not be greater than 255 characters.'
                      example: 'We provide the best services'
                    imageSrc:
                      type: string
                      format: binary
                      description: 'Hero section background image. Must be an image. Must not be greater than 5000 kilobytes.'
                    imageAlt:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: b
                    ctaLabel:
                      type: string
                      description: 'Must not be greater than 50 characters.'
                      example: 'n'
                    ctaUrl:
                      type: string
                      description: 'Must be a valid URL.'
                      example: 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium'
                service:
                  type: object
                  description: ''
                  example: null
                  properties:
                    title:
                      type: string
                      description: 'Title text for the services section. Must not be greater than 255 characters.'
                      example: 'Our Services'
                    description:
                      type: string
                      description: 'Description text for the services section.'
                      example: 'We offer a wide range of services.'
                    imageSrc:
                      type: string
                      format: binary
                      description: 'Service section background image. Must be an image. Must not be greater than 5000 kilobytes.'
                    imageAlt:
                      type: string
                      description: 'Alt text for the logo image.'
                      example: 'Services section'
                    items:
                      type: array
                      description: ''
                      example: null
                      items:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: ''
                            example: 16
                          title:
                            type: string
                            description: 'This field is required when <code>service.items</code> is present. Must not be greater than 255 characters.'
                            example: 'n'
                          description:
                            type: string
                            description: 'This field is required when <code>service.items</code> is present.'
                            example: 'Eius et animi quos velit et.'
                          imageSrc:
                            type: string
                            format: binary
                            description: 'Must be an image. Must not be greater than 5000 kilobytes.'
                          imageAlt:
                            type: string
                            description: ''
                            example: architecto
                          ctaLabel:
                            type: string
                            description: 'Must not be greater than 50 characters.'
                            example: 'n'
                          ctaUrl:
                            type: string
                            description: 'Must be a valid URL.'
                            example: 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium'
                testimonial:
                  type: object
                  description: ''
                  example: null
                  properties:
                    title:
                      type: string
                      description: 'Title text for the testimonials section. Must not be greater than 255 characters.'
                      example: 'What Our Clients Say'
                    description:
                      type: string
                      description: 'Description text for the testimonials section.'
                      example: 'We offer a wide range of testimonials.'
                    imageSrc:
                      type: string
                      format: binary
                      description: 'Must be an image. Must not be greater than 5000 kilobytes.'
                    imageAlt:
                      type: string
                      description: ''
                      example: architecto
                    items:
                      type: array
                      description: 'An array of testimonial items. To update, pass a value to id. Otherwise, it creates a new testimonial item for this item.'
                      example:
                        -
                          id: 1
                          title: 'John Doe'
                          description: 'This company is amazing!'
                          position: 'CEO, Example Corp'
                          imageSrc: public\img\logo.png
                          imageAlt: 'Expert advice in your field'
                        -
                          id: 2
                          title: 'Jane Smith'
                          description: 'Highly recommend their services.'
                          position: 'CTO, Tech Inc'
                          imageSrc: public\img\logo.png
                          imageAlt: 'Expert advice in your field'
                      items:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: ''
                            example: 16
                          title:
                            type: string
                            description: 'This field is required when <code>testimonials.items</code> is present. Must not be greater than 255 characters.'
                            example: 'n'
                          description:
                            type: string
                            description: 'This field is required when <code>testimonials.items</code> is present.'
                            example: 'Eius et animi quos velit et.'
                          imageSrc:
                            type: string
                            format: binary
                            description: 'Must be an image. Must not be greater than 5000 kilobytes.'
                          imageAlt:
                            type: string
                            description: ''
                            example: architecto
                          position:
                            type: string
                            description: 'Must not be greater than 255 characters.'
                            example: 'n'
                footer:
                  type: object
                  description: ''
                  example: null
                  properties:
                    address:
                      type: string
                      description: 'The Business address. Must not be greater than 255 characters.'
                      example: '133, Agege motor road, Mushin, Lagos.'
                    phonePrimary:
                      type: string
                      description: 'The Business phone number. Must not be greater than 15 characters.'
                      example: '+23407557560481'
                    phoneSecondary:
                      type: string
                      description: 'The Business alternative phone number. Must not be greater than 15 characters.'
                      example: '+2348097745547'
                    email:
                      type: string
                      description: 'The email address of the Business. Must be a valid email address.'
                      example: business@gmail.com
                    social:
                      type: array
                      description: 'Must be a valid URL.'
                      example:
                        - 'http://bailey.com/'
                      items:
                        type: string
                regenerate:
                  type: object
                  description: ''
                  example: null
                  properties:
                    section:
                      type: string
                      description: 'The section of the website to regenerate with AI. This field is required when <code>regenerate</code> is present.'
                      example: footer
                      enum:
                        - navigation
                        - hero
                        - service
                        - testimonial
                        - footer
    parameters:
      -
        in: path
        name: uuid
        description: ''
        example: 1
        required: true
        schema:
          type: integer
      -
        in: path
        name: website_uuid
        description: 'The UUID of the website.'
        example: 85573106-63da-46fa-9434-3bd87e3cd7f4
        required: true
        schema:
          type: string
  /api/v1/website:
    get:
      summary: 'Get websites'
      operationId: getWebsites
      description: 'Gets a list of all published websites.'
      parameters:
        -
          in: query
          name: page
          description: 'The page to view.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page to view.'
            example: 1
        -
          in: query
          name: filters
          description: 'Fields to filter by'
          example: []
          required: false
          schema:
            type: object
            description: 'Fields to filter by'
            example: []
            properties: {  }
        -
          in: query
          name: filters.business
          description: 'Filter by the owners of the websites (can be comma-separated for multiple values. eg 1,2,3).'
          example: d311b28a-17d6-45f8-a05c-032a978d8ca0
          required: false
          schema:
            type: string
            description: 'Filter by the owners of the websites (can be comma-separated for multiple values. eg 1,2,3).'
            example: d311b28a-17d6-45f8-a05c-032a978d8ca0
        -
          in: query
          name: filters.lga
          description: 'Filter by the lga of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: '1'
          required: false
          schema:
            type: string
            description: 'Filter by the lga of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: '1'
        -
          in: query
          name: filters.state
          description: 'Filter by the state to filter the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: '1'
          required: false
          schema:
            type: string
            description: 'Filter by the state to filter the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: '1'
        -
          in: query
          name: filters.country
          description: 'Filter by the country of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
          example: 161
          required: false
          schema:
            type: integer
            description: 'Filter by the country of the businesses (can be comma-separated for multiple values. eg 1,2,3).'
            example: 161
        -
          in: query
          name: filters.createdAt
          description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
          example: 15-06-2024
          required: false
          schema:
            type: string
            description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
            example: 15-06-2024
        -
          in: query
          name: filters.updatedAt
          description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
          example: 15-06-2024
          required: false
          schema:
            type: string
            description: 'Filter by date created (can be comma-separated for multiple values. eg 12-06-2024,15-06-2024).'
            example: 15-06-2024
        -
          in: query
          name: include
          description: 'The optional parameters to load optional data (business and owner. eg business,owner).'
          example: business
          required: false
          schema:
            type: string
            description: 'The optional parameters to load optional data (business and owner. eg business,owner).'
            example: business
        -
          in: query
          name: sort
          description: 'The property to sort the websites by (can be comma-separated for multiple values. (- means descending) eg -domainName,createdAt,publishedAt).'
          example: '-domainName'
          required: false
          schema:
            type: string
            description: 'The property to sort the websites by (can be comma-separated for multiple values. (- means descending) eg -domainName,createdAt,publishedAt).'
            example: '-domainName'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: website
                    id: 2abbce56-cdc3-4ef9-8df1-200939387db5
                    attributes:
                      meta:
                        id: 2abbce56-cdc3-4ef9-8df1-200939387db5
                        template: null
                        status: draft
                        domainUrl: '-qNbNw.ngr.ltd'
                        thumbnail: ''
                    includes:
                      business: null
                    relationships: []
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: website
                      id:
                        type: string
                        example: 2abbce56-cdc3-4ef9-8df1-200939387db5
                      attributes:
                        type: object
                        properties:
                          meta:
                            type: object
                            properties:
                              id:
                                type: string
                                example: 2abbce56-cdc3-4ef9-8df1-200939387db5
                              template:
                                type: string
                                example: null
                              status:
                                type: string
                                example: draft
                              domainUrl:
                                type: string
                                example: '-qNbNw.ngr.ltd'
                              thumbnail:
                                type: string
                                example: ''
                      includes:
                        type: object
                        properties:
                          business:
                            type: string
                            example: null
                      relationships:
                        type: array
                        example: []
      tags:
        - 'Website Management'
      security: []
  '/api/v1/website/{identifier}':
    get:
      summary: 'Fetch website'
      operationId: fetchWebsite
      description: "Gets the details of a specified website by passing it's id or domain."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    type: website
                    id: 011dbaf2-1ba9-45dd-a4c5-385821bf0ddc
                    attributes:
                      meta:
                        id: 011dbaf2-1ba9-45dd-a4c5-385821bf0ddc
                        template: null
                        status: draft
                        domainUrl: '-db9gD.ngr.ltd'
                        thumbnail: ''
                      navigation:
                        logo:
                          src: 'https://via.placeholder.com/640x480.png/00aaff?text=dolores'
                          alt: 'maiores assumenda odit'
                        links: []
                        cta:
                          label: 'Repellat officiis.'
                          url: 'http://kreiger.info/'
                      hero:
                        title: 'ratione iure impedit'
                        subtitle: 'molestiae ut rem'
                        image:
                          src: 'https://via.placeholder.com/640x480.png/005544?text=est'
                          alt: 'sint aut molestiae'
                        cta:
                          label: 'Suscipit doloribus fugiat.'
                          url: 'http://bogan.com/error-neque-recusandae-et-ipsam-dolorem-et-ut-dicta'
                      services:
                        title: 'Assumenda consequatur ut.'
                        imageSrc: ''
                        imageAlt: null
                        description: 'Sunt quisquam sit repellendus.'
                        items: []
                      testimonials:
                        title: 'Eaque alias ratione dolores.'
                        imageSrc: ''
                        imageAlt: null
                        description: 'Rem ea ut.'
                        items: []
                      footer:
                        address: "168 Cordia Landing\nLake Dominic, IA 73644-9666"
                        primaryPhone: +1.925.928.0065
                        secondaryPhone: 406.562.4053
                        email: wilmer.kilback@yahoo.com
                        columns: []
                        social:
                          facebook: null
                          instagram: null
                          linkedin: null
                          threads: null
                          tiktok: null
                          x: null
                    includes:
                      business: null
                    relationships: []
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        example: website
                      id:
                        type: string
                        example: 011dbaf2-1ba9-45dd-a4c5-385821bf0ddc
                      attributes:
                        type: object
                        properties:
                          meta:
                            type: object
                            properties:
                              id:
                                type: string
                                example: 011dbaf2-1ba9-45dd-a4c5-385821bf0ddc
                              template:
                                type: string
                                example: null
                              status:
                                type: string
                                example: draft
                              domainUrl:
                                type: string
                                example: '-db9gD.ngr.ltd'
                              thumbnail:
                                type: string
                                example: ''
                          navigation:
                            type: object
                            properties:
                              logo:
                                type: object
                                properties:
                                  src:
                                    type: string
                                    example: 'https://via.placeholder.com/640x480.png/00aaff?text=dolores'
                                  alt:
                                    type: string
                                    example: 'maiores assumenda odit'
                              links:
                                type: array
                                example: []
                              cta:
                                type: object
                                properties:
                                  label:
                                    type: string
                                    example: 'Repellat officiis.'
                                  url:
                                    type: string
                                    example: 'http://kreiger.info/'
                          hero:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'ratione iure impedit'
                              subtitle:
                                type: string
                                example: 'molestiae ut rem'
                              image:
                                type: object
                                properties:
                                  src:
                                    type: string
                                    example: 'https://via.placeholder.com/640x480.png/005544?text=est'
                                  alt:
                                    type: string
                                    example: 'sint aut molestiae'
                              cta:
                                type: object
                                properties:
                                  label:
                                    type: string
                                    example: 'Suscipit doloribus fugiat.'
                                  url:
                                    type: string
                                    example: 'http://bogan.com/error-neque-recusandae-et-ipsam-dolorem-et-ut-dicta'
                          services:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'Assumenda consequatur ut.'
                              imageSrc:
                                type: string
                                example: ''
                              imageAlt:
                                type: string
                                example: null
                              description:
                                type: string
                                example: 'Sunt quisquam sit repellendus.'
                              items:
                                type: array
                                example: []
                          testimonials:
                            type: object
                            properties:
                              title:
                                type: string
                                example: 'Eaque alias ratione dolores.'
                              imageSrc:
                                type: string
                                example: ''
                              imageAlt:
                                type: string
                                example: null
                              description:
                                type: string
                                example: 'Rem ea ut.'
                              items:
                                type: array
                                example: []
                          footer:
                            type: object
                            properties:
                              address:
                                type: string
                                example: "168 Cordia Landing\nLake Dominic, IA 73644-9666"
                              primaryPhone:
                                type: string
                                example: +1.925.928.0065
                              secondaryPhone:
                                type: string
                                example: 406.562.4053
                              email:
                                type: string
                                example: wilmer.kilback@yahoo.com
                              columns:
                                type: array
                                example: []
                              social:
                                type: object
                                properties:
                                  facebook:
                                    type: string
                                    example: null
                                  instagram:
                                    type: string
                                    example: null
                                  linkedin:
                                    type: string
                                    example: null
                                  threads:
                                    type: string
                                    example: null
                                  tiktok:
                                    type: string
                                    example: null
                                  x:
                                    type: string
                                    example: null
                      includes:
                        type: object
                        properties:
                          business:
                            type: string
                            example: null
                      relationships:
                        type: array
                        example: []
      tags:
        - 'Website Management'
      security: []
    parameters:
      -
        in: path
        name: identifier
        description: 'The identifier of the website.'
        example: '85573106-63da-46fa-9434-3bd87e3cd7f4 or 3d7tech or 3d7tech.ngr.ltd'
        required: true
        schema:
          type: string
tags:
  -
    name: Authentication
    description: "\nThe Auth API allows you to authenticate all types of users on your integration. This include the regular users\n(buyers), the business users (sellers) and the admin account when it is implemented."
  -
    name: Businesses
    description: "\nThe Businesses API allows you create and manage businesses on your integration."
  -
    name: Categories
    description: "\nThe Categories API allows you create and manage categories on your integration."
  -
    name: Location
    description: "\nThe Location API allows you to get location data on your integration."
  -
    name: Templates
    description: "\nThe Templates API allows you create and manage templates on your integration."
  -
    name: Users
    description: "\nThe Users API allows you create and manage users on your integration."
  -
    name: 'Website Management'
    description: "\nThe Websites API allows you create and manage websites on your integration."
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: 'You can retrieve a token by sending a login request via postman and copying the <b>generated API token</b>.'
security:
  -
    default: []
