General Present Tracker
General Present Tracker · GPT アクション
Christmas List API
A Christmas list management system enabling families to coordinate gift-giving through shared access.
GET /api/giftsList all gifts with optional family member filterList all gifts for all family members
POST /api/giftsCreate a new giftCreate a new gift entry for a family member (costs 1 credit)
POST /api/gifts/batchCreate multiple gifts in a single requestCreate multiple gifts in a single request (costs 1 credit)
PUT /api/gifts/batchUpdate multiple gifts in a single requestUpdate multiple gifts in a single request
GET /api/gifts/{gift_id}Retrieve a specific giftRetrieve a specific gift by its ID
PUT /api/gifts/{gift_id}Update a specific giftUpdate a specific gift
DELETE /api/gifts/{gift_id}Delete a specific giftDelete a specific gift
POST /api/gifts/promisePromise a giftPromise or unpromise a gift for purchase
POST /api/familiesCreate a new familyCreate a new family
PUT /api/familiesCreate a new invitation code for your familyCreate a new invitation code for your family
POST /api/families/joinJoin a family using an invitation codeJoin a family using an invitation code
GET /api/guest-docsGet OpenAPI documentation filtered for guest accessGET /api/families/currentGet information about the current user's familyGet information about the current user's family
元の API スキーマ
{
"servers": [
{
"url": "https://whattogive.snaggle.ai",
"description": "Production server"
}
],
"info": {
"description": "A Christmas list management system enabling families to coordinate gift-giving through shared access.",
"termsOfService": "http://example.com/terms/",
"contact": {
"name": "API Support",
"url": "http://www.example.com/support",
"email": "support@example.com"
},
"license": {
"name": "MIT",
"url": "https://opensource.org/licenses/MIT"
},
"title": "Christmas List API",
"version": "v1"
},
"security": [
{
"bearerAuth": []
}
],
"components": {
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "Oauth Access token obtained from oauth.snaggle.ai"
}
},
"schemas": {
"Error": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
},
"PaginationMetadata": {
"type": "object",
"properties": {
"total": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"first_page": {
"type": "integer"
},
"last_page": {
"type": "integer"
},
"page": {
"type": "integer"
},
"previous_page": {
"type": "integer"
},
"next_page": {
"type": "integer"
}
}
},
"Gift": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
},
"GiftInput": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for (use 'user' or 'current_user' for yourself)",
"example": "Charlie"
}
},
"required": [
"family_member",
"name"
]
},
"BatchGiftInput": {
"type": "object",
"properties": {
"gifts": {
"type": "array",
"description": "List of gifts to create",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for (use 'user' or 'current_user' for yourself)",
"example": "Charlie"
}
},
"required": [
"family_member",
"name"
]
}
}
},
"required": [
"gifts"
]
},
"BatchGiftUpdate": {
"type": "object",
"properties": {
"gifts": {
"type": "array",
"description": "Dictionary of gift IDs and their updated data",
"example": [
{
"1": {
"name": "New Name",
"description": "New Description",
"family_member": "Charlie"
}
}
],
"items": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for (use 'user' or 'current_user' for yourself)",
"example": "Charlie"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"required": [
"gifts"
]
},
"PromiseInput": {
"type": "object",
"properties": {
"gift_id": {
"type": "integer",
"description": "Gift ID",
"example": 1
},
"promiser_name": {
"type": "string",
"description": "Name of the person promising the gift",
"example": "Uncle Bob"
}
},
"required": [
"gift_id",
"promiser_name"
]
},
"FamilyCreate": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the family",
"example": "Smith Family"
}
},
"required": [
"name"
]
},
"InvitationCreate": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address for the invitation",
"example": "friend@example.com"
},
"expires_in_days": {
"type": "integer",
"default": 7,
"description": "Number of days until invitation expires",
"example": 7
},
"auto_create_list": {
"type": "boolean",
"default": false,
"description": "If true, creates a family member and gift list immediately. If false, waits until invitation is accepted.",
"example": false
},
"member_name": {
"type": "string",
"description": "Name of the family member (required if auto_create_list is true)",
"example": "John Smith"
},
"member_aliases": {
"type": "array",
"description": "List of aliases for the family member (optional, only used if auto_create_list is true)",
"example": [
"Johnny",
"JS"
],
"items": {
"type": "string"
}
}
},
"required": [
"email"
]
},
"JoinFamily": {
"type": "object",
"properties": {
"invitation_code": {
"type": "string",
"description": "Invitation code to join the family",
"example": "happy-penguin"
},
"email": {
"type": "string",
"description": "Email of the person joining",
"example": "john@example.com"
},
"name": {
"type": "string",
"description": "Name of the person joining",
"example": "John Smith"
}
},
"required": [
"email",
"invitation_code"
]
},
"FamilyInfo": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Family ID"
},
"name": {
"type": "string",
"description": "Name of the family"
},
"members": {
"type": "array",
"description": "List of family members with their details",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"aliases": {
"type": "object",
"description": "Dictionary of member aliases",
"additionalProperties": {
"type": "string"
}
},
"open_invitations": {
"type": "array",
"description": "List of open invitations",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"responses": {
"UNPROCESSABLE_ENTITY": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"DEFAULT_ERROR": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
}
},
"tags": [
{
"name": "api",
"description": "Christmas List Management Operations"
}
],
"paths": {
"/api/gifts": {
"get": {
"parameters": [
{
"in": "query",
"name": "family_member",
"description": "Filter gifts by family member (supports aliases, case insensitive)",
"schema": {
"type": "string",
"example": "Charlie"
},
"required": false
}
],
"responses": {
"200": {
"description": "Successfully retrieved list of gifts",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
}
},
"401": {
"description": "Authentication failed - API key missing or invalid"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"summary": "List all gifts with optional family member filter",
"description": "List all gifts for all family members",
"tags": [
"api"
],
"operationId": "listGifts"
},
"post": {
"responses": {
"201": {
"description": "Gift successfully created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"401": {
"description": "Authentication failed"
},
"402": {
"description": "Failed to charge credits or insufficient credits"
},
"403": {
"description": "Operation not allowed - Family members only"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for (use 'user' or 'current_user' for yourself)",
"example": "Charlie"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"summary": "Create a new gift",
"tags": [
"api"
],
"operationId": "createGift",
"description": "Create a new gift entry for a family member (costs 1 credit)",
"x-openai-isConsequential": false
}
},
"/api/gifts/batch": {
"post": {
"responses": {
"201": {
"description": "Gifts successfully created",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
}
},
"401": {
"description": "Authentication failed"
},
"402": {
"description": "Failed to charge credits or insufficient credits"
},
"403": {
"description": "Operation not allowed - Family members only"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"gifts": {
"type": "array",
"description": "List of gifts to create",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for (use 'user' or 'current_user' for yourself)",
"example": "Charlie"
}
},
"required": [
"family_member",
"name"
]
}
}
},
"required": [
"gifts"
]
}
}
}
},
"summary": "Create multiple gifts in a single request",
"tags": [
"api"
],
"operationId": "createBatchGifts",
"description": "Create multiple gifts in a single request (costs 1 credit)",
"x-openai-isConsequential": false
},
"put": {
"responses": {
"200": {
"description": "Gifts successfully updated",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
}
},
"400": {
"description": "Invalid request - Empty gift list or validation error"
},
"401": {
"description": "Authentication failed - API key missing or invalid"
},
"403": {
"description": "Operation not allowed - Family members only"
},
"404": {
"description": "One or more gifts not found"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"gifts": {
"type": "array",
"description": "Dictionary of gift IDs and their updated data",
"example": [
{
"1": {
"name": "New Name",
"description": "New Description",
"family_member": "Charlie"
}
}
],
"items": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for (use 'user' or 'current_user' for yourself)",
"example": "Charlie"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"required": [
"gifts"
]
}
}
}
},
"summary": "Update multiple gifts in a single request",
"tags": [
"api"
],
"operationId": "updateBatchGifts",
"description": "Update multiple gifts in a single request",
"x-openai-isConsequential": false
}
},
"/api/gifts/{gift_id}": {
"get": {
"responses": {
"200": {
"description": "Gift successfully retrieved",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"401": {
"description": "Authentication failed - API key missing or invalid"
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"summary": "Retrieve a specific gift",
"tags": [
"api"
],
"operationId": "getGift",
"description": "Retrieve a specific gift by its ID",
"parameters": [
{
"in": "path",
"name": "gift_id",
"required": true,
"schema": {
"type": "integer",
"minimum": 0
}
}
]
},
"put": {
"responses": {
"200": {
"description": "Gift successfully updated",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"401": {
"description": "Authentication failed - API key missing or invalid"
},
"403": {
"description": "Operation not allowed - Family members only"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for (use 'user' or 'current_user' for yourself)",
"example": "Charlie"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"summary": "Update a specific gift",
"tags": [
"api"
],
"operationId": "updateGift",
"description": "Update a specific gift",
"parameters": [
{
"in": "path",
"name": "gift_id",
"required": true,
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"x-openai-isConsequential": false
},
"delete": {
"responses": {
"200": {
"description": "Gift successfully deleted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"401": {
"description": "Authentication failed - API key missing or invalid"
},
"403": {
"description": "Operation not allowed - Family members only"
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"summary": "Delete a specific gift",
"tags": [
"api"
],
"operationId": "deleteGift",
"description": "Delete a specific gift",
"parameters": [
{
"in": "path",
"name": "gift_id",
"required": true,
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"x-openai-isConsequential": true
}
},
"/api/gifts/promise": {
"post": {
"responses": {
"200": {
"description": "Gift promise status successfully updated",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"400": {
"description": "Gift already promised by someone else"
},
"401": {
"description": "Authentication failed - API key missing or invalid"
},
"404": {
"description": "Gift not found"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"gift_id": {
"type": "integer",
"description": "Gift ID",
"example": 1
},
"promiser_name": {
"type": "string",
"description": "Name of the person promising the gift",
"example": "Uncle Bob"
}
},
"required": [
"gift_id",
"promiser_name"
]
}
}
}
},
"summary": "Promise a gift",
"tags": [
"api"
],
"operationId": "promiseGift",
"description": "Promise or unpromise a gift for purchase",
"x-openai-isConsequential": false
}
},
"/api/families": {
"post": {
"responses": {
"201": {
"description": "Family successfully created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"400": {
"description": "User already belongs to a family"
},
"401": {
"description": "Authentication failed"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the family",
"example": "Smith Family"
}
},
"required": [
"name"
]
}
}
}
},
"summary": "Create a new family",
"tags": [
"api"
],
"operationId": "createFamily",
"description": "Create a new family",
"x-openai-isConsequential": false
},
"put": {
"responses": {
"201": {
"description": "Invitation code successfully created"
},
"400": {
"description": "Invalid request parameters"
},
"401": {
"description": "Authentication failed"
},
"403": {
"description": "User is not a family admin"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address for the invitation",
"example": "friend@example.com"
},
"expires_in_days": {
"type": "integer",
"default": 7,
"description": "Number of days until invitation expires",
"example": 7
},
"auto_create_list": {
"type": "boolean",
"default": false,
"description": "If true, creates a family member and gift list immediately. If false, waits until invitation is accepted.",
"example": false
},
"member_name": {
"type": "string",
"description": "Name of the family member (required if auto_create_list is true)",
"example": "John Smith"
},
"member_aliases": {
"type": "array",
"description": "List of aliases for the family member (optional, only used if auto_create_list is true)",
"example": [
"Johnny",
"JS"
],
"items": {
"type": "string"
}
}
},
"required": [
"email"
]
}
}
}
},
"summary": "Create a new invitation code for your family",
"tags": [
"api"
],
"operationId": "createInvitation",
"description": "Create a new invitation code for your family",
"x-openai-isConsequential": false
}
},
"/api/families/join": {
"post": {
"responses": {
"200": {
"description": "Successfully joined family",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Unique identifier for the gift",
"example": 1
},
"name": {
"type": "string",
"description": "Name of the gift item",
"example": "PlayStation 5"
},
"description": {
"type": "string",
"description": "Detailed description of the gift",
"example": "Digital Edition gaming console with one controller"
},
"image_url": {
"type": "string",
"description": "URL to an image of the gift",
"example": "https://example.com/images/ps5.jpg"
},
"purchase_link": {
"type": "string",
"description": "URL where the gift can be purchased",
"example": "https://store.example.com/products/ps5"
},
"family_member": {
"type": "string",
"description": "Family member this gift is for",
"example": "Charlie"
},
"promised": {
"type": "boolean",
"description": "Whether the gift has been promised by someone",
"example": false
},
"promiser_name": {
"type": "string",
"description": "Name of the person who promised the gift",
"example": "Uncle Bob"
}
},
"required": [
"family_member",
"name"
]
}
}
}
},
"400": {
"description": "Invalid invitation code or email"
},
"401": {
"description": "Authentication failed"
},
"404": {
"description": "Invitation code not found"
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"invitation_code": {
"type": "string",
"description": "Invitation code to join the family",
"example": "happy-penguin"
},
"email": {
"type": "string",
"description": "Email of the person joining",
"example": "john@example.com"
},
"name": {
"type": "string",
"description": "Name of the person joining",
"example": "John Smith"
}
},
"required": [
"email",
"invitation_code"
]
}
}
}
},
"summary": "Join a family using an invitation code",
"tags": [
"api"
],
"operationId": "joinFamily",
"description": "Join a family using an invitation code",
"x-openai-isConsequential": false
}
},
"/api/guest-docs": {
"get": {
"responses": {
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"summary": "Get OpenAPI documentation filtered for guest access",
"tags": [
"api"
],
"operationId": "get_api_guest_docs_434bc669"
}
},
"/api/families/current": {
"get": {
"responses": {
"200": {
"description": "Successfully retrieved family information",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"readOnly": true,
"description": "Family ID"
},
"name": {
"type": "string",
"description": "Name of the family"
},
"members": {
"type": "array",
"description": "List of family members with their details",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"aliases": {
"type": "object",
"description": "Dictionary of member aliases",
"additionalProperties": {
"type": "string"
}
},
"open_invitations": {
"type": "array",
"description": "List of open invitations",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
}
}
},
"401": {
"description": "Authentication required"
},
"404": {
"description": "User does not belong to a family"
},
"default": {
"description": "Default error response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "Error code"
},
"status": {
"type": "string",
"description": "Error name"
},
"message": {
"type": "string",
"description": "Error message"
},
"errors": {
"type": "object",
"description": "Errors",
"additionalProperties": {}
}
}
}
}
}
}
},
"summary": "Get information about the current user's family",
"tags": [
"api"
],
"operationId": "getCurrentFamily",
"description": "Get information about the current user's family"
}
}
},
"openapi": "3.1.0"
}