{
  "openapi": "3.1.1",
  "info": {
    "title": "Sudachi.API | v1",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "http://api.sudachi.moe/"
    }
  ],
  "paths": {
    "/api/v1/tenant/invites/accept": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteAcceptResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tenant"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteAcceptRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteAcceptResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wishlists/collaborators/accept": {
      "get": {
        "tags": [
          "Collaborators"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollaboratorInviteInfoDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Collaborators"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptCollaboratorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/uploads/image": {
      "post": {
        "tags": [
          "Uploads"
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "file"
                ],
                "type": "object",
                "properties": {
                  "file": {
                    "$ref": "#/components/schemas/IFormFile"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UrlResponse"
                }
              }
            }
          }
        }
      }
    },
    "/og/w/{slug}": {
      "get": {
        "tags": [
          "OgEndpoints"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/": {
      "get": {
        "tags": [
          "Sudachi.API"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/health": {
      "get": {
        "tags": [
          "Sudachi.API"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/auth/register": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/refresh": {
      "post": {
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/auth/me": {
      "get": {
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/me/notifications": {
      "patch": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateNotificationsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/switch-tenant/{tenantId}": {
      "patch": {
        "tags": [
          "Auth"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tenant": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tenant"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTenantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/tenant/members": {
      "get": {
        "tags": [
          "Tenant"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantMemberDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tenant/invite": {
      "post": {
        "tags": [
          "Tenant"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteLinkResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tenant/members/{userId}": {
      "delete": {
        "tags": [
          "Tenant"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/tenant/members/{userId}/role": {
      "patch": {
        "tags": [
          "Tenant"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/wishlists": {
      "get": {
        "tags": [
          "Wishlists"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WishlistDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Wishlists"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWishlistRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WishlistDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wishlists/{id}": {
      "get": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WishlistDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWishlistRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WishlistDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/wishlists/{id}/items": {
      "post": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WishlistItemDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wishlists/{id}/items/{itemId}": {
      "put": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WishlistItemDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/wishlists/{id}/items/{itemId}/purchased": {
      "patch": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WishlistItemDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wishlists/{id}/items/reorder": {
      "patch": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ReorderItemRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/wishlists/{id}/items/{itemId}/gifts/{giftId}": {
      "delete": {
        "tags": [
          "Wishlists"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "giftId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/public/w/{slug}": {
      "get": {
        "tags": [
          "Public"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicWishlistDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/public/w/{slug}/items/{itemId}/gift": {
      "patch": {
        "tags": [
          "Public"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicGiftRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/public/w/{slug}/items/{itemId}/gifts/{giftId}": {
      "patch": {
        "tags": [
          "Public"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "giftId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGiftRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Public"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "giftId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sessionId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/public/w/{slug}/items/{itemId}/purchase": {
      "patch": {
        "tags": [
          "Public"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicGiftRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/wishlists/{id}/collaborators/invite": {
      "post": {
        "tags": [
          "Collaborators"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteCollaboratorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteLinkResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wishlists/{id}/collaborators": {
      "get": {
        "tags": [
          "Collaborators"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CollaboratorDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wishlists/{id}/collaborators/{collabId}": {
      "delete": {
        "tags": [
          "Collaborators"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "collabId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AcceptCollaboratorRequest": {
        "required": [
          "token"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          }
        }
      },
      "AuthResponse": {
        "required": [
          "userId",
          "email",
          "name",
          "avatarUrl",
          "tenantId",
          "tenantName",
          "role"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "avatarUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "tenantId": {
            "type": [
              "null",
              "string"
            ]
          },
          "tenantName": {
            "type": [
              "null",
              "string"
            ]
          },
          "role": {
            "type": [
              "null",
              "string"
            ]
          },
          "giftEmailNotifications": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "CollaboratorDto": {
        "required": [
          "id",
          "email",
          "name",
          "avatarUrl",
          "role",
          "acceptedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "avatarUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "role": {
            "type": "string"
          },
          "acceptedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "CollaboratorInviteInfoDto": {
        "required": [
          "wishlistId",
          "wishlistTitle",
          "invitedByName",
          "role"
        ],
        "type": "object",
        "properties": {
          "wishlistId": {
            "type": "string"
          },
          "wishlistTitle": {
            "type": "string"
          },
          "invitedByName": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        }
      },
      "CreateItemRequest": {
        "required": [
          "title",
          "description",
          "imageUrl",
          "priceCents",
          "currency",
          "notes",
          "links"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "priceCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "links": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/WishlistItemLinkDto"
            }
          },
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32",
            "default": 1
          },
          "allowMultipleGifters": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "CreateWishlistRequest": {
        "required": [
          "title",
          "description",
          "occasion",
          "privacy",
          "theme",
          "backgroundColor",
          "backgroundImageUrl"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "occasion": {
            "type": "string"
          },
          "privacy": {
            "type": "string"
          },
          "theme": {
            "type": [
              "null",
              "string"
            ]
          },
          "backgroundColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "backgroundImageUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "IFormFile": {
        "type": "string",
        "format": "binary"
      },
      "InviteAcceptRequest": {
        "required": [
          "token"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          }
        }
      },
      "InviteAcceptResponse": {
        "required": [
          "tenantId",
          "tenantName"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string"
          },
          "tenantName": {
            "type": "string"
          }
        }
      },
      "InviteCollaboratorRequest": {
        "required": [
          "email",
          "role"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        }
      },
      "InviteLinkResponse": {
        "required": [
          "inviteLink",
          "token"
        ],
        "type": "object",
        "properties": {
          "inviteLink": {
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        }
      },
      "InviteRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        }
      },
      "ItemGiftDto": {
        "required": [
          "id",
          "gifterName",
          "message",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "gifterName": {
            "type": "string"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "LoginRequest": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "PublicGiftRequest": {
        "type": "object",
        "properties": {
          "gifterName": {
            "type": "string",
            "default": "Someone"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicWishlistDto": {
        "required": [
          "id",
          "title",
          "description",
          "occasion",
          "privacy",
          "ownerName",
          "groupName",
          "theme",
          "backgroundColor",
          "backgroundImageUrl",
          "items"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "occasion": {
            "$ref": "#/components/schemas/WishlistOccasion"
          },
          "privacy": {
            "$ref": "#/components/schemas/WishlistPrivacy"
          },
          "ownerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "groupName": {
            "type": [
              "null",
              "string"
            ]
          },
          "theme": {
            "type": [
              "null",
              "string"
            ]
          },
          "backgroundColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "backgroundImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WishlistItemDto"
            }
          }
        }
      },
      "RegisterRequest": {
        "required": [
          "email",
          "password",
          "name",
          "groupName"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "groupName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ReorderItemRequest": {
        "required": [
          "id",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TenantDto": {
        "required": [
          "id",
          "name",
          "slug",
          "plan",
          "ownerId",
          "members"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "ownerId": {
            "type": "string"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenantMemberDto"
            }
          }
        }
      },
      "TenantMemberDto": {
        "required": [
          "userId",
          "name",
          "email",
          "avatarUrl",
          "role",
          "joinedAt"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "avatarUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "role": {
            "type": "string"
          },
          "joinedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UpdateGiftRequest": {
        "required": [
          "gifterName",
          "message",
          "sessionId"
        ],
        "type": "object",
        "properties": {
          "gifterName": {
            "type": "string"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          },
          "sessionId": {
            "type": "string"
          }
        }
      },
      "UpdateItemRequest": {
        "required": [
          "title",
          "description",
          "imageUrl",
          "priceCents",
          "currency",
          "notes",
          "links",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "priceCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "links": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/WishlistItemLinkDto"
            }
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32",
            "default": 1
          },
          "allowMultipleGifters": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "UpdateMemberRoleRequest": {
        "required": [
          "role"
        ],
        "type": "object",
        "properties": {
          "role": {
            "type": "string"
          }
        }
      },
      "UpdateNotificationsRequest": {
        "required": [
          "giftEmailNotifications"
        ],
        "type": "object",
        "properties": {
          "giftEmailNotifications": {
            "type": "boolean"
          }
        }
      },
      "UpdateTenantRequest": {
        "required": [
          "name",
          "slug"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateWishlistRequest": {
        "required": [
          "title",
          "description",
          "occasion",
          "privacy",
          "theme",
          "backgroundColor",
          "backgroundImageUrl"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "occasion": {
            "type": "string"
          },
          "privacy": {
            "type": "string"
          },
          "theme": {
            "type": [
              "null",
              "string"
            ]
          },
          "backgroundColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "backgroundImageUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UrlResponse": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          }
        }
      },
      "WishlistDto": {
        "required": [
          "id",
          "tenantId",
          "tenantName",
          "createdById",
          "createdByName",
          "title",
          "description",
          "occasion",
          "shareSlug",
          "privacy",
          "createdAt",
          "updatedAt",
          "theme",
          "backgroundColor",
          "backgroundImageUrl",
          "items"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          },
          "tenantName": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdById": {
            "type": "string"
          },
          "createdByName": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "occasion": {
            "$ref": "#/components/schemas/WishlistOccasion"
          },
          "shareSlug": {
            "type": "string"
          },
          "privacy": {
            "$ref": "#/components/schemas/WishlistPrivacy"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "theme": {
            "type": [
              "null",
              "string"
            ]
          },
          "backgroundColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "backgroundImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WishlistItemDto"
            }
          },
          "collaboratorRole": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "WishlistItemDto": {
        "required": [
          "id",
          "wishlistId",
          "title",
          "description",
          "imageUrl",
          "priceCents",
          "currency",
          "notes",
          "links",
          "isPurchased",
          "isGifted",
          "giftCount",
          "gifts",
          "allowMultipleGifters",
          "sortOrder",
          "createdAt",
          "addedById",
          "addedByName",
          "priority"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "wishlistId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "priceCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "currency": {
            "type": "string"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WishlistItemLinkDto"
            }
          },
          "isPurchased": {
            "type": "boolean"
          },
          "isGifted": {
            "type": "boolean"
          },
          "giftCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "gifts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemGiftDto"
            }
          },
          "allowMultipleGifters": {
            "type": "boolean"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "addedById": {
            "type": [
              "null",
              "string"
            ]
          },
          "addedByName": {
            "type": [
              "null",
              "string"
            ]
          },
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "WishlistItemLinkDto": {
        "required": [
          "url",
          "label"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "label": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "WishlistOccasion": {
        "enum": [
          "Birthday",
          "Wedding",
          "Holiday",
          "BabyShower",
          "Graduation",
          "Housewarming",
          "Anniversary",
          "Other"
        ]
      },
      "WishlistPrivacy": {
        "enum": [
          "Public",
          "LinkOnly",
          "Private"
        ]
      }
    }
  },
  "tags": [
    {
      "name": "Tenant"
    },
    {
      "name": "Collaborators"
    },
    {
      "name": "Uploads"
    },
    {
      "name": "OgEndpoints"
    },
    {
      "name": "Sudachi.API"
    },
    {
      "name": "Auth"
    },
    {
      "name": "Wishlists"
    },
    {
      "name": "Public"
    }
  ]
}