{
  "openapi": "3.0.0",
  "info": {
    "title": "lb4",
    "version": "0.0.1",
    "description": "API backend for Velocrafts Technologies",
    "contact": {
      "name": "Roshan Kolhe",
      "email": "kolheroshan508@gmail.com"
    }
  },
  "paths": {
    "/blog-posts/count": {
      "get": {
        "x-controller-name": "BlogPostController",
        "x-operation-name": "count",
        "tags": [
          "BlogPostController"
        ],
        "responses": {
          "200": {
            "description": "BlogPost model count",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/loopback.Count"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "where",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "BlogPost.WhereFilter",
                  "additionalProperties": true,
                  "x-typescript-type": "@loopback/repository#Where<BlogPost>"
                }
              }
            }
          }
        ],
        "operationId": "BlogPostController.count"
      }
    },
    "/blog-posts/slug/{slug}": {
      "get": {
        "x-controller-name": "BlogPostController",
        "x-operation-name": "findBySlug",
        "tags": [
          "BlogPostController"
        ],
        "responses": {
          "200": {
            "description": "BlogPost model instance by slug",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPostWithRelations"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "BlogPostController.findBySlug"
      }
    },
    "/blog-posts/{id}": {
      "patch": {
        "x-controller-name": "BlogPostController",
        "x-operation-name": "updateById",
        "tags": [
          "BlogPostController"
        ],
        "responses": {
          "204": {
            "description": "BlogPost PATCH success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlogPostPartialExcluding_id-createdAt_"
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "BlogPostController.updateById"
      },
      "get": {
        "x-controller-name": "BlogPostController",
        "x-operation-name": "findById",
        "tags": [
          "BlogPostController"
        ],
        "responses": {
          "200": {
            "description": "BlogPost model instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPostWithRelations"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          },
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPost.Filter"
                }
              }
            }
          }
        ],
        "operationId": "BlogPostController.findById"
      },
      "delete": {
        "x-controller-name": "BlogPostController",
        "x-operation-name": "deleteById",
        "tags": [
          "BlogPostController"
        ],
        "responses": {
          "204": {
            "description": "BlogPost DELETE success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "operationId": "BlogPostController.deleteById"
      }
    },
    "/blog-posts": {
      "post": {
        "x-controller-name": "BlogPostController",
        "x-operation-name": "create",
        "tags": [
          "BlogPostController"
        ],
        "responses": {
          "201": {
            "description": "BlogPost model instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPost"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewBlogPost"
              }
            }
          }
        },
        "operationId": "BlogPostController.create"
      },
      "get": {
        "x-controller-name": "BlogPostController",
        "x-operation-name": "find",
        "tags": [
          "BlogPostController"
        ],
        "responses": {
          "200": {
            "description": "Array of BlogPost model instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BlogPostWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPost.Filter1"
                }
              }
            }
          }
        ],
        "operationId": "BlogPostController.find"
      }
    },
    "/career-applications": {
      "post": {
        "x-controller-name": "CareerApplicationController",
        "x-operation-name": "create",
        "tags": [
          "CareerApplicationController"
        ],
        "responses": {
          "201": {
            "description": "Career application submission response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "id": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "operationId": "CareerApplicationController.create"
      }
    },
    "/contacts": {
      "post": {
        "x-controller-name": "ContactController",
        "x-operation-name": "create",
        "tags": [
          "ContactController"
        ],
        "responses": {
          "201": {
            "description": "Contact submission response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "id": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Invalid or missing Turnstile verification"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "operationId": "ContactController.create"
      }
    },
    "/files/file/{path}/{fileName}": {
      "get": {
        "x-controller-name": "FileUploadController",
        "x-operation-name": "downloadFile",
        "tags": [
          "FileUploadController"
        ],
        "responses": {
          "200": {
            "description": "The file content",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "fileName",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "FileUploadController.downloadFile"
      }
    },
    "/files/file/{fileName}": {
      "get": {
        "x-controller-name": "FileUploadController",
        "x-operation-name": "downloadFileOutsideFolder",
        "tags": [
          "FileUploadController"
        ],
        "responses": {
          "200": {
            "description": "The file content",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "fileName",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "FileUploadController.downloadFileOutsideFolder"
      }
    },
    "/files/{processId}": {
      "post": {
        "x-controller-name": "FileUploadController",
        "x-operation-name": "uploadWithProcessId",
        "tags": [
          "FileUploadController"
        ],
        "responses": {
          "200": {
            "description": "Return value of FileUploadController.uploadWithProcessId"
          }
        },
        "parameters": [
          {
            "name": "processId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "FileUploadController.uploadWithProcessId"
      }
    },
    "/files/{folderName}": {
      "get": {
        "x-controller-name": "FileUploadController",
        "x-operation-name": "listFolderFiles",
        "tags": [
          "FileUploadController"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "description": "A list of files"
          }
        },
        "parameters": [
          {
            "name": "folderName",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "FileUploadController.listFolderFiles"
      }
    },
    "/files": {
      "post": {
        "x-controller-name": "FileUploadController",
        "x-operation-name": "uploadToRoot",
        "tags": [
          "FileUploadController"
        ],
        "responses": {
          "200": {
            "description": "Return value of FileUploadController.uploadToRoot"
          }
        },
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true
        },
        "operationId": "FileUploadController.uploadToRoot"
      },
      "get": {
        "x-controller-name": "FileUploadController",
        "x-operation-name": "listFiles",
        "tags": [
          "FileUploadController"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "description": "A list of files"
          }
        },
        "operationId": "FileUploadController.listFiles"
      }
    },
    "/ping": {
      "get": {
        "x-controller-name": "PingController",
        "x-operation-name": "ping",
        "tags": [
          "PingController"
        ],
        "responses": {
          "200": {
            "description": "Ping Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PingResponse"
                }
              }
            }
          }
        },
        "operationId": "PingController.ping"
      }
    },
    "/portfolios/count": {
      "get": {
        "x-controller-name": "PortfolioController",
        "x-operation-name": "count",
        "tags": [
          "PortfolioController"
        ],
        "responses": {
          "200": {
            "description": "Portfolio model count",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/loopback.Count"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "where",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Portfolio.WhereFilter",
                  "additionalProperties": true,
                  "x-typescript-type": "@loopback/repository#Where<Portfolio>"
                }
              }
            }
          }
        ],
        "operationId": "PortfolioController.count"
      }
    },
    "/portfolios/slug/{slug}": {
      "get": {
        "x-controller-name": "PortfolioController",
        "x-operation-name": "findBySlug",
        "tags": [
          "PortfolioController"
        ],
        "responses": {
          "200": {
            "description": "Portfolio model instance by slug",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortfolioWithRelations"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "PortfolioController.findBySlug"
      }
    },
    "/portfolios/{id}": {
      "patch": {
        "x-controller-name": "PortfolioController",
        "x-operation-name": "updateById",
        "tags": [
          "PortfolioController"
        ],
        "responses": {
          "204": {
            "description": "Portfolio PATCH success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "order": {
                    "type": "number"
                  },
                  "slug": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "imageId": {
                    "type": "string"
                  },
                  "shortDescription": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "challenge": {
                    "type": "string"
                  },
                  "approach": {
                    "type": "string"
                  },
                  "technologies": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category": {
                    "type": "string"
                  },
                  "results": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "client": {
                    "type": "string"
                  },
                  "duration": {
                    "type": "string"
                  },
                  "teamSize": {
                    "type": "string"
                  },
                  "keyFeatures": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "PortfolioController.updateById"
      },
      "get": {
        "x-controller-name": "PortfolioController",
        "x-operation-name": "findById",
        "tags": [
          "PortfolioController"
        ],
        "responses": {
          "200": {
            "description": "Portfolio model instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortfolioWithRelations"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          },
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Portfolio.Filter"
                }
              }
            }
          }
        ],
        "operationId": "PortfolioController.findById"
      },
      "delete": {
        "x-controller-name": "PortfolioController",
        "x-operation-name": "deleteById",
        "tags": [
          "PortfolioController"
        ],
        "responses": {
          "204": {
            "description": "Portfolio DELETE success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "operationId": "PortfolioController.deleteById"
      }
    },
    "/portfolios": {
      "post": {
        "x-controller-name": "PortfolioController",
        "x-operation-name": "create",
        "tags": [
          "PortfolioController"
        ],
        "responses": {
          "201": {
            "description": "Portfolio model instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Portfolio"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "slug",
                  "title",
                  "shortDescription",
                  "description",
                  "category"
                ],
                "properties": {
                  "order": {
                    "type": "number"
                  },
                  "slug": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "imageId": {
                    "type": "string",
                    "description": "Media id from /files upload"
                  },
                  "shortDescription": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "challenge": {
                    "type": "string"
                  },
                  "approach": {
                    "type": "string"
                  },
                  "technologies": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category": {
                    "type": "string"
                  },
                  "results": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "client": {
                    "type": "string"
                  },
                  "duration": {
                    "type": "string"
                  },
                  "teamSize": {
                    "type": "string"
                  },
                  "keyFeatures": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "description": "Portfolio payload (technologies, results, keyFeatures are arrays of strings)",
          "required": true
        },
        "operationId": "PortfolioController.create"
      },
      "get": {
        "x-controller-name": "PortfolioController",
        "x-operation-name": "find",
        "tags": [
          "PortfolioController"
        ],
        "responses": {
          "200": {
            "description": "Array of Portfolio model instances (ordered by order ASC)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortfolioWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Portfolio.Filter1"
                }
              }
            }
          }
        ],
        "operationId": "PortfolioController.find"
      }
    }
  },
  "servers": [
    {
      "url": "http://api.velocrafts.tech"
    }
  ],
  "components": {
    "schemas": {
      "Portfolio": {
        "title": "Portfolio",
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "order": {
            "type": "number"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "imageId": {
            "type": "string"
          },
          "shortDescription": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "challenge": {
            "type": "string"
          },
          "approach": {
            "type": "string"
          },
          "technologies": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "category": {
            "type": "string"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "client": {
            "type": "string"
          },
          "duration": {
            "type": "string"
          },
          "teamSize": {
            "type": "string"
          },
          "keyFeatures": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "slug",
          "title",
          "shortDescription",
          "description",
          "category"
        ],
        "additionalProperties": false
      },
      "MediaWithRelations": {
        "title": "MediaWithRelations",
        "type": "object",
        "description": "(tsType: MediaWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "id": {
            "type": "string"
          },
          "fileOriginalName": {
            "type": "string"
          },
          "fileName": {
            "type": "string"
          },
          "fileUrl": {
            "type": "string"
          },
          "fileLocation": {
            "type": "string"
          },
          "fileType": {
            "type": "string"
          },
          "isUsed": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "fileOriginalName",
          "fileName",
          "fileUrl",
          "fileLocation",
          "fileType"
        ],
        "additionalProperties": false,
        "x-typescript-type": "MediaWithRelations"
      },
      "PortfolioWithRelations": {
        "title": "PortfolioWithRelations",
        "type": "object",
        "description": "(tsType: PortfolioWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "id": {
            "type": "number"
          },
          "order": {
            "type": "number"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "imageId": {
            "type": "string"
          },
          "shortDescription": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "challenge": {
            "type": "string"
          },
          "approach": {
            "type": "string"
          },
          "technologies": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "category": {
            "type": "string"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "client": {
            "type": "string"
          },
          "duration": {
            "type": "string"
          },
          "teamSize": {
            "type": "string"
          },
          "keyFeatures": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "featuredMedia": {
            "$ref": "#/components/schemas/MediaWithRelations"
          }
        },
        "required": [
          "slug",
          "title",
          "shortDescription",
          "description",
          "category"
        ],
        "additionalProperties": false,
        "x-typescript-type": "PortfolioWithRelations"
      },
      "BlogPost": {
        "title": "BlogPost",
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "featuredMediaId": {
            "type": "string"
          },
          "contentIntro": {
            "type": "string"
          },
          "contentSections": {
            "type": "object"
          },
          "quote": {
            "type": "string"
          },
          "keyPoints": {
            "type": "object"
          },
          "tags": {
            "type": "object"
          },
          "readTime": {
            "type": "number"
          },
          "published": {
            "type": "boolean"
          },
          "authorBio": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "title",
          "slug",
          "excerpt",
          "category",
          "author",
          "date",
          "contentIntro"
        ],
        "additionalProperties": false
      },
      "NewBlogPost": {
        "title": "NewBlogPost",
        "type": "object",
        "description": "(tsType: Omit<BlogPost, 'id' | 'createdAt' | 'updatedAt'>, schemaOptions: { title: 'NewBlogPost', exclude: [ 'id', 'createdAt', 'updatedAt' ] })",
        "properties": {
          "title": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "featuredMediaId": {
            "type": "string"
          },
          "contentIntro": {
            "type": "string"
          },
          "contentSections": {
            "type": "object"
          },
          "quote": {
            "type": "string"
          },
          "keyPoints": {
            "type": "object"
          },
          "tags": {
            "type": "object"
          },
          "readTime": {
            "type": "number"
          },
          "published": {
            "type": "boolean"
          },
          "authorBio": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "slug",
          "excerpt",
          "category",
          "author",
          "date",
          "contentIntro"
        ],
        "additionalProperties": false,
        "x-typescript-type": "Omit<BlogPost, 'id' | 'createdAt' | 'updatedAt'>"
      },
      "BlogPostWithRelations": {
        "title": "BlogPostWithRelations",
        "type": "object",
        "description": "(tsType: BlogPostWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "id": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "featuredMediaId": {
            "type": "string"
          },
          "contentIntro": {
            "type": "string"
          },
          "contentSections": {
            "type": "object"
          },
          "quote": {
            "type": "string"
          },
          "keyPoints": {
            "type": "object"
          },
          "tags": {
            "type": "object"
          },
          "readTime": {
            "type": "number"
          },
          "published": {
            "type": "boolean"
          },
          "authorBio": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "featuredMedia": {
            "$ref": "#/components/schemas/MediaWithRelations"
          }
        },
        "required": [
          "title",
          "slug",
          "excerpt",
          "category",
          "author",
          "date",
          "contentIntro"
        ],
        "additionalProperties": false,
        "x-typescript-type": "BlogPostWithRelations"
      },
      "BlogPostPartialExcluding_id-createdAt_": {
        "title": "BlogPostPartialExcluding_id-createdAt_",
        "type": "object",
        "description": "(tsType: Omit<Partial<BlogPost>, 'id' | 'createdAt'>, schemaOptions: { partial: true, exclude: [ 'id', 'createdAt' ] })",
        "properties": {
          "title": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "featuredMediaId": {
            "type": "string"
          },
          "contentIntro": {
            "type": "string"
          },
          "contentSections": {
            "type": "object"
          },
          "quote": {
            "type": "string"
          },
          "keyPoints": {
            "type": "object"
          },
          "tags": {
            "type": "object"
          },
          "readTime": {
            "type": "number"
          },
          "published": {
            "type": "boolean"
          },
          "authorBio": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Omit<Partial<BlogPost>, 'id' | 'createdAt'>"
      },
      "loopback.Count": {
        "type": "object",
        "title": "loopback.Count",
        "x-typescript-type": "@loopback/repository#Count",
        "properties": {
          "count": {
            "type": "number"
          }
        }
      },
      "BlogPost.ScopeFilter": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            ]
          },
          "include": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": false,
        "title": "BlogPost.ScopeFilter"
      },
      "BlogPost.IncludeFilter.Items": {
        "title": "BlogPost.IncludeFilter.Items",
        "type": "object",
        "properties": {
          "relation": {
            "type": "string",
            "enum": [
              "featuredMedia"
            ]
          },
          "scope": {
            "$ref": "#/components/schemas/BlogPost.ScopeFilter"
          }
        }
      },
      "BlogPost.Filter": {
        "type": "object",
        "title": "BlogPost.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "boolean"
                  },
                  "title": {
                    "type": "boolean"
                  },
                  "slug": {
                    "type": "boolean"
                  },
                  "excerpt": {
                    "type": "boolean"
                  },
                  "category": {
                    "type": "boolean"
                  },
                  "author": {
                    "type": "boolean"
                  },
                  "date": {
                    "type": "boolean"
                  },
                  "featuredMediaId": {
                    "type": "boolean"
                  },
                  "contentIntro": {
                    "type": "boolean"
                  },
                  "contentSections": {
                    "type": "boolean"
                  },
                  "quote": {
                    "type": "boolean"
                  },
                  "keyPoints": {
                    "type": "boolean"
                  },
                  "tags": {
                    "type": "boolean"
                  },
                  "readTime": {
                    "type": "boolean"
                  },
                  "published": {
                    "type": "boolean"
                  },
                  "authorBio": {
                    "type": "boolean"
                  },
                  "createdAt": {
                    "type": "boolean"
                  },
                  "updatedAt": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "id",
                    "title",
                    "slug",
                    "excerpt",
                    "category",
                    "author",
                    "date",
                    "featuredMediaId",
                    "contentIntro",
                    "contentSections",
                    "quote",
                    "keyPoints",
                    "tags",
                    "readTime",
                    "published",
                    "authorBio",
                    "createdAt",
                    "updatedAt"
                  ],
                  "example": "id"
                },
                "uniqueItems": true
              }
            ],
            "title": "BlogPost.Fields"
          },
          "include": {
            "title": "BlogPost.IncludeFilter",
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/BlogPost.IncludeFilter.Items"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<BlogPost>"
      },
      "BlogPost.ScopeFilter1": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": true
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            ]
          },
          "include": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": false,
        "title": "BlogPost.ScopeFilter"
      },
      "BlogPost.IncludeFilter.Items1": {
        "title": "BlogPost.IncludeFilter.Items",
        "type": "object",
        "properties": {
          "relation": {
            "type": "string",
            "enum": [
              "featuredMedia"
            ]
          },
          "scope": {
            "$ref": "#/components/schemas/BlogPost.ScopeFilter1"
          }
        }
      },
      "BlogPost.Filter1": {
        "type": "object",
        "title": "BlogPost.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "title": "BlogPost.WhereFilter",
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "boolean"
                  },
                  "title": {
                    "type": "boolean"
                  },
                  "slug": {
                    "type": "boolean"
                  },
                  "excerpt": {
                    "type": "boolean"
                  },
                  "category": {
                    "type": "boolean"
                  },
                  "author": {
                    "type": "boolean"
                  },
                  "date": {
                    "type": "boolean"
                  },
                  "featuredMediaId": {
                    "type": "boolean"
                  },
                  "contentIntro": {
                    "type": "boolean"
                  },
                  "contentSections": {
                    "type": "boolean"
                  },
                  "quote": {
                    "type": "boolean"
                  },
                  "keyPoints": {
                    "type": "boolean"
                  },
                  "tags": {
                    "type": "boolean"
                  },
                  "readTime": {
                    "type": "boolean"
                  },
                  "published": {
                    "type": "boolean"
                  },
                  "authorBio": {
                    "type": "boolean"
                  },
                  "createdAt": {
                    "type": "boolean"
                  },
                  "updatedAt": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "id",
                    "title",
                    "slug",
                    "excerpt",
                    "category",
                    "author",
                    "date",
                    "featuredMediaId",
                    "contentIntro",
                    "contentSections",
                    "quote",
                    "keyPoints",
                    "tags",
                    "readTime",
                    "published",
                    "authorBio",
                    "createdAt",
                    "updatedAt"
                  ]
                },
                "uniqueItems": true
              }
            ],
            "title": "BlogPost.Fields"
          },
          "include": {
            "title": "BlogPost.IncludeFilter",
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/BlogPost.IncludeFilter.Items1"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<BlogPost>"
      },
      "PingResponse": {
        "type": "object",
        "title": "PingResponse",
        "properties": {
          "greeting": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "headers": {
            "type": "object",
            "properties": {
              "Content-Type": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "Portfolio.ScopeFilter": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            ]
          },
          "include": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": false,
        "title": "Portfolio.ScopeFilter"
      },
      "Portfolio.IncludeFilter.Items": {
        "title": "Portfolio.IncludeFilter.Items",
        "type": "object",
        "properties": {
          "relation": {
            "type": "string",
            "enum": [
              "featuredMedia"
            ]
          },
          "scope": {
            "$ref": "#/components/schemas/Portfolio.ScopeFilter"
          }
        }
      },
      "Portfolio.Filter": {
        "type": "object",
        "title": "Portfolio.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "boolean"
                  },
                  "order": {
                    "type": "boolean"
                  },
                  "slug": {
                    "type": "boolean"
                  },
                  "title": {
                    "type": "boolean"
                  },
                  "imageId": {
                    "type": "boolean"
                  },
                  "shortDescription": {
                    "type": "boolean"
                  },
                  "description": {
                    "type": "boolean"
                  },
                  "challenge": {
                    "type": "boolean"
                  },
                  "approach": {
                    "type": "boolean"
                  },
                  "technologies": {
                    "type": "boolean"
                  },
                  "category": {
                    "type": "boolean"
                  },
                  "results": {
                    "type": "boolean"
                  },
                  "client": {
                    "type": "boolean"
                  },
                  "duration": {
                    "type": "boolean"
                  },
                  "teamSize": {
                    "type": "boolean"
                  },
                  "keyFeatures": {
                    "type": "boolean"
                  },
                  "createdAt": {
                    "type": "boolean"
                  },
                  "updatedAt": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "id",
                    "order",
                    "slug",
                    "title",
                    "imageId",
                    "shortDescription",
                    "description",
                    "challenge",
                    "approach",
                    "technologies",
                    "category",
                    "results",
                    "client",
                    "duration",
                    "teamSize",
                    "keyFeatures",
                    "createdAt",
                    "updatedAt"
                  ],
                  "example": "id"
                },
                "uniqueItems": true
              }
            ],
            "title": "Portfolio.Fields"
          },
          "include": {
            "title": "Portfolio.IncludeFilter",
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Portfolio.IncludeFilter.Items"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<Portfolio>"
      },
      "Portfolio.Filter1": {
        "type": "object",
        "title": "Portfolio.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "title": "Portfolio.WhereFilter",
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "boolean"
                  },
                  "order": {
                    "type": "boolean"
                  },
                  "slug": {
                    "type": "boolean"
                  },
                  "title": {
                    "type": "boolean"
                  },
                  "imageId": {
                    "type": "boolean"
                  },
                  "shortDescription": {
                    "type": "boolean"
                  },
                  "description": {
                    "type": "boolean"
                  },
                  "challenge": {
                    "type": "boolean"
                  },
                  "approach": {
                    "type": "boolean"
                  },
                  "technologies": {
                    "type": "boolean"
                  },
                  "category": {
                    "type": "boolean"
                  },
                  "results": {
                    "type": "boolean"
                  },
                  "client": {
                    "type": "boolean"
                  },
                  "duration": {
                    "type": "boolean"
                  },
                  "teamSize": {
                    "type": "boolean"
                  },
                  "keyFeatures": {
                    "type": "boolean"
                  },
                  "createdAt": {
                    "type": "boolean"
                  },
                  "updatedAt": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "id",
                    "order",
                    "slug",
                    "title",
                    "imageId",
                    "shortDescription",
                    "description",
                    "challenge",
                    "approach",
                    "technologies",
                    "category",
                    "results",
                    "client",
                    "duration",
                    "teamSize",
                    "keyFeatures",
                    "createdAt",
                    "updatedAt"
                  ],
                  "example": "id"
                },
                "uniqueItems": true
              }
            ],
            "title": "Portfolio.Fields"
          },
          "include": {
            "title": "Portfolio.IncludeFilter",
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Portfolio.IncludeFilter.Items"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<Portfolio>"
      }
    }
  }
}