Sharehouse Finder

Sharehouse Finder · GPT 작업

Sharehouse API

API for finding housemates on Sharehouse

  • GET /ai/housematesGet housemate listings by state

    Fetches housemate listings filtered by Australian state with pagination support.

  • GET /ai/roomsRetrieves a list of room listings filtered by state.
원본 API 스키마
{
  "openapi": "3.0.0",
  "info": {
    "title": "Sharehouse API",
    "description": "API for finding housemates on Sharehouse",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://sharehouse.app/api"
    }
  ],
  "paths": {
    "/ai/housemates": {
      "get": {
        "operationId": "getHousematesByState",
        "summary": "Get housemate listings by state",
        "description": "Fetches housemate listings filtered by Australian state with pagination support.",
        "parameters": [
          {
            "in": "query",
            "name": "state",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NSW",
                "VIC",
                "QLD",
                "WA",
                "SA",
                "TAS",
                "ACT",
                "NT"
              ]
            },
            "description": "State abbreviation to filter listings."
          }
        ],
        "responses": {
          "200": {
            "description": "A list of housemate listings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HouseMateListing"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/ai/rooms": {
      "get": {
        "operationId": "getRoomsByState",
        "summary": "Retrieves a list of room listings filtered by state.",
        "parameters": [
          {
            "in": "query",
            "name": "state",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "NSW",
                "VIC",
                "QLD",
                "WA",
                "SA",
                "TAS",
                "ACT",
                "NT"
              ]
            },
            "description": "State filter for room listings."
          }
        ],
        "responses": {
          "200": {
            "description": "A list of room listings.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 50
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RoomListing"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "HouseMateListing": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "userId": {
            "type": "string",
            "nullable": true
          },
          "adj": {
            "type": "number"
          },
          "longBio": {
            "type": "string",
            "nullable": true
          },
          "budget": {
            "type": "number",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "imageUrls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "preferredLengthOfStay": {
            "type": "string",
            "nullable": true
          },
          "preferredLocations": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "hidden": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      }
    },
    "RoomListing": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "room123"
        },
        "userId": {
          "type": "string",
          "example": "user456"
        },
        "firstName": {
          "type": "string",
          "example": "Jane"
        },
        "budget": {
          "type": "number",
          "example": 500
        },
        "startDate": {
          "type": "string",
          "format": "date",
          "example": "2023-01-01"
        },
        "imageUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": [
            "http://example.com/image1.jpg"
          ]
        },
        "preferredLengthOfStay": {
          "type": "string",
          "example": "6 months"
        },
        "preferredLocations": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "example": [
            2000,
            2100
          ]
        },
        "hidden": {
          "type": "boolean",
          "example": false
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "example": "2023-01-01T12:00:00Z"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "example": "2023-01-02T12:00:00Z"
        },
        "ErrorResponse": {
          "type": "object",
          "properties": {
            "statusCode": {
              "type": "integer"
            },
            "message": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}